]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Release v0.2.8
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
7 * Bootstrap v3.2.0 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}</style>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head>
117 <body>
118 <div class="container">
119
120 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.2.8</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
127 <div class="form-group">
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
130 <p>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>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
137 <div class="form-group generate-container">
138 <label class="col-sm-2 control-label"></label>
139 <div class="col-sm-10">
140 <div class="form-inline">
141 <div class="input-group-inline">
142 <span>Generate a random mnemonic, or enter your own below</span>:
143 <button class="btn generate">Generate</button>
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
154 <span>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label">Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes">Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label">Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts either binary, base 6, 6-sided dice, base 10, hexadecimal or cards"></textarea>
171 <div class="row filter-warning text-danger hidden">
172 <p class="col-sm-12">
173 <strong>
174 Some characters have been discarded
175 </strong>
176 </p>
177 </div>
178 <div class="row">
179 <label class="col-sm-3 control-label"><span class="more-info" title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
180 <div class="crack-time col-sm-3 form-control-static"></div>
181 <label class="col-sm-3 control-label">Event Count</label>
182 <div class="event-count col-sm-3 form-control-static"></div>
183 </div>
184 <div class="row">
185 <label class="col-sm-3 control-label">Entropy Type</label>
186 <div class="type col-sm-3 form-control-static"></div>
187 <label class="col-sm-3 control-label">Bits Per Event</label>
188 <div class="bits-per-event col-sm-3 form-control-static"></div>
189 </div>
190 <div class="row">
191 <label class="col-sm-3 control-label">Raw Entropy Words</label>
192 <div class="word-count col-sm-3 form-control-static"></div>
193 <label class="col-sm-3 control-label"><span class="more-info" title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
194 <div class="bits col-sm-3 form-control-static"></div>
195 </div>
196 <label class="col-sm-3 control-label">Filtered Entropy</label>
197 <div class="filtered col-sm-9 form-control-static"></div>
198 <label class="col-sm-3 control-label">Raw Binary</label>
199 <div class="binary col-sm-9 form-control-static"></div>
200 <label class="col-sm-3 control-label">Mnemonic Length</label>
201 <div class="col-sm-9">
202 <select class="mnemonic-length form-control">
203 <option value="raw" selected>Use Raw Entropy (3 words per 32 bits)</option>
204 <option value="12">12 <span>Words</span></option>
205 <option value="15">15 <span>Words</option>
206 <option value="18">18 <span>Words</span></option>
207 <option value="21">21 <span>Words</span></option>
208 <option value="24">24 <span>Words</span></option>
209 </select>
210 </div>
211 </div>
212 <div class="col-sm-3">
213 <p>Valid entropy values include:</p>
214 <ul>
215 <li><strong>Binary</strong> [0-1]<br>101010011</li>
216 <li><strong>Base 6</strong> [0-5]<br>123434014</li>
217 <li><strong>Dice</strong> [1-6]<br>62535634</li>
218 <li><strong>Base 10</strong> [0-9]<br>90834528</li>
219 <li><strong>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
220 <li><strong>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
221 </ul>
222 </div>
223 </div>
224 </div>
225 <div class="form-group">
226 <div class="col-sm-2"></div>
227 <div class="col-sm-10 checkbox">
228 <label>
229 <input type="checkbox" class="use-entropy">
230 <span>Supply my own source of entropy</span>
231 </label>
232 </div>
233 </div>
234 <div class="form-group">
235 <label class="col-sm-2 control-label">Mnemonic Language</label>
236 <div class="col-sm-10 languages">
237 <div class="form-control no-border">
238 <a href="#english">English</a>
239 <a href="#japanese" title="Japanese">日本語</a>
240 <a href="#spanish" title="Spanish">Español</a>
241 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
242 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
243 <a href="#french" title="French">Français</a>
244 <a href="#italian" title="Italian">Italiano</a>
245 </div>
246 </div>
247 </div>
248 <div class="form-group">
249 <label for="phrase" class="col-sm-2 control-label">BIP39 Mnemonic</label>
250 <div class="col-sm-10">
251 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
252 </div>
253 </div>
254 <div class="form-group">
255 <label for="passphrase" class="col-sm-2 control-label">BIP39 Passphrase (optional)</label>
256 <div class="col-sm-10">
257 <textarea id="passphrase" class="passphrase form-control"></textarea>
258 </div>
259 </div>
260 <div class="form-group">
261 <label for="seed" class="col-sm-2 control-label">BIP39 Seed</label>
262 <div class="col-sm-10">
263 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
264 </div>
265 </div>
266 <div class="form-group">
267 <label for="network-phrase" class="col-sm-2 control-label">Coin</label>
268 <div class="col-sm-10">
269 <select id="network-phrase" class="network form-control">
270 <!-- populated by javascript -->
271 </select>
272 </div>
273 </div>
274 <div class="form-group">
275 <label for="root-key" class="col-sm-2 control-label">BIP32 Root Key</label>
276 <div class="col-sm-10">
277 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
278 </div>
279 </div>
280 <div class="form-group litecoin-ltub-container hidden">
281 <label for="litecoin-use-ltub" class="col-sm-2 control-label">Prefixes</label>
282 <div class="col-sm-10 checkbox">
283 <label>
284 <input type="checkbox" id="litecoin-use-ltub" class="litecoin-use-ltub">
285 Use <code>Ltpv / Ltub</code> instead of <code>xprv / xpub</code>
286 </label>
287 </div>
288 </div>
289 </form>
290 </div>
291 </div>
292
293 <hr>
294
295 <div class="row">
296 <div class="col-md-12">
297 <h2>Derivation Path</h2>
298 <ul class="derivation-type nav nav-tabs" role="tablist">
299 <li id="bip32-tab">
300 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
301 </li>
302 <li id="bip44-tab" class="active">
303 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
304 </li>
305 <li id="bip49-tab">
306 <a href="#bip49" role="tab" data-toggle="tab">BIP49</a>
307 </li>
308 </ul>
309 <div class="derivation-type tab-content">
310 <div id="bip44" class="tab-pane active">
311 <form class="form-horizontal" role="form">
312 <br>
313 <div class="col-sm-2"></div>
314 <div class="col-sm-10">
315 <p>
316 For more info see the
317 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
318 </p>
319 </div>
320 <div class="form-group">
321 <label for="purpose" class="col-sm-2 control-label">
322 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank">Purpose</a>
323 </label>
324 <div class="col-sm-10">
325 <input id="purpose" type="text" class="purpose form-control" value="44" readonly>
326 </div>
327 </div>
328 <div class="form-group">
329 <label for="coin" class="col-sm-2 control-label">
330 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank">Coin</a>
331 </label>
332 <div class="col-sm-10">
333 <input id="coin" type="text" class="coin form-control" value="0" readonly>
334 </div>
335 </div>
336 <div class="form-group">
337 <label for="account" class="col-sm-2 control-label">
338 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank">Account</a>
339 </label>
340 <div class="col-sm-10">
341 <input id="account" type="text" class="account form-control" value="0">
342 </div>
343 </div>
344 <div class="form-group">
345 <label for="change" class="col-sm-2 control-label">
346 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank">External / Internal</a>
347 </label>
348 <div class="col-sm-10">
349 <input id="change" type="text" class="change form-control" value="0">
350 </div>
351 </div>
352 <div class="form-group">
353 <label class="col-sm-2 control-label">
354 </label>
355 <div class="col-sm-10">
356 <p>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
357 </div>
358 </div>
359 <div class="form-group">
360 <label for="account-xprv" class="col-sm-2 control-label">
361 <span>Account Extended Private Key</span>
362 </label>
363 <div class="col-sm-10">
364 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
365 </div>
366 </div>
367 <div class="form-group">
368 <label for="account-xpub" class="col-sm-2 control-label">
369 <span>Account Extended Public Key</span>
370 </label>
371 <div class="col-sm-10">
372 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
373 </div>
374 </div>
375 <div class="form-group">
376 <label class="col-sm-2 control-label">
377 </label>
378 <div class="col-sm-10">
379 <p>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
380 </div>
381 </div>
382 <div class="form-group">
383 <label for="bip44-path" class="col-sm-2 control-label">BIP32 Derivation Path</label>
384 <div class="col-sm-10">
385 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
386 </div>
387 </div>
388 </form>
389 </div>
390 <div id="bip32" class="tab-pane">
391 <form class="form-horizontal" role="form">
392 <br>
393 <div class="col-sm-2"></div>
394 <div class="col-sm-10">
395 <p>
396 For more info see the
397 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
398 </p>
399 </div>
400 <div class="form-group">
401 <label for="bip32-client" class="col-sm-2 control-label">Client</label>
402 <div class="col-sm-10">
403 <select id="bip32-client" class="client form-control">
404 <option value="custom">Custom derivation path</option>
405 <!-- populated by javascript -->
406 </select>
407 </div>
408 </div>
409 <div class="form-group">
410 <label for="bip32-path" class="col-sm-2 control-label">BIP32 Derivation Path</label>
411 <div class="col-sm-10">
412 <input id="bip32-path" type="text" class="path form-control" value="m/0">
413 </div>
414 </div>
415 <div class="form-group">
416 <div class="col-sm-2"></div>
417 <label class="col-sm-10">
418 <input class="hardened-addresses" type="checkbox">
419 <span>Use hardened addresses</span>
420 </label>
421 </div>
422 <div class="form-group">
423 <div class="col-sm-2"></div>
424 <label class="col-sm-10">
425 <input class="p2wpkh-nested-in-p2sh" type="checkbox">
426 <span>Use SegWit addresses (ie P2WPKH Nested In P2SH)</span>
427 </label>
428 </div>
429 <div class="form-group">
430 <label for="core-path" class="col-sm-2 control-label">Bitcoin Core</label>
431 <div class="col-sm-10">
432 <p class="form-control no-border">
433 Use path <code>m/0'/0'</code> with hardened addresses.
434 </p>
435 <p class="form-control no-border">
436 For more info see the
437 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
438 </p>
439 </div>
440 </div>
441 <div class="form-group">
442 <label for="core-path" class="col-sm-2 control-label">Multibit</label>
443 <div class="col-sm-10">
444 <p class="form-control no-border">
445 <span>Use path <code>m/0'/0</code>.</span>
446 </p>
447 <p class="form-control no-border">
448 <span>For more info see</span>
449 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
450 </p>
451 </div>
452 </div>
453 <div class="form-group">
454 <label class="col-sm-2 control-label">Block Explorers</label>
455 <div class="col-sm-10">
456 <p class="form-control no-border">
457 <span>Use path <code>m/44'/0'/0'</code>.</span>
458 <span>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
459 </p>
460 <p class="form-control no-border">
461 <span>Can be used with</span>:
462 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
463 </p>
464 </div>
465 </div>
466 </form>
467 </div>
468 <div id="bip49" class="tab-pane">
469 <form class="form-horizontal" role="form">
470 <br>
471 <div class="unavailable hidden">
472 <div class="form-group">
473 <div class="col-sm-2"></div>
474 <div class="col-sm-10">
475 <p>BIP49 is unavailable for this coin.</p>
476 </div>
477 </div>
478 </div>
479 <div class="available">
480 <div class="col-sm-2"></div>
481 <div class="col-sm-10">
482 <p>
483 For more info see the
484 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">BIP49 spec</a>.
485 </p>
486 </div>
487 <div class="form-group">
488 <label for="purpose" class="col-sm-2 control-label">
489 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank">Purpose</a>
490 </label>
491 <div class="col-sm-10">
492 <input id="purpose" type="text" class="purpose form-control" value="49" readonly>
493 </div>
494 </div>
495 <div class="form-group">
496 <label for="coin" class="col-sm-2 control-label">
497 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank">Coin</a>
498 </label>
499 <div class="col-sm-10">
500 <input id="coin" type="text" class="coin form-control" value="0" readonly>
501 </div>
502 </div>
503 <div class="form-group">
504 <label for="account" class="col-sm-2 control-label">
505 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank">Account</a>
506 </label>
507 <div class="col-sm-10">
508 <input id="account" type="text" class="account form-control" value="0">
509 </div>
510 </div>
511 <div class="form-group">
512 <label for="change" class="col-sm-2 control-label">
513 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank">External / Internal</a>
514 </label>
515 <div class="col-sm-10">
516 <input id="change" type="text" class="change form-control" value="0">
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>The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
524 </div>
525 </div>
526 <div class="form-group">
527 <label for="account-xprv" class="col-sm-2 control-label">
528 <span>Account Extended Private Key</span>
529 </label>
530 <div class="col-sm-10">
531 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
532 </div>
533 </div>
534 <div class="form-group">
535 <label for="account-xpub" class="col-sm-2 control-label">
536 <span>Account Extended Public Key</span>
537 </label>
538 <div class="col-sm-10">
539 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
540 </div>
541 </div>
542 <div class="form-group">
543 <label class="col-sm-2 control-label">
544 </label>
545 <div class="col-sm-10">
546 <p>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
547 </div>
548 </div>
549 <div class="form-group">
550 <label for="bip49-path" class="col-sm-2 control-label">BIP32 Derivation Path</label>
551 <div class="col-sm-10">
552 <input id="bip49-path" type="text" class="path form-control" value="m/49'/0'/0'/0" readonly="readonly">
553 </div>
554 </div>
555 </div>
556 </form>
557 </div>
558 </div>
559 <form class="form-horizontal" role="form">
560 <div class="form-group">
561 <label for="extended-priv-key" class="col-sm-2 control-label">BIP32 Extended Private Key</label>
562 <div class="col-sm-10">
563 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
564 </div>
565 </div>
566 <div class="form-group">
567 <label for="extended-pub-key" class="col-sm-2 control-label">BIP32 Extended Public Key</label>
568 <div class="col-sm-10">
569 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
570 </div>
571 </div>
572 </form>
573 </div>
574 </div>
575
576 <hr>
577
578 <div class="row">
579 <div class="col-md-12">
580 <h2>Derived Addresses</h2>
581 <p>Note these addreses are derived from the BIP32 Extended Key</p>
582 </div>
583 <div class="col-md-12 use-bitpay-addresses-container hidden">
584 <div class="checkbox">
585 <label>
586 <input type="checkbox" class="use-bitpay-addresses">
587 <span>Use BitPay-style addresses for Bitcoin Cash (ie starting with 'C' instead of '1')</span>
588 </label>
589 </div>
590 </div>
591 <div class="col-md-12">
592 <table class="table table-striped">
593 <thead>
594 <th>
595 <div class="input-group">
596 <span>Path</span>&nbsp;&nbsp;
597 <button class="index-toggle">Toggle</button>
598 </div>
599 </th>
600 <th>
601 <div class="input-group">
602 <span>Address</span>&nbsp;&nbsp;
603 <button class="address-toggle">Toggle</button>
604 </div>
605 </th>
606 <th>
607 <div class="input-group">
608 <span>Public Key</span>&nbsp;&nbsp;
609 <button class="public-key-toggle">Toggle</button>
610 </div>
611 </th>
612 <th>
613 <div class="input-group">
614 <span>Private Key</span>&nbsp;&nbsp;
615 <button class="private-key-toggle">Toggle</button>
616 </div>
617 </th>
618 </thead>
619 <tbody class="addresses monospace">
620 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
621 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
622 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
623 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
624 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
625 </tbody>
626 </table>
627 </div>
628 </div>
629 <span>Show more rows</span>:
630 <input type="number" class="rows-to-add" value="20">
631 <button class="more">Show</button>
632
633 <hr>
634
635 <div class="row">
636 <div class="col-md-12">
637 <h2>More info</h2>
638 <h3>BIP39 <span class="small">Mnemonic code for generating deterministic keys</span></h3>
639 <p>
640 Read more at the
641 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
642 </p>
643 <h3>BIP32 <span class="small">Hierarchical Deterministic Wallets</span></h3>
644 <p>
645 Read more at the
646 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
647 </p>
648 <p>
649 See the demo at
650 <a href="http://bip32.org/" target="_blank">bip32.org</a>
651 </p>
652 <h3>BIP44 <span class="small">Multi-Account Hierarchy for Deterministic Wallets</span></h3>
653 <p>
654 Read more at the
655 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
656 </p>
657 <h3>BIP49 <span class="small">Derivation scheme for P2WPKH-nested-in-P2SH based accounts</span></h3>
658 <p>
659 Read more at the
660 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">official BIP49 spec</a>
661 </p>
662 <h3>Private Keys</h3>
663 <p>
664 <span>
665 Use private keys at
666 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
667 </span>
668 <span>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
669 </p>
670 <h3 id="entropy-notes">Entropy</h3>
671 <p>
672 <span>
673 Entropy values must be sourced from a
674 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
675 </span>
676 <span>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
677 <span>
678 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
679 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
680 random enough for the needs of this tool.
681 </span>
682 </p>
683 <p>
684 <strong><span>Do not store entropy.</span></strong>
685 </p>
686 <p>
687 <span>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
688 <span>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
689 <span><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
690 </p>
691 <p>
692 <span>
693 The random mnemonic generator on this page uses a
694 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
695 </span>
696 <span>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
697 <span>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
698 <span>In that case you might choose to use your own source of entropy.</span>
699 </p>
700 <p>
701 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank">You are not a good source of entropy.</a>
702 </p>
703 <h3>License</h3>
704 <p>
705 <span>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
706 </span>
707 </p>
708 <p>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>
709 </div>
710 </div>
711
712 <hr>
713
714 <div class="row">
715 <div class="col-md-12">
716 <h2>Alternative Tools</h2>
717 <p>This tool is interoperable with any BIP39 wallet.</p>
718 <p>Some similar tools to this one (ie not consumer wallets) are</p>
719 <p>
720 <a href="https://bip32jp.github.io/english/">
721 https://bip32jp.github.io/english/
722 </a>
723 </p>
724 </div>
725 </div>
726
727 <hr>
728
729 <div class="row">
730 <div class="col-md-12">
731
732 <h2>Offline Usage</h2>
733
734 <p>
735 You can use this tool without having to be online.
736 </p>
737 <p>
738 In your browser, select file save-as, and save this page
739 as a file.
740 </p>
741 <p>
742 Double-click that file to open it in a browser
743 on any offline computer.
744 </p>
745 <p>
746 <span>Alternatively, download the file from the repository</span>
747 -
748 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
749 </p>
750
751 </div>
752 </div>
753
754 <hr>
755
756 <div class="row">
757 <div class="col-md-12">
758
759 <h2>This project is 100% open-source code</h2>
760
761 <p>
762 <span>Get the source code from the repository</span>
763 -
764 <a href="https://github.com/iancoleman/bip39" target="_blank">
765 https://github.com/iancoleman/bip39
766 </a>
767 </p>
768
769 <h3>Libraries</h3>
770
771 <p>
772 <span>BitcoinJS - </span>
773 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
774 https://github.com/bitcoinjs/bitcoinjs-lib
775 </a>
776 </p>
777
778 <p>
779 <span>jsBIP39 - </span>
780 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
781 https://github.com/iancoleman/jsbip39
782 </a>
783 </p>
784
785 <p>
786 <span>sjcl - </span>
787 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
788 https://github.com/bitwiseshiftleft/sjcl
789 </a>
790 </p>
791
792 <p>
793 <span>jQuery - </span>
794 <a href="https://jquery.com/" target="_blank">
795 https://jquery.com/
796 </a>
797 </p>
798
799 <p>
800 <span>Twitter Bootstrap - </span>
801 <a href="http://getbootstrap.com/" target="_blank">
802 http://getbootstrap.com/
803 </a>
804 </p>
805
806 </div>
807 </div>
808
809 </div>
810
811 <div class="qr-container hidden">
812 <div class="qr-hint bg-primary hidden">Click field to hide QR</div>
813 <div class="qr-hint bg-primary">Click field to show QR</div>
814 <div class="qr-hider hidden">
815 <div class="qr-image"></div>
816 <div class="qr-warning bg-primary">Caution: Scanner may keep history</div>
817 </div>
818 </div>
819
820 <div class="feedback-container">
821 <div class="feedback">Loading...</div>
822 </div>
823
824 <script type="text/template" id="address-row-template">
825 <tr>
826 <td class="index"><span></span></td>
827 <td class="address"><span data-show-qr></span></td>
828 <td class="pubkey"><span data-show-qr></span></td>
829 <td class="privkey"><span data-show-qr></span></td>
830 </tr>
831 </script>
832 <script>// From
833 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
834 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
835 // but is not required in any modern browsers.
836 // For more information, see
837 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
838
839 //----------------------------------------------------------------------
840 //
841 // ECMAScript 2015 Polyfills
842 //
843 //----------------------------------------------------------------------
844
845 (function (global) {
846 "use strict";
847
848 // Set this to always override native implementations, for testing
849 // the polyfill in browsers with partial/full ES2015 support.
850 var OVERRIDE_NATIVE_FOR_TESTING = false;
851
852 var undefined = (void 0); // Paranoia
853
854 // Helpers
855
856 function strict(o) {
857 return o === global ? undefined : o;
858 }
859
860 function hook(o, p, f) {
861 var op = o[p];
862 console.assert(typeof op === 'function', 'Hooking a non-function');
863 o[p] = function() {
864 var o = strict(this);
865 var r = f.apply(o, arguments);
866 return r !== undefined ? r : op.apply(o, arguments);
867 };
868 }
869
870 function isSymbol(s) {
871 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
872 }
873
874 function getPropertyDescriptor(target, name) {
875 var desc = Object.getOwnPropertyDescriptor(target, name);
876 var proto = Object.getPrototypeOf(target);
877 while (!desc && proto) {
878 desc = Object.getOwnPropertyDescriptor(proto, name);
879 proto = Object.getPrototypeOf(proto);
880 }
881 return desc;
882 }
883
884 var enqueue = (function(nativePromise, nativeSetImmediate) {
885 if (nativePromise)
886 return function(job) { nativePromise.resolve().then(function() { job(); }); };
887 if (nativeSetImmediate)
888 return function(job) { nativeSetImmediate(job); };
889 return function(job) { setTimeout(job, 0); };
890 }(global['Promise'], global['setImmediate']));
891
892 function define(o, p, v, override) {
893 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
894 return;
895
896 if (typeof v === 'function') {
897 // Sanity check that functions are appropriately named (where possible)
898 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
899 Object.defineProperty(o, p, {
900 value: v,
901 configurable: true,
902 enumerable: false,
903 writable: true
904 });
905 } else {
906 Object.defineProperty(o, p, {
907 value: v,
908 configurable: false,
909 enumerable: false,
910 writable: false
911 });
912 }
913 }
914
915 function set_internal(o, p, v) {
916 Object.defineProperty(o, p, {
917 value: v,
918 configurable: false,
919 enumerable: false,
920 writable: true
921 });
922 }
923
924 // Snapshot intrinsic functions
925 var $isNaN = global.isNaN,
926 $parseInt = global.parseInt,
927 $parseFloat = global.parseFloat;
928
929 var E = Math.E,
930 LOG10E = Math.LOG10E,
931 LOG2E = Math.LOG2E,
932 abs = Math.abs,
933 ceil = Math.ceil,
934 exp = Math.exp,
935 floor = Math.floor,
936 log = Math.log,
937 max = Math.max,
938 min = Math.min,
939 pow = Math.pow,
940 random = Math.random,
941 sqrt = Math.sqrt;
942
943 var orig_match = String.prototype.match,
944 orig_replace = String.prototype.replace,
945 orig_search = String.prototype.search,
946 orig_split = String.prototype.split;
947
948 // These are used for implementing the polyfills, but not exported.
949
950 // Inspired by https://gist.github.com/1638059
951 /** @constructor */
952 function EphemeronTable() {
953 var secretKey = ObjectCreate(null);
954
955 function conceal(o) {
956 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
957 Object.defineProperty(o, 'valueOf', {
958 value: (function(secretKey) {
959 return function (k) {
960 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
961 };
962 }(secretKey)),
963 configurable: true,
964 writeable: true,
965 enumerable: false
966 });
967 return secrets;
968 }
969
970 function reveal(o) {
971 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
972 return v === o ? null : v;
973 }
974
975 return {
976 clear: function() {
977 secretKey = ObjectCreate(null);
978 },
979 remove: function(key) {
980 var secrets = reveal(key);
981 if (secrets && HasOwnProperty(secrets, 'value')) {
982 delete secrets.value;
983 return true;
984 }
985 return false;
986 },
987 get: function(key, defaultValue) {
988 var secrets = reveal(key);
989 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
990 },
991 has: function(key) {
992 var secrets = reveal(key);
993 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
994 },
995 set: function(key, value) {
996 var secrets = reveal(key) || conceal(key);
997 secrets.value = value;
998 }
999 };
1000 }
1001
1002 var empty = Object.create(null);
1003
1004 //----------------------------------------------------------------------
1005 //
1006 // ECMAScript 2015
1007 // http://www.ecma-international.org/ecma-262/6.0/
1008 //
1009 //----------------------------------------------------------------------
1010
1011 // ---------------------------------------
1012 // 19.4 Symbol Objects
1013 // ---------------------------------------
1014
1015 // NOTE: Symbols are defined here - out of spec order - since we need the
1016 // properties and prototype to be populated for other polyfills.
1017
1018 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
1019
1020 var symbolForKey;
1021 (function() {
1022 var secret = Object.create(null);
1023 var symbolMap = {};
1024 symbolForKey = function(k) {
1025 return symbolMap[k];
1026 };
1027
1028 var GlobalSymbolRegistry = [];
1029
1030 function unique(bits) {
1031 return Array(bits + 1).join('x').replace(/x/g, function() {
1032 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
1033 });
1034 }
1035
1036 // 19.4.1 The Symbol Constructor
1037 // 19.4.1.1 Symbol ( description=undefined )
1038 function Symbol(description) {
1039 if (!(this instanceof Symbol)) return new Symbol(description, secret);
1040 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
1041
1042 var descString = description === undefined ? undefined : String(description);
1043
1044 set_internal(this, '[[SymbolData]]', unique(128));
1045 set_internal(this, '[[Description]]', descString);
1046
1047 symbolMap[this] = this;
1048 return this;
1049 }
1050
1051 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1052 global.Symbol = Symbol;
1053
1054 // 19.4.2 Properties of the Symbol Constructor
1055
1056 // 19.4.2.1 Symbol.for (key)
1057 define(Symbol, 'for', function for_(key) {
1058 var stringKey = String(key);
1059 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1060 var e = GlobalSymbolRegistry[i];
1061 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1062 }
1063 var newSymbol = Symbol(key);
1064 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1065 return newSymbol;
1066 });
1067
1068 // 19.4.2.2 Symbol.hasInstance
1069 // 19.4.2.3 Symbol.isConcatSpreadable
1070
1071 // 19.4.2.4 Symbol.iterator
1072 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1073
1074 // 19.4.2.5 Symbol.keyFor (sym)
1075 define(Symbol, 'keyFor', function keyFor(sym) {
1076 if (!(sym instanceof Symbol)) throw TypeError();
1077 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1078 var e = GlobalSymbolRegistry[i];
1079 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1080 }
1081 return undefined;
1082 });
1083
1084 // 19.4.2.6 Symbol.match
1085 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1086
1087 // 19.4.2.7 Symbol.prototype
1088
1089 // 19.4.2.8 Symbol.replace
1090 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1091
1092 // 19.4.2.9 Symbol.search
1093 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1094
1095 // 19.4.2.10 Symbol.species
1096
1097 // 19.4.2.11 Symbol.search
1098 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1099
1100 // 19.4.2.12 Symbol.toPrimitive
1101
1102 // 19.4.2.13 Symbol.toStringTag
1103 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1104
1105 // 19.4.2.14 Symbol.unscopables
1106
1107 // 19.4.3 Properties of the Symbol Prototype Object
1108 // 19.4.3.1 Symbol.prototype.constructor
1109
1110 // 19.4.3.2 Symbol.prototype.toString ( )
1111 Object.defineProperty(Symbol.prototype, 'toString', {
1112 value: function toString() {
1113 var s = strict(this);
1114 var desc = s['[[Description]]'];
1115 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1116 },
1117 configurable: true, writeable: true, enumerable: false });
1118
1119 // 19.4.3.3 Symbol.prototype.valueOf ( )
1120 Object.defineProperty(Symbol.prototype, 'valueOf', {
1121 value: function valueOf() {
1122 // To prevent automatic string conversion:
1123 throw TypeError();
1124
1125 // Spec has approximately the following:
1126 //var s = strict(this);
1127 //if (Type(s) === 'symbol') return s;
1128 //if (Type(s) !== 'object') throw TypeError();
1129 //if (!('[[SymbolData]]' in s)) throw TypeError();
1130 //return s['[[SymbolData]]'];
1131 },
1132 configurable: true, writeable: true, enumerable: false });
1133
1134 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1135 // (Done later to polyfill partial implementations)
1136
1137 // 19.4.4 Properties of Symbol Instances
1138 }());
1139
1140 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1141
1142 // Defined here so that other prototypes can reference it
1143 // 25.1.2 The %IteratorPrototype% Object
1144 var $IteratorPrototype$ = {};
1145
1146 //----------------------------------------
1147 // 6 ECMAScript Data Types and Values
1148 //----------------------------------------
1149
1150 // 6.1 ECMAScript Language Types
1151
1152 // "Type(x)" is used as shorthand for "the type of x"...
1153 function Type(v) {
1154 switch (typeof v) {
1155 case 'undefined': return 'undefined';
1156 case 'boolean': return 'boolean';
1157 case 'number': return 'number';
1158 case 'string': return 'string';
1159 case 'symbol': return 'symbol';
1160 default:
1161 if (v === null) return 'null';
1162 if (v instanceof global.Symbol) return 'symbol';
1163 return 'object';
1164 }
1165 }
1166
1167 // 6.1.5.1 Well-Known Symbols
1168 var $$iterator = global.Symbol.iterator,
1169 $$match = global.Symbol.match,
1170 $$replace = global.Symbol.replace,
1171 $$search = global.Symbol.search,
1172 $$split = global.Symbol.split,
1173 $$toStringTag = global.Symbol.toStringTag;
1174
1175 //----------------------------------------
1176 // 7 Abstract Operations
1177 //----------------------------------------
1178
1179 //----------------------------------------
1180 // 7.1 Type Conversion
1181 //----------------------------------------
1182
1183 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1184 // just use valueOf()
1185
1186 // 7.1.2 ToBoolean ( argument )
1187 // just use Boolean()
1188
1189 // 7.1.3 ToNumber ( argument )
1190 // just use Number()
1191
1192 // 7.1.4 ToInteger ( argument )
1193 function ToInteger(n) {
1194 n = Number(n);
1195 if ($isNaN(n)) return 0;
1196 if (n === 0 || n === Infinity || n === -Infinity) return n;
1197 return ((n < 0) ? -1 : 1) * floor(abs(n));
1198 }
1199
1200 // 7.1.5 ToInt32 ( argument )
1201 function ToInt32(v) { return v >> 0; }
1202
1203 // 7.1.6 ToUint32 ( argument )
1204 function ToUint32(v) { return v >>> 0; }
1205
1206 // 7.1.7 ToInt16 ( argument )
1207 function ToInt16(v) { return (v << 16) >> 16; }
1208
1209 // 7.1.8 ToUint16 ( argument )
1210 function ToUint16(v) { return v & 0xFFFF; }
1211
1212 // 7.1.9 ToInt8 ( argument )
1213 function ToInt8(v) { return (v << 24) >> 24; }
1214
1215 // 7.1.10 ToUint8 ( argument )
1216 function ToUint8(v) { return v & 0xFF; }
1217
1218 // 7.1.11 ToUint8Clamp ( argument )
1219 function ToUint8Clamp(argument) {
1220 var number = Number(argument);
1221 if ($isNaN(number)) return 0;
1222 if (number <= 0) return 0;
1223 if (number >= 255) return 255;
1224 var f = floor(number);
1225 if ((f + 0.5) < number) return f + 1;
1226 if (number < (f + 0.5)) return f;
1227 if (f % 2) return f + 1;
1228 return f;
1229 }
1230
1231 // 7.1.12 ToString ( argument )
1232 // just use String()
1233
1234 // 7.1.13 ToObject ( argument )
1235 function ToObject(v) {
1236 if (v === null || v === undefined) throw TypeError();
1237 return Object(v);
1238 }
1239
1240 // 7.1.14 ToPropertyKey ( argument )
1241 function ToPropertyKey(v) {
1242 return String(v);
1243 }
1244
1245 // 7.1.15 ToLength ( argument )
1246 function ToLength(v) {
1247 var len = ToInteger(v);
1248 if (len <= 0) return 0;
1249 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1250 return min(len, 0x20000000000000 - 1); // 2^53-1
1251 }
1252
1253 // 7.1.16 CanonicalNumericIndexString ( argument )
1254
1255 //----------------------------------------
1256 // 7.2 Testing and Comparison Operations
1257 //----------------------------------------
1258
1259 // 7.2.1 RequireObjectCoercible ( argument )
1260 // 7.2.2 IsArray ( argument )
1261
1262 // 7.2.3 IsCallable ( argument )
1263 function IsCallable(o) { return typeof o === 'function'; }
1264
1265 // 7.2.4 IsConstructor ( argument )
1266 function IsConstructor(o) {
1267 // Hacks for Safari 7 TypedArray XXXConstructor objects
1268 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1269 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1270 // TODO: Can this be improved on?
1271 return typeof o === 'function';
1272 }
1273
1274 // 7.2.5 IsExtensible (O)
1275 // 7.2.6 IsInteger ( argument )
1276
1277 // 7.2.7 IsPropertyKey ( argument )
1278 function IsPropertyKey(argument) {
1279 if (Type(argument) === 'string') return true;
1280 if (Type(argument) === 'symbol') return true;
1281 return false;
1282 }
1283
1284 // 7.2.8 IsRegExp ( argument )
1285 // 7.2.5 IsConstructor ( argument )
1286
1287 // 7.2.9 SameValue(x, y)
1288 function SameValue(x, y) {
1289 if (typeof x !== typeof y) return false;
1290 switch (typeof x) {
1291 case 'undefined':
1292 return true;
1293 case 'number':
1294 if (x !== x && y !== y) return true;
1295 if (x === 0 && y === 0) return 1/x === 1/y;
1296 return x === y;
1297 case 'boolean':
1298 case 'string':
1299 case 'object':
1300 default:
1301 return x === y;
1302 }
1303 }
1304
1305 // 7.2.10 SameValueZero(x, y)
1306 function SameValueZero(x, y) {
1307 if (typeof x !== typeof y) return false;
1308 switch (typeof x) {
1309 case 'undefined':
1310 return true;
1311 case 'number':
1312 if (x !== x && y !== y) return true;
1313 return x === y;
1314 case 'boolean':
1315 case 'string':
1316 case 'object':
1317 default:
1318 return x === y;
1319 }
1320 }
1321
1322 //----------------------------------------
1323 // 7.3 Operations on Objects
1324 //----------------------------------------
1325
1326 // 7.3.1 Get (O, P)
1327 // - just use o.p or o[p]
1328
1329 // 7.3.2 GetV (V, P)
1330 function GetV(v, p) {
1331 var o = ToObject(v);
1332 return o[p];
1333 }
1334
1335 // 7.3.3 Set (O, P, V, Throw)
1336 // - just use o.p = v or o[p] = v
1337
1338
1339
1340
1341 // 7.3.9 GetMethod (O, P)
1342 function GetMethod(o, p) {
1343 var func = GetV(o, p);
1344 if (func === undefined || func === null) return undefined;
1345 if (!IsCallable(func)) throw TypeError();
1346 return func;
1347 }
1348
1349 // 7.3.10 HasProperty (O, P)
1350 function HasProperty(o, p) {
1351 while (o) {
1352 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1353 if (Type(o) !== 'object') return false;
1354 o = Object.getPrototypeOf(o);
1355 }
1356 return false;
1357 }
1358
1359 // 7.3.11 HasOwnProperty (O, P)
1360 function HasOwnProperty(o, p) {
1361 return Object.prototype.hasOwnProperty.call(o, p);
1362 }
1363
1364 //----------------------------------------
1365 // 7.4 Operations on Iterator Objects
1366 //----------------------------------------
1367
1368 // 7.4.1 GetIterator ( obj, method )
1369 function GetIterator(obj, method) {
1370 if (arguments.length < 2)
1371 method = GetMethod(obj, $$iterator);
1372 var iterator = method.call(obj);
1373 if (Type(iterator) !== 'object') throw TypeError();
1374 return iterator;
1375 }
1376
1377 // 7.4.2 IteratorNext ( iterator, value )
1378 function IteratorNext(iterator, value) {
1379 if (arguments.length < 2)
1380 var result = iterator.next();
1381 else
1382 result = iterator.next(value);
1383 if (Type(result) !== 'object') throw TypeError();
1384 return result;
1385 }
1386
1387 // 7.4.3 IteratorComplete ( iterResult )
1388 function IteratorComplete(iterResult) {
1389 console.assert(Type(iterResult) === 'object');
1390 return Boolean(iterResult.done);
1391 }
1392
1393 // 7.4.4 IteratorValue ( iterResult )
1394 function IteratorValue(iterResult) {
1395 console.assert(Type(iterResult) === 'object');
1396 return iterResult.value;
1397 }
1398
1399 // 7.4.5 IteratorStep ( iterator )
1400 function IteratorStep( iterator, value ) {
1401 var result = IteratorNext(iterator, value);
1402 var done = result['done'];
1403 if (Boolean(done) === true) return false;
1404 return result;
1405 }
1406
1407 // 7.4.6 IteratorClose( iterator, completion )
1408 function IteratorClose( iterator, completion ) {
1409 console.assert(Type(iterator) === 'object');
1410 var _return = GetMethod(iterator, 'return');
1411 if (_return === undefined) return completion;
1412 try {
1413 var innerResult = _return[iterator]();
1414 } catch (result) {
1415 // TODO: If completion.[[type]] is throw, return completion
1416 return result;
1417 }
1418 if (Type(innerResult) !== 'object') throw TypeError();
1419 return completion;
1420 }
1421
1422 // 7.4.7 CreateIterResultObject (value, done)
1423 function CreateIterResultObject(value, done) {
1424 console.assert(Type(done) === 'boolean');
1425 var obj = {};
1426 obj["value"] = value;
1427 obj["done"] = done;
1428 return obj;
1429 }
1430
1431 // 7.4.8 CreateListIterator (list)
1432 // 7.4.8.1 ListIterator next( )
1433 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1434 // 7.4.9.1 CompoundIterator next( )
1435
1436 //----------------------------------------
1437 // 8 Executable Code and Execution Contexts
1438 //----------------------------------------
1439
1440 //----------------------------------------
1441 // 8.4 Jobs and Job Queues
1442 //----------------------------------------
1443
1444 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1445 function EnqueueJob(queueName, job, args) {
1446 var fn = function() { job.apply(undefined, args); };
1447 enqueue(fn);
1448 }
1449
1450 // 8.4.2 NextJob result
1451 function NextJob(result) {
1452 // no-op
1453 }
1454
1455 //----------------------------------------
1456 // 9 Ordinary and Exotic Objects Behaviors
1457 //----------------------------------------
1458
1459 // 9.1.11 [[Enumerate]] ()
1460 function Enumerate(obj) {
1461 var e = [];
1462 if (Object(obj) !== obj) return e;
1463 var visited = new Set;
1464 while (obj !== null) {
1465 Object.getOwnPropertyNames(obj).forEach(function(name) {
1466 if (!visited.has(name)) {
1467 var desc = Object.getOwnPropertyDescriptor(obj, name);
1468 if (desc) {
1469 visited.add(name);
1470 if (desc.enumerable) e.push(name);
1471 }
1472 }
1473 });
1474 obj = Object.getPrototypeOf(obj);
1475 }
1476 return e[$$iterator]();
1477 }
1478
1479 // 9.1.12 [[OwnPropertyKeys]] ( )
1480 function OwnPropertyKeys(o) {
1481 return Object.getOwnPropertyNames(o);
1482 }
1483
1484 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1485 function ObjectCreate(proto, internalSlotsList) {
1486 return Object.create(proto, internalSlotsList);
1487 }
1488
1489 // ---------------------------------------
1490 // 19 Fundamental Objects
1491 // ---------------------------------------
1492
1493 // ---------------------------------------
1494 // 19.1 Object Objects
1495 // ---------------------------------------
1496
1497 // 19.1.1 The Object Constructor
1498 // 19.1.1.1 Object ( [ value ] )
1499 // 19.1.2 Properties of the Object Constructor
1500 // 19.1.2.1 Object.assign ( target, ...sources )
1501 define(
1502 Object, 'assign',
1503 function assign(target, /*...*/sources) {
1504 var to = ToObject(target);
1505 if (arguments.length < 2) return to;
1506
1507 var sourcesIndex = 1;
1508 while (sourcesIndex < arguments.length) {
1509 var nextSource = arguments[sourcesIndex++];
1510 if (nextSource === undefined || nextSource === null) {
1511 var keys = [];
1512 } else {
1513 var from = ToObject(nextSource);
1514 keys = OwnPropertyKeys(from);
1515 }
1516 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1517 var nextKey = keys[keysIndex];
1518 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1519 if (desc !== undefined && desc.enumerable) {
1520 var propValue = from[nextKey];
1521 to[nextKey] = propValue;
1522 }
1523 }
1524 }
1525 return to;
1526 });
1527
1528 // 19.1.2.2 Object.create ( O [ , Properties ] )
1529 // 19.1.2.3 Object.defineProperties ( O, Properties )
1530 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1531 // 19.1.2.5 Object.freeze ( O )
1532 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1533
1534 (function() {
1535 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1536 $getOwnPropertyNames = Object.getOwnPropertyNames,
1537 $keys = Object.keys,
1538 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1539
1540 function isStringKey(k) { return !symbolForKey(k); }
1541
1542 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1543 define(
1544 Object, 'getOwnPropertyNames',
1545 function getOwnPropertyNames(o) {
1546 if (Object.prototype.toString.call(o) === '[object Window]') {
1547 // Workaround for cross-realm calling by IE itself.
1548 // https://github.com/inexorabletash/polyfill/issues/96
1549 try {
1550 return $getOwnPropertyNames(o).filter(isStringKey);
1551 } catch (_) {
1552 return $window_names.slice();
1553 }
1554 }
1555 return $getOwnPropertyNames(o).filter(isStringKey);
1556 }, !nativeSymbols);
1557
1558 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1559 define(
1560 Object, 'getOwnPropertySymbols',
1561 function getOwnPropertySymbols(o) {
1562 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1563 }, !nativeSymbols);
1564
1565 // 19.1.2.14 Object.keys ( O )
1566 define(
1567 Object, 'keys',
1568 function keys(o) {
1569 return $keys(o).filter(isStringKey);
1570 }, !nativeSymbols);
1571 }());
1572
1573 // 19.1.2.9 Object.getPrototypeOf ( O )
1574 // 19.1.2.10 Object.is ( value1, value2 )
1575 define(
1576 Object, 'is',
1577 function is(value1, value2) {
1578 return SameValue(value1, value2);
1579 });
1580
1581 // 19.1.2.11 Object.isExtensible ( O )
1582 // 19.1.2.12 Object.isFrozen ( O )
1583 // 19.1.2.13 Object.isSealed ( O )
1584
1585 // 19.1.2.14 Object.keys ( O )
1586 // see above
1587
1588 // 19.1.2.15 Object.preventExtensions ( O )
1589 // 19.1.2.16 Object.prototype
1590 // 19.1.2.17 Object.seal ( O )
1591
1592 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1593 define(
1594 Object, 'setPrototypeOf',
1595 function setPrototypeOf(o, proto) {
1596 if (Type(o) !== 'object') throw TypeError();
1597 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1598 o.__proto__ = proto;
1599 return o;
1600 }
1601 );
1602
1603 // 19.1.3 Properties of the Object Prototype Object
1604 // 19.1.3.1 Object.prototype.constructor
1605 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1606 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1607 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1608 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1609 // 19.1.3.6 Object.prototype.toString ( )
1610 hook(Object.prototype, 'toString',
1611 function() {
1612 var o = strict(this);
1613 if (o === Object(o) && $$toStringTag in o) {
1614 return '[object ' + o[$$toStringTag] + ']';
1615 }
1616 return undefined;
1617 });
1618
1619 // 19.1.3.7 Object.prototype.valueOf ( )
1620 // 19.1.4 Properties of Object Instances
1621
1622 // ---------------------------------------
1623 // 19.2 Function Objects
1624 // ---------------------------------------
1625
1626 // 19.2.1 The Function Constructor
1627 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1628 // 19.2.2 Properties of the Function Constructor
1629 // 19.2.2.1 Function.length
1630 // 19.2.2.2 Function.prototype
1631 // 19.2.3 Properties of the Function Prototype Object
1632 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1633 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1634 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1635 // 19.2.3.4 Function.prototype.constructor
1636 // 19.2.3.5 Function.prototype.toString ( )
1637 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1638 // 19.2.4 Function Instances
1639 // 19.2.4.1 length
1640 // 19.2.4.2 name
1641 // 19.2.4.3 prototype
1642
1643 // (No polyfillable changes from ES5)
1644
1645 // ---------------------------------------
1646 // 19.3 Boolean Objects
1647 // ---------------------------------------
1648
1649 // 19.3.1 The Boolean Constructor
1650 // 19.3.1.1 Boolean ( value )
1651 // 19.3.2 Properties of the Boolean Constructor
1652 // 19.3.2.1 Boolean.prototype
1653 // 19.3.3 Properties of the Boolean Prototype Object
1654 // 19.3.3.1 Boolean.prototype.constructor
1655 // 19.3.3.2 Boolean.prototype.toString ( )
1656 // 19.3.3.3 Boolean.prototype.valueOf ( )
1657 // 19.3.4 Properties of Boolean Instances
1658
1659 // (No polyfillable changes from ES5)
1660
1661 // ---------------------------------------
1662 // 19.4 Symbol Objects
1663 // ---------------------------------------
1664
1665 // Moved earlier in this script, so that other polyfills can depend on them.
1666
1667 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1668 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1669
1670 // ---------------------------------------
1671 // 19.5 Error Objects
1672 // ---------------------------------------
1673
1674 // 19.5.1 The Error Constructor
1675 // 19.5.1.1 Error ( message )
1676 // 19.5.1.2 new Error( ...argumentsList )
1677 // 19.5.2 Properties of the Error Constructor
1678 // 19.5.2.1 Error.prototype
1679 // 19.5.3 Properties of the Error Prototype Object
1680 // 19.5.3.1 Error.prototype.constructor
1681 // 19.5.3.2 Error.prototype.message
1682 // 19.5.3.3 Error.prototype.name
1683 // 19.5.3.4 Error.prototype.toString ( )
1684 // 19.5.4 Properties of Error Instances
1685 // 19.5.5 Native Error Types Used in This Standard
1686 // 19.5.5.1 EvalError
1687 // 19.5.5.2 RangeError
1688 // 19.5.5.3 ReferenceError
1689 // 19.5.5.4 SyntaxError
1690 // 19.5.5.5 TypeError
1691 // 19.5.5.6 URIError
1692 // 19.5.6 NativeError Object Structure
1693 // 19.5.6.1 NativeError Constructors
1694 // 19.5.6.1.1 NativeError ( message )
1695 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1696 // 19.5.6.2 Properties of the NativeError Constructors
1697 // 19.5.6.2.1 NativeError.prototype
1698 // 19.5.6.3 Properties of the NativeError Prototype Objects
1699 // 19.5.6.4 Properties of NativeError Instances
1700
1701 // (No polyfillable changes from ES5)
1702
1703 // ---------------------------------------
1704 // 20 Numbers and Dates
1705 // ---------------------------------------
1706
1707 // ---------------------------------------
1708 // 20.1 Number Objects
1709 // ---------------------------------------
1710
1711 // 20.1.1 The Number Constructor
1712 // 20.1.1.1 Number ( [ value ] )
1713 // 20.1.1.2 new Number ( ...argumentsList )
1714 // 20.1.2 Properties of the Number Constructor
1715
1716 // 20.1.2.1 Number.EPSILON
1717 define(
1718 Number, 'EPSILON',
1719 (function () {
1720 var next, result;
1721 for (next = 1; 1 + next !== 1; next = next / 2)
1722 result = next;
1723 return result;
1724 }()));
1725
1726 // 20.1.2.2 Number.isFinite ( number )
1727 define(
1728 Number, 'isFinite',
1729 function isFinite(number) {
1730 if (Type(number) !== 'number') return false;
1731 if (number !== number || number === +Infinity || number === -Infinity) return false;
1732 return true;
1733 });
1734
1735 // 20.1.2.3 Number.isInteger ( number )
1736 define(
1737 Number, 'isInteger',
1738 function isInteger(number) {
1739 if (Type(number) !== 'number') return false;
1740 if (number !== number || number === +Infinity || number === -Infinity) return false;
1741 var integer = ToInteger(number);
1742 if (integer !== number) return false;
1743 return true;
1744 });
1745
1746 // 20.1.2.4 Number.isNaN ( number )
1747 define(
1748 Number, 'isNaN',
1749 function isNaN(number) {
1750 if (Type(number) !== 'number') return false;
1751 if (number !== number) return true;
1752 return false;
1753 });
1754
1755 // 20.1.2.5 Number.isSafeInteger ( number )
1756 define(
1757 Number, 'isSafeInteger',
1758 function isSafeInteger(number) {
1759 if (Type(number) !== 'number') return false;
1760 if (number !== number || number === +Infinity || number === -Infinity) return false;
1761 var integer = ToInteger(number);
1762 if (integer !== number) return false;
1763 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1764 return true;
1765 return false;
1766 });
1767
1768 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1769 define(
1770 Number, 'MAX_SAFE_INTEGER',
1771 9007199254740991); // 2^53-1
1772
1773 // 20.1.2.7 Number.MAX_VALUE
1774
1775 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1776 define(
1777 Number, 'MIN_SAFE_INTEGER',
1778 -9007199254740991); // -2^53+1
1779
1780 // 20.1.2.9 Number.MIN_VALUE
1781 // 20.1.2.10 Number.NaN
1782 // 20.1.2.11 Number.NEGATIVE_INFINITY
1783
1784 // 20.1.2.12 Number.parseFloat ( string )
1785 define(Number, 'parseFloat', $parseFloat);
1786
1787 // 20.1.2.13 Number.parseInt ( string, radix )
1788 define(Number, 'parseInt', $parseInt);
1789
1790 // 20.1.2.14 Number.POSITIVE_INFINITY
1791 // 20.1.2.15 Number.prototype
1792
1793 // 20.1.3 Properties of the Number Prototype Object
1794 // 20.1.3.1 Number.prototype.constructor
1795 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1796 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1797 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1798 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1799 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1800 // 20.1.3.7 Number.prototype.valueOf ( )
1801 // 20.1.4 Properties of Number Instances
1802
1803 // ---------------------------------------
1804 // 20.2 The Math Object
1805 // ---------------------------------------
1806
1807 // 20.2.1 Value Properties of the Math Object
1808 // 20.2.1.1 Math.E
1809 // 20.2.1.2 Math.LN10
1810 // 20.2.1.3 Math.LN2
1811 // 20.2.1.4 Math.LOG10E
1812 // 20.2.1.5 Math.LOG2E
1813 // 20.2.1.6 Math.PI
1814 // 20.2.1.7 Math.SQRT1_2
1815 // 20.2.1.8 Math.SQRT2
1816
1817 // 20.2.1.9 Math [ @@toStringTag ]
1818 define(Math, $$toStringTag, 'Math');
1819
1820 // 20.2.2 Function Properties of the Math Object
1821 // 20.2.2.1 Math.abs ( x )
1822 // 20.2.2.2 Math.acos ( x )
1823
1824 // 20.2.2.3 Math.acosh(x)
1825 define(
1826 Math, 'acosh',
1827 function acosh(x) {
1828 x = Number(x);
1829 return log(x + sqrt(x * x - 1));
1830 });
1831
1832 // 20.2.2.4 Math.asin ( x )
1833
1834 // 20.2.2.5 Math.asinh( x )
1835 define(
1836 Math, 'asinh',
1837 function asinh(x) {
1838 x = Number(x);
1839 if (SameValue(x, -0)) {
1840 return x;
1841 }
1842 var s = sqrt(x * x + 1);
1843 return (s === -x) ? log(0) : log(x + s);
1844 });
1845
1846 // 20.2.2.6 Math.atan ( x )
1847
1848 // 20.2.2.7 Math.atanh( x )
1849 define(
1850 Math, 'atanh',
1851 function atanh(x) {
1852 x = Number(x);
1853 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1854 });
1855
1856 // 20.2.2.8 Math.atan2 ( y, x )
1857
1858 // 20.2.2.9 Math.cbrt ( x )
1859 define(
1860 Math, 'cbrt',
1861 function cbrt(x) {
1862 x = Number(x);
1863 if ($isNaN(x/x)) {
1864 return x;
1865 }
1866 var r = pow(abs(x), 1/3);
1867 var t = x/r/r;
1868 return r + (r * (t-r) / (2*r + t));
1869 });
1870
1871 // 20.2.2.10 Math.ceil ( x )
1872
1873 // 20.2.2.11 Math.clz32 ( x )
1874 define(
1875 Math, 'clz32',
1876 function clz32(x) {
1877 function clz8(x) {
1878 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1879 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1880 }
1881 x = ToUint32(x);
1882 return x & 0xff000000 ? clz8(x >> 24) :
1883 x & 0xff0000 ? clz8(x >> 16) + 8 :
1884 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1885 });
1886
1887
1888
1889 // 20.2.2.12 Math.cos ( x )
1890
1891 // 20.2.2.13 Math.cosh ( x )
1892 define(
1893 Math, 'cosh',
1894 function cosh(x) {
1895 x = Number(x);
1896 return (pow(E, x) + pow(E, -x)) / 2;
1897 });
1898
1899 // 20.2.2.14 Math.exp ( x )
1900
1901 // 20.2.2.15 Math.expm1 ( x )
1902 define(
1903 Math, 'expm1',
1904 function expm1(x) {
1905 x = Number(x);
1906 // from: http://www.johndcook.com/cpp_log1p.html
1907 if (SameValue(x, -0)) {
1908 return -0;
1909 } else if (abs(x) < 1e-5) {
1910 return x + 0.5 * x * x; // two terms of Taylor expansion
1911 } else {
1912 return exp(x) - 1;
1913 }
1914 });
1915
1916 // 20.2.2.16 Math.floor ( x )
1917
1918 // 20.2.2.17 Math.fround ( x )
1919 define(
1920 Math, 'fround',
1921 function fround(x) {
1922 if ($isNaN(x)) {
1923 return NaN;
1924 }
1925 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1926 return x;
1927 }
1928 return (new Float32Array([x]))[0];
1929 });
1930
1931 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1932 define(
1933 Math, 'hypot',
1934 function hypot() {
1935 var values = [];
1936 var m = 0, sawNaN = false;
1937 for (var i = 0; i < arguments.length; ++i) {
1938 var n = abs(Number(arguments[i]));
1939 if (n === Infinity) return n;
1940 if (n !== n) sawNaN = true;
1941 if (n > m) m = n;
1942 values[i] = n;
1943 }
1944 if (sawNaN) return NaN;
1945 if (m === 0) return +0;
1946 var sum = +0;
1947 for (i = 0; i < values.length; ++i) {
1948 var r = values[i] / m;
1949 sum = sum + r * r;
1950 }
1951 return m * sqrt(sum);
1952 });
1953
1954 // 20.2.2.19 Math.imul ( x, y )
1955 define(
1956 Math, 'imul',
1957 function imul(x, y) {
1958 var a = ToUint32(x);
1959 var b = ToUint32(y);
1960 // (slow but accurate)
1961 var ah = (a >>> 16) & 0xffff;
1962 var al = a & 0xffff;
1963 var bh = (b >>> 16) & 0xffff;
1964 var bl = b & 0xffff;
1965 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1966 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1967 );
1968
1969 // 20.2.2.20 Math.log ( x )
1970
1971 // 20.2.2.21 Math.log1p ( x )
1972 define(
1973 Math, 'log1p',
1974 function log1p(x) {
1975 x = Number(x);
1976 // from: http://www.johndcook.com/cpp_expm1.html
1977 if (x < -1) {
1978 return NaN;
1979 } else if (SameValue(x, -0)) {
1980 return -0;
1981 } else if (abs(x) > 1e-4) {
1982 return log(1 + x);
1983 } else {
1984 return (-0.5 * x + 1) * x;
1985 }
1986 });
1987
1988 // 20.2.2.22 Math.log10 ( x )
1989 define(
1990 Math, 'log10',
1991 function log10(x) {
1992 x = Number(x);
1993 return log(x) * LOG10E;
1994 });
1995
1996 // 20.2.2.23 Math.log2 ( x )
1997 define(
1998 Math, 'log2',
1999 function log2(x) {
2000 x = Number(x);
2001 return log(x) * LOG2E;
2002 });
2003
2004 // 20.2.2.24 Math.max ( value1, value2 , ...values )
2005 // 20.2.2.25 Math.min ( value1, value2 , ...values )
2006 // 20.2.2.26 Math.pow ( x, y )
2007 // 20.2.2.27 Math.random ( )
2008 // 20.2.2.28 Math.round ( x )
2009
2010 // 20.2.2.29 Math.sign(x)
2011 define(
2012 Math, 'sign',
2013 function sign(x) {
2014 x = Number(x);
2015 return x < 0 ? -1 : x > 0 ? 1 : x;
2016 });
2017
2018 // 20.2.2.30 Math.sin ( x )
2019
2020 // 20.2.2.31 Math.sinh( x )
2021 define(
2022 Math, 'sinh',
2023 function sinh(x) {
2024 x = Number(x);
2025 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
2026 });
2027
2028 // 20.2.2.32 Math.sqrt ( x )
2029 // 20.2.2.33 Math.tan ( x )
2030
2031 // 20.2.2.34 Math.tanh ( x )
2032 define(
2033 Math, 'tanh',
2034 function tanh(x) {
2035 x = Number(x);
2036 var n = pow(E, 2 * x) - 1,
2037 d = pow(E, 2 * x) + 1;
2038 if (SameValue(x, -0))
2039 return x;
2040 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
2041 });
2042
2043 // 20.2.2.35 Math.trunc ( x )
2044 define(
2045 Math, 'trunc',
2046 function trunc(x) {
2047 x = Number(x);
2048 return $isNaN(x) ? NaN :
2049 x < 0 ? ceil(x) : floor(x);
2050 });
2051
2052 // ---------------------------------------
2053 // 20.3 Date Objects
2054 // ---------------------------------------
2055
2056 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2057 // 20.3.1.1 Time Values and Time Range
2058 // 20.3.1.2 Day Number and Time within Day
2059 // 20.3.1.3 Year Number
2060 // 20.3.1.4 Month Number
2061 // 20.3.1.5 Date Number
2062 // 20.3.1.6 Week Day
2063 // 20.3.1.7 Local Time Zone Adjustment
2064 // 20.3.1.8 Daylight Saving Time Adjustment
2065 // 20.3.1.9 Local Time
2066 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2067 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2068 // 20.3.1.12 MakeDay (year, month, date)
2069 // 20.3.1.13 MakeDate (day, time)
2070 // 20.3.1.14 TimeClip (time)
2071 // 20.3.1.15 Date Time String Format
2072 // 20.3.1.15.1 Extended years
2073 // 20.3.2 The Date Constructor
2074 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2075 // 20.3.2.2 Date ( value )
2076 // 20.3.2.3 Date ( )
2077 // 20.3.3 Properties of the Date Constructor
2078 // 20.3.3.1 Date.now ( )
2079 // 20.3.3.2 Date.parse (string)
2080 // 20.3.3.3 Date.prototype
2081 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2082 // 20.3.4 Properties of the Date Prototype Object
2083 // 20.3.4.1 Date.prototype.constructor
2084 // 20.3.4.2 Date.prototype.getDate ( )
2085 // 20.3.4.3 Date.prototype.getDay ( )
2086 // 20.3.4.4 Date.prototype.getFullYear ( )
2087 // 20.3.4.5 Date.prototype.getHours ( )
2088 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2089 // 20.3.4.7 Date.prototype.getMinutes ( )
2090 // 20.3.4.8 Date.prototype.getMonth ( )
2091 // 20.3.4.9 Date.prototype.getSeconds ( )
2092 // 20.3.4.10 Date.prototype.getTime ( )
2093 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2094 // 20.3.4.12 Date.prototype.getUTCDate ( )
2095 // 20.3.4.13 Date.prototype.getUTCDay ( )
2096 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2097 // 20.3.4.15 Date.prototype.getUTCHours ( )
2098 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2099 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2100 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2101 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2102 // 20.3.4.20 Date.prototype.setDate ( date )
2103 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2104 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2105 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2106 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2107 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2108 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2109 // 20.3.4.27 Date.prototype.setTime ( time )
2110 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2111 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2112 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2113 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2114 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2115 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2116 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2117 // 20.3.4.35 Date.prototype.toDateString ( )
2118 // 20.3.4.36 Date.prototype.toISOString ( )
2119 // 20.3.4.37 Date.prototype.toJSON ( key )
2120 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2121 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2122 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2123 // 20.3.4.41 Date.prototype.toString ( )
2124 // 20.3.4.42 Date.prototype.toTimeString ( )
2125 // 20.3.4.43 Date.prototype.toUTCString ( )
2126 // 20.3.4.44 Date.prototype.valueOf ( )
2127 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2128 // 20.3.5 Properties of Date Instances
2129
2130 // (No polyfillable changes from ES5)
2131
2132 // ---------------------------------------
2133 // 21 Text Processing
2134 // ---------------------------------------
2135
2136 var string_regexp_dispatch = (function() {
2137 var faux = {}, secret = Symbol();
2138 faux[Symbol.match] = function() { return secret; };
2139 return ("").match(faux) === secret;
2140 }());
2141
2142 // 21.1 String Objects
2143 // 21.1.1 The String Constructor
2144 // 21.1.1.1 String ( value )
2145 // 21.1.2 Properties of the String Constructor
2146 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2147
2148 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2149 define(
2150 String, 'fromCodePoint',
2151 function fromCodePoint(/*...codePoints*/) {
2152 var codePoints = arguments,
2153 length = codePoints.length,
2154 elements = [],
2155 nextIndex = 0;
2156 while (nextIndex < length) {
2157 var next = codePoints[nextIndex];
2158 var nextCP = Number(next);
2159 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2160 nextCP < 0 || nextCP > 0x10FFFF) {
2161 throw RangeError('Invalid code point ' + nextCP);
2162 }
2163 if (nextCP < 0x10000) {
2164 elements.push(String.fromCharCode(nextCP));
2165 } else {
2166 nextCP -= 0x10000;
2167 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2168 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2169 }
2170 nextIndex += 1;
2171 }
2172 return elements.join('');
2173 });
2174
2175 // 21.1.2.3 String.prototype
2176
2177 // 21.1.2.4 String.raw ( template , ...substitutions )
2178 define(
2179 String, 'raw',
2180 function raw(template /*, ...substitutions*/) {
2181 var substitutions = [].slice.call(arguments, 1);
2182
2183 var cooked = Object(template);
2184 var rawValue = cooked['raw'];
2185 var raw = Object(rawValue);
2186 var len = raw['length'];
2187 var literalSegments = ToLength(len);
2188 if (literalSegments <= 0) return '';
2189 var stringElements = [];
2190 var nextIndex = 0;
2191 while (true) {
2192 var next = raw[nextIndex];
2193 var nextSeg = String(next);
2194 stringElements.push(nextSeg);
2195 if (nextIndex + 1 === literalSegments)
2196 return stringElements.join('');
2197 next = substitutions[nextIndex];
2198 var nextSub = String(next);
2199 stringElements.push(nextSub);
2200 nextIndex = nextIndex + 1;
2201 }
2202 });
2203
2204 // See https://githib.com/inexorabletash/uate for a more useful version.
2205
2206 // 21.1.3 Properties of the String Prototype Object
2207 // 21.1.3.1 String.prototype.charAt ( pos )
2208 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2209
2210 // 21.1.3.3 String.prototype.codePointAt ( pos )
2211 define(
2212 String.prototype, 'codePointAt',
2213 function codePointAt(pos) {
2214 var o = strict(this);
2215 var s = String(o);
2216 var position = ToInteger(pos);
2217 var size = s.length;
2218 if (position < 0 || position >= size) return undefined;
2219 var first = s.charCodeAt(position);
2220 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2221 var second = s.charCodeAt(position + 1);
2222 if (second < 0xDC00 || second > 0xDFFF) return first;
2223 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2224 });
2225
2226 // 21.1.3.4 String.prototype.concat ( ...args )
2227 // 21.1.3.5 String.prototype.constructor
2228
2229 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2230 define(
2231 String.prototype, 'endsWith',
2232 function endsWith(searchString) {
2233 var endPosition = arguments[1];
2234
2235 var o = strict(this);
2236 var s = String(o);
2237 var searchStr = String(searchString);
2238 var len = s.length;
2239 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2240 var end = min(max(pos, 0), len);
2241 var searchLength = searchStr.length;
2242 var start = end - searchLength;
2243 if (start < 0) return false;
2244 if (s.substring(start, start + searchLength) === searchStr) return true;
2245 return false;
2246 });
2247
2248 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2249 define(
2250 String.prototype, 'includes',
2251 function includes(searchString) {
2252 var position = arguments[1];
2253
2254 var o = strict(this);
2255 var s = String(o);
2256 var searchStr = String(searchString);
2257 var pos = ToInteger(position);
2258 var len = s.length;
2259 var start = min(max(pos, 0), len);
2260 return s.indexOf(searchStr, start) !== -1;
2261 });
2262
2263 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2264 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2265 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2266 // 21.1.3.11 String.prototype.match ( regexp )
2267 define(
2268 String.prototype, 'match',
2269 function match(regexp) {
2270 var o = strict(this);
2271 var s = String(o);
2272 if (HasProperty(regexp, $$match)) var rx = regexp;
2273 else rx = new RegExp(regexp);
2274 return rx[$$match](s);
2275 }, !string_regexp_dispatch);
2276
2277 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2278
2279 // Not practical due to table sizes; if needed, pull in:
2280 // https://github.com/walling/unorm/
2281
2282 // 21.1.3.13 String.prototype.repeat ( count )
2283 define(
2284 String.prototype, 'repeat',
2285 function repeat(count) {
2286 var o = strict(this);
2287 var s = String(o);
2288 var n = ToInteger(count);
2289 if (n < 0) throw RangeError();
2290 if (n === Infinity) throw RangeError();
2291 var t = new Array(n + 1).join(s);
2292 return t;
2293 });
2294
2295 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2296 define(
2297 String.prototype, 'replace',
2298 function replace(searchValue, replaceValue) {
2299 var o = strict(this);
2300 if (HasProperty(searchValue, $$replace))
2301 return searchValue[$$replace](o, replaceValue);
2302 return orig_replace.call(o, searchValue, replaceValue);
2303 }, !string_regexp_dispatch);
2304
2305 // 21.1.3.15 String.prototype.search ( regexp )
2306 define(
2307 String.prototype, 'search',
2308 function search(regexp) {
2309 var o = strict(this);
2310 var string = String(o);
2311 if (HasProperty(regexp, $$search)) var rx = regexp;
2312 else rx = new RegExp(regexp);
2313 return rx[$$search](string);
2314 }, !string_regexp_dispatch);
2315
2316 // 21.1.3.16 String.prototype.slice ( start, end )
2317 // 21.1.3.17 String.prototype.split ( separator, limit )
2318 define(
2319 String.prototype, 'split',
2320 function split(separator, limit) {
2321 var o = strict(this);
2322 if (HasProperty(separator, $$split))
2323 return separator[$$split](o, limit);
2324 return orig_split.call(o, separator, limit);
2325 }, !string_regexp_dispatch);
2326
2327 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2328 define(
2329 String.prototype, 'startsWith',
2330 function startsWith(searchString) {
2331 var position = arguments[1];
2332
2333 var o = strict(this);
2334 var s = String(o);
2335 var searchStr = String(searchString);
2336 var pos = ToInteger(position);
2337 var len = s.length;
2338 var start = min(max(pos, 0), len);
2339 var searchLength = searchStr.length;
2340 if (searchLength + start > len) return false;
2341 if (s.substring(start, start + searchLength) === searchStr) return true;
2342 return false;
2343 });
2344
2345 // 21.1.3.19 String.prototype.substring ( start, end )
2346 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2347 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2348 // 21.1.3.22 String.prototype.toLowerCase ( )
2349 // 21.1.3.23 String.prototype.toString ( )
2350 // 21.1.3.24 String.prototype.toUpperCase ( )
2351 // 21.1.3.25 String.prototype.trim ( )
2352 // 21.1.3.26 String.prototype.valueOf ( )
2353
2354 // 21.1.3.27 String.prototype [ @@iterator ]( )
2355 define(
2356 String.prototype, $$iterator,
2357 function entries() {
2358 return CreateStringIterator(this, 'value');
2359 });
2360
2361 // 21.1.4 Properties of String Instances
2362 // 21.1.4.1 length
2363
2364 // 21.1.5 String Iterator Objects
2365 /** @constructor */
2366 function StringIterator() {}
2367
2368 // 21.1.5.1 CreateStringIterator Abstract Operation
2369 function CreateStringIterator(string, kind) {
2370 var s = String(string);
2371 var iterator = new StringIterator;
2372 set_internal(iterator, '[[IteratedString]]', s);
2373 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2374 set_internal(iterator, '[[StringIterationKind]]', kind);
2375 return iterator;
2376 }
2377
2378 // 21.1.5.2 The %StringIteratorPrototype% Object
2379 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2380 StringIterator.prototype = $StringIteratorPrototype$;
2381
2382 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2383 define(
2384 $StringIteratorPrototype$, 'next',
2385 function next() {
2386 var o = ToObject(this);
2387 var s = String(o['[[IteratedString]]']),
2388 index = o['[[StringIteratorNextIndex]]'],
2389 len = s.length;
2390 if (index >= len) {
2391 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2392 return CreateIterResultObject(undefined, true);
2393 }
2394 var cp = s.codePointAt(index);
2395 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2396 return CreateIterResultObject(String.fromCodePoint(cp), false);
2397 });
2398
2399 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2400 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2401
2402 // 21.1.5.3 Properties of String Iterator Instances
2403
2404 // ---------------------------------------
2405 // 21.2 RegExp (Regular Expression) Objects
2406 // ---------------------------------------
2407
2408 // 21.2.1 Patterns
2409 // 21.2.2 Pattern Semantics
2410 // 21.2.2.1 Notation
2411 // 21.2.2.2 Pattern
2412 // 21.2.2.3 Disjunction
2413 // 21.2.2.4 Alternative
2414 // 21.2.2.5 Term
2415 // 21.2.2.6 Assertion
2416 // 21.2.2.7 Quantifier
2417 // 21.2.2.8 Atom
2418 // 21.2.2.9 AtomEscape
2419 // 21.2.2.10 CharacterEscape
2420 // 21.2.2.11 DecimalEscape
2421 // 21.2.2.12 CharacterClassEscape
2422 // 21.2.2.13 CharacterClass
2423 // 21.2.2.14 ClassRanges
2424 // 21.2.2.15 NonemptyClassRanges
2425 // 21.2.2.16 NonemptyClassRangesNoDash
2426 // 21.2.2.17 ClassAtom
2427 // 21.2.2.18 ClassAtomNoDash
2428 // 21.2.2.19 ClassEscape
2429 // 21.2.3 The RegExp Constructor
2430 // 21.2.3.1 RegExp ( pattern, flags )
2431 // 21.2.3.2 new RegExp( ...argumentsList )
2432 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2433 // 21.2.4 Properties of the RegExp Constructor
2434 // 21.2.4.1 RegExp.prototype
2435 // 21.2.5 Properties of the RegExp Prototype Object
2436 // 21.2.5.1 RegExp.prototype.constructor
2437 // 21.2.5.2 RegExp.prototype.exec ( string )
2438
2439 // 21.2.5.3 get RegExp.prototype.flags
2440 if (!('flags' in RegExp.prototype)) {
2441 Object.defineProperty(
2442 RegExp.prototype, 'flags', {
2443 get: function() {
2444 var s = String(this);
2445 return s.substring(s.lastIndexOf('/') + 1);
2446 }
2447 });
2448 }
2449
2450 // 21.2.5.4 get RegExp.prototype.global
2451 // 21.2.5.5 get RegExp.prototype.ignoreCase
2452
2453 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2454 define(RegExp.prototype, $$match, function(string) {
2455 var o = strict(this);
2456 return orig_match.call(string, o);
2457 });
2458
2459 // 21.2.5.7 get RegExp.prototype.multiline
2460
2461 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2462 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2463 var o = strict(this);
2464 return orig_replace.call(string, o, replaceValue);
2465 });
2466
2467 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2468 define(RegExp.prototype, $$search, function(string) {
2469 var o = strict(this);
2470 return orig_search.call(string, o);
2471 });
2472
2473 // 21.2.5.10 get RegExp.prototype.source
2474
2475 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2476 define(RegExp.prototype, $$split, function(string, limit) {
2477 var o = strict(this);
2478 return orig_split.call(string, o, limit);
2479 });
2480
2481 // 21.2.5.12 get RegExp.prototype.sticky
2482 // 21.2.5.13 RegExp.prototype.test( S )
2483 // 21.2.5.14 RegExp.prototype.toString ( )
2484 // 21.2.5.15 get RegExp.prototype.unicode
2485
2486 // 21.2.6 Properties of RegExp Instances
2487 // 21.2.6.1 lastIndex
2488
2489 // (No polyfillable changes from ES5)
2490
2491 // ---------------------------------------
2492 // 22 Indexed Collections
2493 // ---------------------------------------
2494
2495 // ---------------------------------------
2496 // 22.1 Array Objects
2497 // ---------------------------------------
2498
2499 // 22.1.1 The Array Constructor
2500 // 22.1.1.1 Array ( )
2501 // 22.1.1.2 Array (len)
2502 // 22.1.1.3 Array (...items )
2503
2504 // 22.1.2 Properties of the Array Constructor
2505
2506 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2507 define(
2508 Array, 'from',
2509 function from(items) {
2510 var mapfn = arguments[1];
2511 var thisArg = arguments[2];
2512
2513 var c = strict(this);
2514 if (mapfn === undefined) {
2515 var mapping = false;
2516 } else {
2517 if (!IsCallable(mapfn)) throw TypeError();
2518 var t = thisArg;
2519 mapping = true;
2520 }
2521 var usingIterator = GetMethod(items, $$iterator);
2522 if (usingIterator !== undefined) {
2523 if (IsConstructor(c)) {
2524 var a = new c();
2525 } else {
2526 a = new Array(0);
2527 }
2528 var iterator = GetIterator(items, usingIterator);
2529 var k = 0;
2530 while (true) {
2531 var next = IteratorStep(iterator);
2532 if (next === false) {
2533 a.length = k;
2534 return a;
2535 }
2536 var nextValue = IteratorValue(next);
2537 if (mapping)
2538 var mappedValue = mapfn.call(t, nextValue);
2539 else
2540 mappedValue = nextValue;
2541 a[k] = mappedValue;
2542 k += 1;
2543 }
2544 }
2545 var arrayLike = ToObject(items);
2546 var lenValue = arrayLike.length;
2547 var len = ToLength(lenValue);
2548 if (IsConstructor(c)) {
2549 a = new c(len);
2550 } else {
2551 a = new Array(len);
2552 }
2553 k = 0;
2554 while (k < len) {
2555 var kValue = arrayLike[k];
2556 if (mapping)
2557 mappedValue = mapfn.call(t, kValue, k);
2558 else
2559 mappedValue = kValue;
2560 a[k] = mappedValue;
2561 k += 1;
2562 }
2563 a.length = len;
2564 return a;
2565 });
2566
2567 // 22.1.2.2 Array.isArray ( arg )
2568
2569 // 22.1.2.3 Array.of ( ...items )
2570 define(
2571 Array, 'of',
2572 function of() {
2573 var items = arguments;
2574
2575 var lenValue = items.length;
2576 var len = ToUint32(lenValue);
2577 var c = strict(this), a;
2578 if (IsConstructor(c)) {
2579 a = new c(len);
2580 a = ToObject(a);
2581 } else {
2582 a = new Array(len);
2583 }
2584 var k = 0;
2585 while (k < len) {
2586 a[k] = items[k];
2587 k += 1;
2588 }
2589 a.length = len;
2590 return a;
2591 });
2592
2593 // 22.1.2.4 Array.prototype
2594 // 22.1.2.5 get Array [ @@species ]
2595 // 22.1.3 Properties of the Array Prototype Object
2596 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2597 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2598 // 22.1.3.2 Array.prototype.constructor
2599 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2600 define(
2601 Array.prototype, 'copyWithin',
2602 function copyWithin(target, start/*, end*/) {
2603 var end = arguments[2];
2604
2605 var o = ToObject(this);
2606 var lenVal = o.length;
2607 var len = ToLength(lenVal);
2608 len = max(len, 0);
2609 var relativeTarget = ToInteger(target);
2610 var to;
2611 if (relativeTarget < 0)
2612 to = max(len + relativeTarget, 0);
2613 else
2614 to = min(relativeTarget, len);
2615 var relativeStart = ToInteger(start);
2616 var from;
2617 if (relativeStart < 0)
2618 from = max(len + relativeStart, 0);
2619 else
2620 from = min(relativeStart, len);
2621 var relativeEnd;
2622 if (end === undefined)
2623 relativeEnd = len;
2624 else
2625 relativeEnd = ToInteger(end);
2626 var final;
2627 if (relativeEnd < 0)
2628 final = max(len + relativeEnd, 0);
2629 else
2630 final = min(relativeEnd, len);
2631 var count = min(final - from, len - to);
2632 var direction;
2633 if (from < to && to < from + count) {
2634 direction = -1;
2635 from = from + count - 1;
2636 to = to + count - 1;
2637 } else {
2638 direction = 1;
2639 }
2640 while (count > 0) {
2641 var fromKey = String(from);
2642 var toKey = String(to);
2643 var fromPresent = HasProperty(o, fromKey);
2644 if (fromPresent) {
2645 var fromVal = o[fromKey];
2646 o[toKey] = fromVal;
2647 } else {
2648 delete o[toKey];
2649 }
2650 from = from + direction;
2651 to = to + direction;
2652 count = count - 1;
2653 }
2654 return o;
2655 });
2656
2657 // 22.1.3.4 Array.prototype.entries ( )
2658 var nativeArrayIteratorMethods =
2659 ('entries' in Array.prototype && 'next' in [].entries());
2660
2661 define(
2662 Array.prototype, 'entries',
2663 function entries() {
2664 return CreateArrayIterator(this, 'key+value');
2665 }, !nativeArrayIteratorMethods);
2666
2667 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2668
2669 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2670 define(
2671 Array.prototype, 'fill',
2672 function fill(value/*, start, end*/) {
2673 var start = arguments[1],
2674 end = arguments[2];
2675
2676 var o = ToObject(this);
2677 var lenVal = o.length;
2678 var len = ToLength(lenVal);
2679 len = max(len, 0);
2680 var relativeStart = ToInteger(start);
2681 var k;
2682 if (relativeStart < 0)
2683 k = max((len + relativeStart), 0);
2684 else
2685 k = min(relativeStart, len);
2686 var relativeEnd;
2687 if (end === undefined)
2688 relativeEnd = len;
2689 else
2690 relativeEnd = ToInteger(end);
2691 var final;
2692 if (relativeEnd < 0)
2693 final = max((len + relativeEnd), 0);
2694 else
2695 final = min(relativeEnd, len);
2696 while (k < final) {
2697 var pk = String(k);
2698 o[pk] = value;
2699 k += 1;
2700 }
2701 return o;
2702 });
2703
2704 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2705
2706 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2707 define(
2708 Array.prototype, 'find',
2709 function find(predicate) {
2710 var o = ToObject(this);
2711 var lenValue = o.length;
2712 var len = ToInteger(lenValue);
2713 if (!IsCallable(predicate)) throw TypeError();
2714 var t = arguments.length > 1 ? arguments[1] : undefined;
2715 var k = 0;
2716 while (k < len) {
2717 var pk = String(k);
2718 var kPresent = HasProperty(o, pk);
2719 if (kPresent) {
2720 var kValue = o[pk];
2721 var testResult = predicate.call(t, kValue, k, o);
2722 if (Boolean(testResult)) {
2723 return kValue;
2724 }
2725 }
2726 ++k;
2727 }
2728 return undefined;
2729 });
2730
2731 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2732 define(
2733 Array.prototype, 'findIndex',
2734 function findIndex(predicate) {
2735 var o = ToObject(this);
2736 var lenValue = o.length;
2737 var len = ToLength(lenValue);
2738 if (!IsCallable(predicate)) throw TypeError();
2739 var t = arguments.length > 1 ? arguments[1] : undefined;
2740 var k = 0;
2741 while (k < len) {
2742 var pk = String(k);
2743 var kPresent = HasProperty(o, pk);
2744 if (kPresent) {
2745 var kValue = o[pk];
2746 var testResult = predicate.call(t, kValue, k, o);
2747 if (Boolean(testResult)) {
2748 return k;
2749 }
2750 }
2751 ++k;
2752 }
2753 return -1;
2754 });
2755
2756 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2757 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2758 // 22.1.3.12 Array.prototype.join (separator)
2759
2760 // 22.1.3.13 Array.prototype.keys ( )
2761 define(
2762 Array.prototype, 'keys',
2763 function keys() {
2764 return CreateArrayIterator(this, 'key');
2765 }, !nativeArrayIteratorMethods);
2766
2767 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2768 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2769 // 22.1.3.16 Array.prototype.pop ( )
2770 // 22.1.3.17 Array.prototype.push ( ...items )
2771 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2772 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2773 // 22.1.3.20 Array.prototype.reverse ( )
2774 // 22.1.3.21 Array.prototype.shift ( )
2775 // 22.1.3.22 Array.prototype.slice (start, end)
2776 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2777 // 22.1.3.24 Array.prototype.sort (comparefn)
2778 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2779 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2780 // 22.1.3.27 Array.prototype.toString ( )
2781 // 22.1.3.28 Array.prototype.unshift ( ...items )
2782
2783 // 22.1.3.29 Array.prototype.values ( )
2784 define(
2785 Array.prototype, 'values',
2786 function values() {
2787 return CreateArrayIterator(this, 'value');
2788 }, !nativeArrayIteratorMethods);
2789
2790 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2791 define(
2792 Array.prototype, $$iterator,
2793 Array.prototype.values
2794 );
2795
2796 // 22.1.3.31 Array.prototype [ @@unscopables ]
2797 // 22.1.4 Properties of Array Instances
2798 // 22.1.4.1 length
2799
2800 // 22.1.5 Array Iterator Objects
2801 function ArrayIterator() {}
2802
2803 // 22.1.5.1 CreateArrayIterator Abstract Operation
2804 function CreateArrayIterator(array, kind) {
2805 var o = ToObject(array);
2806 var iterator = new ArrayIterator;
2807 set_internal(iterator, '[[IteratedObject]]', o);
2808 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2809 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2810 return iterator;
2811 }
2812
2813 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2814 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2815 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2816
2817 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2818 define(
2819 $ArrayIteratorPrototype$, 'next',
2820 function next() {
2821 var o = strict(this);
2822 if (Type(o) !== 'object') throw TypeError();
2823 var a = o['[[IteratedObject]]'],
2824 index = o['[[ArrayIteratorNextIndex]]'],
2825 itemKind = o['[[ArrayIterationKind]]'],
2826 lenValue = a.length,
2827 len = ToUint32(lenValue),
2828 elementKey,
2829 elementValue;
2830 if (itemKind.indexOf('sparse') !== -1) {
2831 var found = false;
2832 while (!found && index < len) {
2833 elementKey = String(index);
2834 found = HasProperty(a, elementKey);
2835 if (!found) {
2836 index += 1;
2837 }
2838 }
2839 }
2840 if (index >= len) {
2841 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2842 return CreateIterResultObject(undefined, true);
2843 }
2844 elementKey = index;
2845 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2846 if (itemKind.indexOf('value') !== -1)
2847 elementValue = a[elementKey];
2848 if (itemKind.indexOf('key+value') !== -1)
2849 return CreateIterResultObject([elementKey, elementValue], false);
2850 if (itemKind.indexOf('key') !== -1)
2851 return CreateIterResultObject(elementKey, false);
2852 if (itemKind === 'value')
2853 return CreateIterResultObject(elementValue, false);
2854 throw Error('Internal error');
2855 });
2856
2857 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2858 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2859
2860 // 22.1.5.3 Properties of Array Iterator Instances
2861
2862
2863 // ---------------------------------------
2864 // 22.2 TypedArray Objects
2865 // ---------------------------------------
2866
2867 // See typedarray.js for TypedArray polyfill
2868
2869 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2870 'Int16Array', 'Uint16Array',
2871 'Int32Array', 'Uint32Array',
2872 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2873 if (!($TypedArrayName$ in global))
2874 return;
2875 var $TypedArray$ = global[$TypedArrayName$];
2876
2877 // 22.2.1 The %TypedArray% Intrinsic Object
2878 // 22.2.1.1 %TypedArray% ( length )
2879 // 22.2.1.2 %TypedArray% ( typedArray )
2880 // 22.2.1.3 %TypedArray% ( object )
2881 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2882 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2883 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2884
2885 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2886 define(
2887 $TypedArray$, 'from',
2888 function from(source) {
2889 var mapfn = arguments[1];
2890 var thisArg = arguments[2];
2891
2892 var c = strict(this);
2893 if (!IsConstructor(c)) throw TypeError();
2894 if (mapfn === undefined) {
2895 var mapping = false;
2896 } else {
2897 if (IsCallable(mapfn)) throw TypeError();
2898 var t = thisArg;
2899 mapping = true;
2900 }
2901 var usingIterator = GetMethod(source, $$iterator);
2902 if (usingIterator !== undefined) {
2903 var iterator = GetIterator(source, usingIterator);
2904 var values = [];
2905 var next = true;
2906 while (next !== false) {
2907 next = IteratorStep(iterator);
2908 if (next !== false) {
2909 var nextValue = IteratorValue(next);
2910 values.push(nextValue);
2911 }
2912 }
2913 var len = values.length;
2914 var newObj = new c(len);
2915 var k = 0;
2916 while (k < len) {
2917 var kValue = values.shift();
2918 if (mapping) {
2919 var mappedValue = mapfn.call(t, kValue);
2920 } else {
2921 mappedValue = kValue;
2922 }
2923 newObj[k] = mappedValue;
2924 ++k;
2925 }
2926 console.assert(values.length === 0);
2927 return newObj;
2928 }
2929 var arrayLike = ToObject(source);
2930 var lenValue = arrayLike.length;
2931 len = ToLength(lenValue);
2932 newObj = new c(len);
2933 k = 0;
2934 while (k < len) {
2935 kValue = arrayLike[k];
2936 if (mapping) {
2937 mappedValue = mapfn.call(t, kValue, k);
2938 } else {
2939 mappedValue = kValue;
2940 }
2941 newObj[k] = mappedValue;
2942 ++k;
2943 }
2944 return newObj;
2945 });
2946
2947 // 22.2.2.2 %TypedArray%.of ( ...items )
2948 define(
2949 $TypedArray$, 'of',
2950 function of() {
2951 var items = arguments;
2952
2953 var len = items.length;
2954 var c = strict(this);
2955 var newObj = new c(len);
2956 var k = 0;
2957 while (k < len) {
2958 newObj[k] = items[k];
2959 ++k;
2960 }
2961 return newObj;
2962 });
2963
2964 // 22.2.2.3 %TypedArray%.prototype
2965 // 22.2.2.4 get %TypedArray% [ @@species ]
2966 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2967 // 22.2.3.1 get %TypedArray%.prototype.buffer
2968 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2969 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2970 // 22.2.3.4 %TypedArray%.prototype.constructor
2971
2972 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2973 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2974
2975 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2976 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2977
2978 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2979 define($TypedArray$.prototype, 'every', Array.prototype.every);
2980
2981 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2982 define(
2983 $TypedArray$.prototype, 'fill',
2984 //Array.prototype.fill // Doesn't work in Safari 7
2985 function fill(value/*, start, end*/) {
2986 var start = arguments[1],
2987 end = arguments[2];
2988
2989 var o = ToObject(this);
2990 var lenVal = o.length;
2991 var len = ToLength(lenVal);
2992 len = max(len, 0);
2993 var relativeStart = ToInteger(start);
2994 var k;
2995 if (relativeStart < 0) k = max((len + relativeStart), 0);
2996 else k = min(relativeStart, len);
2997 var relativeEnd;
2998 if (end === undefined) relativeEnd = len;
2999 else relativeEnd = ToInteger(end);
3000 var final;
3001 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
3002 else final = min(relativeEnd, len);
3003 while (k < final) {
3004 var pk = String(k);
3005 o[pk] = value;
3006 k += 1;
3007 }
3008 return o;
3009 });
3010
3011 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
3012 define(
3013 $TypedArray$.prototype, 'filter',
3014 function filter(callbackfn) {
3015 var thisArg = arguments[1];
3016
3017 var o = ToObject(this);
3018 var lenVal = o.length;
3019 var len = ToLength(lenVal);
3020 if (!IsCallable(callbackfn)) throw TypeError();
3021 var t = thisArg;
3022 var c = o.constructor;
3023 var kept = [];
3024 var k = 0;
3025 var captured = 0;
3026 while (k < len) {
3027 var kValue = o[k];
3028 var selected = callbackfn.call(t, kValue, k, o);
3029 if (selected) {
3030 kept.push(kValue);
3031 ++captured;
3032 }
3033 ++k;
3034 }
3035 var a = new c(captured);
3036 var n = 0;
3037 for (var i = 0; i < kept.length; ++i) {
3038 var e = kept[i];
3039 a[n] = e;
3040 ++n;
3041 }
3042 return a;
3043 });
3044
3045 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3046 define($TypedArray$.prototype, 'find', Array.prototype.find);
3047
3048 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3049 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3050
3051 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3052 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3053
3054 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3055 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3056
3057 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3058 define($TypedArray$.prototype, 'join', Array.prototype.join);
3059
3060 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3061 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3062
3063 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3064 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3065
3066 // 22.2.3.17 get %TypedArray%.prototype.length
3067
3068 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3069 define(
3070 $TypedArray$.prototype, 'map',
3071 function map(callbackfn) {
3072 var thisArg = arguments[1];
3073
3074 var o = ToObject(this);
3075 var lenValue = o.length;
3076 var len = ToLength(lenValue);
3077 if (!IsCallable(callbackfn)) throw TypeError();
3078 var t = thisArg;
3079 var a = undefined;
3080 var c = o.constructor;
3081 if (IsConstructor(c))
3082 a = new c(len);
3083 if (a === undefined)
3084 a = new Array(len);
3085 var k = 0;
3086 while (k < len) {
3087 var kPresent = HasProperty(o, k);
3088 if (kPresent) {
3089 var kValue = o[k];
3090 var mappedValue = callbackfn.call(t, kValue, k, o);
3091 a[k] = mappedValue;
3092 }
3093 ++k;
3094 }
3095 return a;
3096 });
3097
3098 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3099 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3100
3101 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3102 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3103
3104 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3105 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3106
3107 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3108 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3109 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3110
3111 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3112 define(
3113 $TypedArray$.prototype, 'slice',
3114 function slice(start, end) {
3115 var o = ToObject(this);
3116 var lenVal = o.length;
3117 var len = ToLength(lenVal);
3118 var relativeStart = ToInteger(start);
3119 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3120 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3121 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3122 var count = final - k;
3123 var c = o.constructor;
3124 if (IsConstructor(c)) {
3125 var a = new c(count);
3126 } else {
3127 throw TypeError();
3128 }
3129 var n = 0;
3130 while (k < final) {
3131 var kValue = o[k];
3132 a[n] = kValue;
3133 ++k;
3134 ++n;
3135 }
3136 return a;
3137 });
3138
3139 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3140 define($TypedArray$.prototype, 'some', Array.prototype.some);
3141
3142 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3143 define(
3144 $TypedArray$.prototype, 'sort',
3145 function sort() {
3146 var comparefn = arguments[0];
3147
3148 function sortCompare(x, y) {
3149 console.assert(Type(x) === 'number' && Type(y) === 'number');
3150 if (x !== x && y !== y) return +0;
3151 if (x !== x) return 1;
3152 if (y !== y) return -1;
3153 if (comparefn !== undefined) {
3154 return comparefn(x, y);
3155 }
3156 if (x < y) return -1;
3157 if (x > y) return 1;
3158 return +0;
3159 }
3160 return Array.prototype.sort.call(this, sortCompare);
3161 });
3162
3163 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3164 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3165 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3166
3167 // 22.2.3.29 %TypedArray%.prototype.values ( )
3168 define($TypedArray$.prototype, 'values', Array.prototype.values);
3169
3170 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3171 define(
3172 $TypedArray$.prototype, $$iterator,
3173 $TypedArray$.prototype.values
3174 );
3175
3176 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3177 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3178
3179 // 22.2.4 The TypedArray Constructors
3180 // 22.2.4.1TypedArray( ... argumentsList)
3181 // 22.2.5 Properties of the TypedArray Constructors
3182 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3183 // 22.2.5.2 TypedArray.prototype
3184 // 22.2.6 Properties of TypedArray Prototype Objects
3185 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3186 // 22.2.6.2 TypedArray.prototype.constructor
3187 // 22.2.7 Properties of TypedArray Instances
3188 });
3189
3190 // ---------------------------------------
3191 // 23 Keyed Collection
3192 // ---------------------------------------
3193
3194 // ---------------------------------------
3195 // 23.1 Map Objects
3196 // ---------------------------------------
3197
3198 (function() {
3199 // 23.1.1 The Map Constructor
3200
3201 // 23.1.1.1 Map ( [ iterable ] )
3202 /** @constructor */
3203 function Map(/*iterable*/) {
3204 var map = strict(this);
3205 var iterable = arguments[0];
3206
3207 if (Type(map) !== 'object') throw TypeError();
3208 if ('[[MapData]]' in map) throw TypeError();
3209
3210 if (iterable !== undefined) {
3211 var adder = map['set'];
3212 if (!IsCallable(adder)) throw TypeError();
3213 var iter = GetIterator(ToObject(iterable));
3214 }
3215 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3216 if (iter === undefined) return map;
3217 while (true) {
3218 var next = IteratorStep(iter);
3219 if (next === false)
3220 return map;
3221 var nextItem = IteratorValue(next);
3222 if (Type(nextItem) !== 'object') throw TypeError();
3223 var k = nextItem[0];
3224 var v = nextItem[1];
3225 adder.call(map, k, v);
3226 }
3227
3228 return map;
3229 }
3230
3231 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3232 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3233 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3234 (new global.Map([['a', 1]]).size !== 1))
3235 global.Map = Map;
3236
3237
3238 function MapDataIndexOf(mapData, key) {
3239 var i;
3240 if (key === key) return mapData.keys.indexOf(key);
3241 // Slow case for NaN
3242 for (i = 0; i < mapData.keys.length; i += 1)
3243 if (SameValueZero(mapData.keys[i], key)) return i;
3244 return -1;
3245 }
3246
3247 // 23.1.1.2 new Map ( ... argumentsList )
3248 // 23.1.2 Properties of the Map Constructor
3249 // 23.1.2.1 Map.prototype
3250 var $MapPrototype$ = {};
3251 Map.prototype = $MapPrototype$;
3252
3253 // 23.1.2.2 get Map [ @@species ]
3254
3255 // 23.1.3 Properties of the Map Prototype Object
3256 // 23.1.3.1 Map.prototype.clear ()
3257 define(
3258 Map.prototype, 'clear',
3259 function clear() {
3260 var m = strict(this);
3261 if (Type(m) !== 'object') throw TypeError();
3262 if (!('[[MapData]]' in m)) throw TypeError();
3263 if (m['[[MapData]]'] === undefined) throw TypeError();
3264 var entries = m['[[MapData]]'];
3265 entries.keys.length = 0;
3266 entries.values.length = 0;
3267 return undefined;
3268 });
3269
3270 // 23.1.3.2 Map.prototype.constructor
3271
3272 // 23.1.3.3 Map.prototype.delete ( key )
3273 define(
3274 Map.prototype, 'delete',
3275 function delete_(key) {
3276 var m = strict(this);
3277 if (Type(m) !== 'object') throw TypeError();
3278 if (!('[[MapData]]' in m)) throw TypeError();
3279 if (m['[[MapData]]'] === undefined) throw TypeError();
3280 var entries = m['[[MapData]]'];
3281 var i = MapDataIndexOf(entries, key);
3282 if (i < 0) return false;
3283 entries.keys[i] = empty;
3284 entries.values[i] = empty;
3285 return true;
3286 });
3287
3288 // 23.1.3.4 Map.prototype.entries ( )
3289 define(
3290 Map.prototype, 'entries',
3291 function entries() {
3292 var m = strict(this);
3293 if (Type(m) !== 'object') throw TypeError();
3294 return CreateMapIterator(m, 'key+value');
3295 });
3296
3297 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3298 define(
3299 Map.prototype, 'forEach',
3300 function forEach(callbackfn /*, thisArg*/) {
3301 var thisArg = arguments[1];
3302
3303 var m = strict(this);
3304 if (Type(m) !== 'object') throw TypeError();
3305 if (!('[[MapData]]' in m)) throw TypeError();
3306 if (m['[[MapData]]'] === undefined) throw TypeError();
3307 var entries = m['[[MapData]]'];
3308
3309 if (!IsCallable(callbackfn)) {
3310 throw TypeError('First argument to forEach is not callable.');
3311 }
3312 for (var i = 0; i < entries.keys.length; ++i) {
3313 if (entries.keys[i] !== empty) {
3314 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3315 }
3316 }
3317 return undefined;
3318 });
3319
3320 // 23.1.3.6 Map.prototype.get ( key )
3321 define(
3322 Map.prototype, 'get',
3323 function get(key) {
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 i = MapDataIndexOf(entries, key);
3330 if (i >= 0) return entries.values[i];
3331 return undefined;
3332 });
3333
3334 // 23.1.3.7 Map.prototype.has ( key )
3335 define(
3336 Map.prototype, 'has',
3337 function has(key) {
3338 var m = strict(this);
3339 if (Type(m) !== 'object') throw TypeError();
3340 if (!('[[MapData]]' in m)) throw TypeError();
3341 if (m['[[MapData]]'] === undefined) throw TypeError();
3342 var entries = m['[[MapData]]'];
3343 if (MapDataIndexOf(entries, key) >= 0) return true;
3344 return false;
3345 });
3346
3347 // 23.1.3.8 Map.prototype.keys ( )
3348 define(
3349 Map.prototype, 'keys',
3350 function keys() {
3351 var m = strict(this);
3352 if (Type(m) !== 'object') throw TypeError();
3353 return CreateMapIterator(m, 'key');
3354 });
3355
3356 // 23.1.3.9 Map.prototype.set ( key , value )
3357 define(
3358 Map.prototype, 'set',
3359 function set(key, value) {
3360 var m = strict(this);
3361 if (Type(m) !== 'object') throw TypeError();
3362 if (!('[[MapData]]' in m)) throw TypeError();
3363 if (m['[[MapData]]'] === undefined) throw TypeError();
3364 var entries = m['[[MapData]]'];
3365 var i = MapDataIndexOf(entries, key);
3366 if (i < 0) i = entries.keys.length;
3367 if (SameValue(key, -0)) key = 0;
3368 entries.keys[i] = key;
3369 entries.values[i] = value;
3370 return m;
3371 });
3372
3373 // 23.1.3.10 get Map.prototype.size
3374 Object.defineProperty(
3375 Map.prototype, 'size', {
3376 get: function() {
3377 var m = strict(this);
3378 if (Type(m) !== 'object') throw TypeError();
3379 if (!('[[MapData]]' in m)) throw TypeError();
3380 if (m['[[MapData]]'] === undefined) throw TypeError();
3381 var entries = m['[[MapData]]'];
3382 var count = 0;
3383 for (var i = 0; i < entries.keys.length; ++i) {
3384 if (entries.keys[i] !== empty)
3385 count = count + 1;
3386 }
3387 return count;
3388 }
3389 });
3390
3391 // 23.1.3.11 Map.prototype.values ( )
3392 define(
3393 Map.prototype, 'values',
3394 function values() {
3395 var m = strict(this);
3396 if (Type(m) !== 'object') throw TypeError();
3397 return CreateMapIterator(m, 'value');
3398 });
3399
3400 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3401 define(
3402 Map.prototype, $$iterator,
3403 function() {
3404 var m = strict(this);
3405 if (Type(m) !== 'object') throw TypeError();
3406 return CreateMapIterator(m, 'key+value');
3407 });
3408
3409 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3410 define(global.Map.prototype, $$toStringTag, 'Map');
3411
3412 // 23.1.4 Properties of Map Instances
3413 // 23.1.5 Map Iterator Objects
3414
3415 /** @constructor */
3416 function MapIterator() {}
3417
3418 // 23.1.5.1 CreateMapIterator Abstract Operation
3419 function CreateMapIterator(map, kind) {
3420 if (Type(map) !== 'object') throw TypeError();
3421 if (!('[[MapData]]' in map)) throw TypeError();
3422 if (map['[[MapData]]'] === undefined) throw TypeError();
3423 var iterator = new MapIterator;
3424 set_internal(iterator, '[[Map]]', map);
3425 set_internal(iterator, '[[MapNextIndex]]', 0);
3426 set_internal(iterator, '[[MapIterationKind]]', kind);
3427 return iterator;
3428 }
3429
3430 // 23.1.5.2 The %MapIteratorPrototype% Object
3431 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3432 MapIterator.prototype = $MapIteratorPrototype$;
3433
3434 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3435 define(
3436 $MapIteratorPrototype$, 'next',
3437 function next() {
3438 var o = strict(this);
3439 if (Type(o) !== 'object') throw TypeError();
3440 var m = o['[[Map]]'],
3441 index = o['[[MapNextIndex]]'],
3442 itemKind = o['[[MapIterationKind]]'],
3443 entries = m['[[MapData]]'];
3444 while (index < entries.keys.length) {
3445 var e = {key: entries.keys[index], value: entries.values[index]};
3446 index = index += 1;
3447 set_internal(o, '[[MapNextIndex]]', index);
3448 if (e.key !== empty) {
3449 if (itemKind === 'key') {
3450 return CreateIterResultObject(e.key, false);
3451 } else if (itemKind === 'value') {
3452 return CreateIterResultObject(e.value, false);
3453 } else {
3454 return CreateIterResultObject([e.key, e.value], false);
3455 }
3456 }
3457 }
3458 return CreateIterResultObject(undefined, true);
3459 });
3460
3461 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3462 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3463
3464 // 23.1.5.3 Properties of Map Iterator Instances
3465 }());
3466
3467 // ---------------------------------------
3468 // 23.2 Set Objects
3469 // ---------------------------------------
3470
3471 (function() {
3472 // 23.2.1 The Set Constructor
3473 // 23.2.1.1 Set ( [ iterable ] )
3474
3475 /** @constructor */
3476 function Set(/*iterable*/) {
3477 var set = strict(this);
3478 var iterable = arguments[0];
3479
3480 if (Type(set) !== 'object') throw TypeError();
3481 if ('[[SetData]]' in set) throw TypeError();
3482
3483 if (iterable !== undefined) {
3484 var adder = set['add'];
3485 if (!IsCallable(adder)) throw TypeError();
3486 var iter = GetIterator(ToObject(iterable));
3487 }
3488 set_internal(set, '[[SetData]]', []);
3489 if (iter === undefined) return set;
3490 while (true) {
3491 var next = IteratorStep(iter);
3492 if (next === false)
3493 return set;
3494 var nextValue = IteratorValue(next);
3495 adder.call(set, nextValue);
3496 }
3497
3498 return set;
3499 }
3500
3501 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3502 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3503 (new global.Set([1]).size !== 1))
3504 global.Set = Set;
3505
3506 function SetDataIndexOf(setData, key) {
3507 var i;
3508 if (key === key)
3509 return setData.indexOf(key);
3510 // Slow case for NaN
3511 for (i = 0; i < setData.length; i += 1)
3512 if (SameValueZero(setData[i], key)) return i;
3513 return -1;
3514 }
3515
3516 // 23.2.1.2 new Set ( ...argumentsList )
3517 // 23.2.2 Properties of the Set Constructor
3518
3519 // 23.2.2.1 Set.prototype
3520 var $SetPrototype$ = {};
3521 Set.prototype = $SetPrototype$;
3522
3523 // 23.2.2.2 get Set [ @@species ]
3524 // 23.2.3 Properties of the Set Prototype Object
3525
3526 // 23.2.3.1 Set.prototype.add (value )
3527 define(
3528 Set.prototype, 'add',
3529 function add(value) {
3530 var s = strict(this);
3531 if (Type(s) !== 'object') throw TypeError();
3532 if (!('[[SetData]]' in s)) throw TypeError();
3533 if (s['[[SetData]]'] === undefined) throw TypeError();
3534 if (SameValue(value, -0)) value = 0;
3535 var entries = s['[[SetData]]'];
3536 var i = SetDataIndexOf(entries, value);
3537 if (i < 0) i = s['[[SetData]]'].length;
3538 s['[[SetData]]'][i] = value;
3539
3540 return s;
3541 });
3542
3543 // 23.2.3.2 Set.prototype.clear ()
3544 define(
3545 Set.prototype, 'clear',
3546 function clear() {
3547 var s = strict(this);
3548 if (Type(s) !== 'object') throw TypeError();
3549 if (!('[[SetData]]' in s)) throw TypeError();
3550 if (s['[[SetData]]'] === undefined) throw TypeError();
3551 var entries = s['[[SetData]]'];
3552 entries.length = 0;
3553 return undefined;
3554 });
3555
3556 // 23.2.3.3 Set.prototype.constructor
3557 // 23.2.3.4 Set.prototype.delete ( value )
3558 define(
3559 Set.prototype, 'delete',
3560 function delete_(value) {
3561 var s = strict(this);
3562 if (Type(s) !== 'object') throw TypeError();
3563 if (!('[[SetData]]' in s)) throw TypeError();
3564 if (s['[[SetData]]'] === undefined) throw TypeError();
3565 var entries = s['[[SetData]]'];
3566 var i = SetDataIndexOf(entries, value);
3567 if (i < 0) return false;
3568 entries[i] = empty;
3569 return true;
3570 });
3571
3572 // 23.2.3.5 Set.prototype.entries ( )
3573 define(
3574 Set.prototype, 'entries',
3575 function entries() {
3576 var s = strict(this);
3577 if (Type(s) !== 'object') throw TypeError();
3578 return CreateSetIterator(s, 'key+value');
3579 });
3580
3581 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3582 define(
3583 Set.prototype, 'forEach',
3584 function forEach(callbackfn/*, thisArg*/) {
3585 var thisArg = arguments[1];
3586
3587 var s = strict(this);
3588 if (Type(s) !== 'object') throw TypeError();
3589 if (!('[[SetData]]' in s)) throw TypeError();
3590 if (s['[[SetData]]'] === undefined) throw TypeError();
3591 var entries = s['[[SetData]]'];
3592
3593 if (!IsCallable(callbackfn)) {
3594 throw TypeError('First argument to forEach is not callable.');
3595 }
3596 for (var i = 0; i < entries.length; ++i) {
3597 if (entries[i] !== empty) {
3598 callbackfn.call(thisArg, entries[i], entries[i], s);
3599 }
3600 }
3601 });
3602
3603 // 23.2.3.7 Set.prototype.has ( value )
3604 define(
3605 Set.prototype, 'has',
3606 function has(key) {
3607 var s = strict(this);
3608 if (Type(s) !== 'object') throw TypeError();
3609 if (!('[[SetData]]' in s)) throw TypeError();
3610 if (s['[[SetData]]'] === undefined) throw TypeError();
3611 var entries = s['[[SetData]]'];
3612 return SetDataIndexOf(entries, key) !== -1;
3613 });
3614
3615 // 23.2.3.8 Set.prototype.keys ( )
3616 // See Set.prototype.values
3617
3618 // 23.2.3.9 get Set.prototype.size
3619 Object.defineProperty(
3620 Set.prototype, 'size', {
3621 get: function() {
3622 var s = strict(this);
3623 if (Type(s) !== 'object') throw TypeError();
3624 if (!('[[SetData]]' in s)) throw TypeError();
3625 if (s['[[SetData]]'] === undefined) throw TypeError();
3626 var entries = s['[[SetData]]'];
3627 var count = 0;
3628 for (var i = 0; i < entries.length; ++i) {
3629 if (entries[i] !== empty)
3630 count = count + 1;
3631 }
3632 return count;
3633 }
3634 });
3635
3636 // 23.2.3.10 Set.prototype.values ( )
3637 define(
3638 Set.prototype, 'values',
3639 function values() {
3640 var s = strict(this);
3641 if (Type(s) !== 'object') throw TypeError();
3642 return CreateSetIterator(s, 'value');
3643 });
3644 // NOTE: function name is still 'values':
3645 Set.prototype.keys = Set.prototype.values;
3646
3647 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3648 define(
3649 Set.prototype, $$iterator,
3650 function() {
3651 var s = strict(this);
3652 if (Type(s) !== 'object') throw TypeError();
3653 return CreateSetIterator(s);
3654 });
3655
3656 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3657 define(global.Set.prototype, $$toStringTag, 'Set');
3658
3659 // 23.2.4 Properties of Set Instances
3660 // 23.2.5 Set Iterator Objects
3661 /** @constructor */
3662 function SetIterator() {}
3663
3664 // 23.2.5.1 CreateSetIterator Abstract Operation
3665 function CreateSetIterator(set, kind) {
3666 if (Type(set) !== 'object') throw TypeError();
3667 if (!('[[SetData]]' in set)) throw TypeError();
3668 if (set['[[SetData]]'] === undefined) throw TypeError();
3669 var iterator = new SetIterator;
3670 set_internal(iterator, '[[IteratedSet]]', set);
3671 set_internal(iterator, '[[SetNextIndex]]', 0);
3672 set_internal(iterator, '[[SetIterationKind]]', kind);
3673 return iterator;
3674 }
3675
3676 // 23.2.5.2 The %SetIteratorPrototype% Object
3677 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3678 SetIterator.prototype = $SetIteratorPrototype$;
3679
3680 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3681 define(
3682 $SetIteratorPrototype$, 'next',
3683 function next() {
3684 var o = strict(this);
3685 if (Type(o) !== 'object') throw TypeError();
3686 var s = o['[[IteratedSet]]'],
3687 index = o['[[SetNextIndex]]'],
3688 itemKind = o['[[SetIterationKind]]'],
3689 entries = s['[[SetData]]'];
3690 while (index < entries.length) {
3691 var e = entries[index];
3692 index = index += 1;
3693 set_internal(o, '[[SetNextIndex]]', index);
3694 if (e !== empty) {
3695 if (itemKind === 'key+value')
3696 return CreateIterResultObject([e, e], false);
3697 return CreateIterResultObject(e, false);
3698 }
3699 }
3700 return CreateIterResultObject(undefined, true);
3701 });
3702
3703 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3704 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3705
3706 // 23.2.5.3 Properties of Set Iterator Instances
3707
3708 }());
3709
3710 // ---------------------------------------
3711 // 23.3 WeakMap Objects
3712 // ---------------------------------------
3713
3714 (function() {
3715 // 23.3.1 The WeakMap Constructor
3716 // 23.3.1.1 WeakMap ( [ iterable ] )
3717 /** @constructor */
3718 function WeakMap(/*iterable*/) {
3719 var map = strict(this);
3720 var iterable = arguments[0];
3721
3722 if (Type(map) !== 'object') throw TypeError();
3723 if ('[[WeakMapData]]' in map) throw TypeError();
3724
3725 if (iterable !== undefined) {
3726 var adder = map['set'];
3727 if (!IsCallable(adder)) throw TypeError();
3728 var iter = GetIterator(ToObject(iterable));
3729 }
3730 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3731 if (iter === undefined) return map;
3732 while (true) {
3733 var next = IteratorStep(iter);
3734 if (next === false)
3735 return map;
3736 var nextValue = IteratorValue(next);
3737 if (Type(nextValue) !== 'object') throw TypeError();
3738 var k = nextValue[0];
3739 var v = nextValue[1];
3740 adder.call(map, k, v);
3741 }
3742
3743 return map;
3744 }
3745
3746 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3747 global.WeakMap = WeakMap;
3748
3749 // 23.3.2 Properties of the WeakMap Constructor
3750 // 23.3.2.1 WeakMap.prototype
3751 var $WeakMapPrototype$ = {};
3752 WeakMap.prototype = $WeakMapPrototype$;
3753
3754
3755
3756 // 23.3.2.2 WeakMap[ @@create ] ( )
3757 // 23.3.3 Properties of the WeakMap Prototype Object
3758
3759 // 23.3.3.1 WeakMap.prototype.constructor
3760
3761 // 23.3.3.2 WeakMap.prototype.delete ( key )
3762 define(
3763 WeakMap.prototype, 'delete',
3764 function delete_(key) {
3765 var M = strict(this);
3766 if (Type(M) !== 'object') throw TypeError();
3767 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3768 if (Type(key) !== 'object') throw TypeError('Expected object');
3769 return M['[[WeakMapData]]'].remove(key);
3770 });
3771
3772 // 23.3.3.3 WeakMap.prototype.get ( key )
3773 define(
3774 WeakMap.prototype, 'get',
3775 function get(key, defaultValue) {
3776 var M = strict(this);
3777 if (Type(M) !== 'object') throw TypeError();
3778 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3779 if (Type(key) !== 'object') throw TypeError('Expected object');
3780 return M['[[WeakMapData]]'].get(key, defaultValue);
3781 });
3782
3783 // 23.3.3.4 WeakMap.prototype.has ( key )
3784 define(
3785 WeakMap.prototype, 'has',
3786 function has(key) {
3787 var M = strict(this);
3788 if (Type(M) !== 'object') throw TypeError();
3789 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3790 if (Type(key) !== 'object') throw TypeError('Expected object');
3791 return M['[[WeakMapData]]'].has(key);
3792 });
3793
3794 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3795 define(
3796 WeakMap.prototype, 'set',
3797 function set(key, value) {
3798 var M = strict(this);
3799 if (Type(M) !== 'object') throw TypeError();
3800 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3801 if (Type(key) !== 'object') throw TypeError('Expected object');
3802 M['[[WeakMapData]]'].set(key, value);
3803 return M;
3804 });
3805
3806 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3807 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3808
3809 // 23.3.4 Properties of WeakMap Instances
3810
3811 // Polyfills for incomplete native implementations:
3812 (function() {
3813 var wm = new global.WeakMap();
3814 var orig = global.WeakMap.prototype.set;
3815 define(global.WeakMap.prototype, 'set', function set() {
3816 orig.apply(this, arguments);
3817 return this;
3818 }, wm.set({}, 0) !== wm);
3819 }());
3820 }());
3821
3822 // ---------------------------------------
3823 // 23.4 WeakSet Objects
3824 // ---------------------------------------
3825
3826 (function() {
3827 // 23.4.1 The WeakSet Constructor
3828 // 23.4.1.1 WeakSet ( [ iterable ] )
3829 /** @constructor */
3830 function WeakSet(/*iterable*/) {
3831 var set = strict(this);
3832 var iterable = arguments[0];
3833
3834 if (Type(set) !== 'object') throw TypeError();
3835 if ('[[WeakSetData]]' in set) throw TypeError();
3836
3837 if (iterable !== undefined) {
3838 var adder = set['add'];
3839 if (!IsCallable(adder)) throw TypeError();
3840 var iter = GetIterator(ToObject(iterable));
3841 }
3842 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3843 if (iter === undefined) return set;
3844 while (true) {
3845 var next = IteratorStep(iter);
3846 if (next === false)
3847 return set;
3848 var nextValue = IteratorValue(next);
3849 adder.call(set, nextValue);
3850 }
3851
3852 return set;
3853 }
3854
3855 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3856 global.WeakSet = WeakSet;
3857
3858 // 23.4.2 Properties of the WeakSet Constructor
3859 // 23.4.2.1 WeakSet.prototype
3860 var $WeakSetPrototype$ = {};
3861 WeakSet.prototype = $WeakSetPrototype$;
3862
3863 // 23.4.3 Properties of the WeakSet Prototype Object
3864 // 23.4.3.1 WeakSet.prototype.add (value )
3865 define(
3866 WeakSet.prototype, 'add',
3867 function add(value) {
3868 var S = strict(this);
3869 if (Type(S) !== 'object') throw TypeError();
3870 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3871 if (Type(value) !== 'object') throw TypeError('Expected object');
3872 S['[[WeakSetData]]'].set(value, true);
3873 return S;
3874 });
3875
3876 // 23.4.3.2 WeakSet.prototype.constructor
3877 // 23.4.3.3 WeakSet.prototype.delete ( value )
3878 define(
3879 WeakSet.prototype, 'delete',
3880 function delete_(value) {
3881 var S = strict(this);
3882 if (Type(S) !== 'object') throw TypeError();
3883 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3884 if (Type(value) !== 'object') throw TypeError('Expected object');
3885 return S['[[WeakSetData]]'].remove(value);
3886 });
3887
3888 // 23.4.3.4 WeakSet.prototype.has ( value )
3889 define(
3890 WeakSet.prototype, 'has',
3891 function has(key) {
3892 var S = strict(this);
3893 if (Type(S) !== 'object') throw TypeError();
3894 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3895 if (Type(key) !== 'object') throw TypeError('Expected object');
3896 return S['[[WeakSetData]]'].has(key);
3897 });
3898
3899 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3900 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3901
3902 // 23.4.4 Properties of WeakSet Instances
3903
3904 // Polyfills for incomplete native implementations:
3905 (function() {
3906 var ws = new global.WeakSet();
3907 var orig = global.WeakSet.prototype.add;
3908 define(global.WeakSet.prototype, 'add', function add() {
3909 orig.apply(this, arguments);
3910 return this;
3911 }, ws.add({}) !== ws);
3912 }());
3913 }());
3914
3915 // ---------------------------------------
3916 // 24 Structured Data
3917 // ---------------------------------------
3918
3919 // ---------------------------------------
3920 // 24.1 ArrayBuffer Objects
3921 // ---------------------------------------
3922
3923 // See typedarray.js for TypedArray polyfill
3924
3925 (function() {
3926 if (!('ArrayBuffer' in global))
3927 return;
3928
3929 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3930 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3931 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3932 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3933 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3934 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3935 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3936 // 24.1.2 The ArrayBuffer Constructor
3937 // 24.1.2.1 ArrayBuffer( length )
3938 // 24.1.3 Properties of the ArrayBuffer Constructor
3939
3940 // 24.1.3.1 ArrayBuffer.isView ( arg )
3941 define(
3942 ArrayBuffer, 'isView',
3943 function isView(arg) {
3944 if (Type(arg) !== 'object') return false;
3945 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3946 return false;
3947 });
3948
3949 // 24.1.3.2 ArrayBuffer.prototype
3950 // 24.1.3.3 get ArrayBuffer [ @@species ]
3951 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3952 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3953 // 24.1.4.2 ArrayBuffer.prototype.constructor
3954 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3955
3956 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3957 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3958
3959 // 24.1.5 Properties of the ArrayBuffer Instances
3960 }());
3961
3962 // ---------------------------------------
3963 // 24.2 DataView Objects
3964 // ---------------------------------------
3965
3966 // See typedarray.js for TypedArray polyfill
3967
3968 (function() {
3969 if (!('DataView' in global))
3970 return;
3971
3972 // 24.2.1 Abstract Operations For DataView Objects
3973 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3974 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3975 // 24.2.2 The DataView Constructor
3976 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3977 // 24.2.3 Properties of the DataView Constructor
3978 // 24.2.3.1 DataView.prototype
3979 // 24.2.4 Properties of the DataView Prototype Object
3980 // 24.2.4.1 get DataView.prototype.buffer
3981 // 24.2.4.2 get DataView.prototype.byteLength
3982 // 24.2.4.3 get DataView.prototype.byteOffset
3983 // 24.2.4.4 DataView.prototype.constructor
3984 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3985 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3986 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3987 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3988 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3989 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3990 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3991 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3992 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3993 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3994 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3995 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3996 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3997 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3998 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3999 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
4000
4001 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
4002 define(DataView.prototype, $$toStringTag, 'DataView');
4003
4004 // 24.2.5 Properties of DataView Instances
4005 }());
4006
4007 // ---------------------------------------
4008 // 24.3 The JSON Object
4009 // ---------------------------------------
4010
4011 // 24.3.1 JSON.parse ( text [ , reviver ] )
4012 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
4013 // 24.3.3 JSON [ @@toStringTag ]
4014 define(JSON, $$toStringTag, 'JSON');
4015
4016 // ---------------------------------------
4017 // 25.1 Iteration
4018 // ---------------------------------------
4019
4020 // 25.1.1 Common Iteration Interfaces
4021 // 25.1.1.1 The Iterable Interface
4022 // 25.1.1.2 The Iterator Interface
4023 // 25.1.1.3 The IteratorResult Interface
4024
4025 // 25.1.2 The %IteratorPrototype% Object
4026 // Defined earlier, so other prototypes can reference it.
4027 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
4028 define($IteratorPrototype$, $$iterator, function() {
4029 return this;
4030 });
4031
4032
4033 // ---------------------------------------
4034 // 25.4 Promise Objects
4035 // ---------------------------------------
4036
4037 (function() {
4038 // 25.4 Promise Objects
4039
4040 // 25.4.1 Promise Abstract Operations
4041
4042 // 25.4.1.1 PromiseCapability Records
4043 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4044
4045 function IfAbruptRejectPromise(value, capability) {
4046 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4047 return capability['[[Promise]]'];
4048 }
4049
4050 // 25.4.1.2 PromiseReaction Records
4051
4052 // 25.4.1.3 CreateResolvingFunctions ( promise )
4053
4054 function CreateResolvingFunctions(promise) {
4055 var alreadyResolved = {'[[value]]': false};
4056 var resolve = PromiseResolveFunction();
4057 set_internal(resolve, '[[Promise]]', promise);
4058 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4059 var reject = PromiseRejectFunction();
4060 set_internal(reject, '[[Promise]]', promise);
4061 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4062 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4063 }
4064
4065 // 25.4.1.3.1 Promise Reject Functions
4066
4067 function PromiseRejectFunction() {
4068 var F = function(reason) {
4069 console.assert(Type(F['[[Promise]]']) === 'object');
4070 var promise = F['[[Promise]]'];
4071 var alreadyResolved = F['[[AlreadyResolved]]'];
4072 if (alreadyResolved['[[value]]']) return undefined;
4073 set_internal(alreadyResolved, '[[value]]', true);
4074 return RejectPromise(promise, reason);
4075 };
4076 return F;
4077 }
4078
4079 // 25.4.1.3.2 Promise Resolve Functions
4080
4081 function PromiseResolveFunction() {
4082 var F = function(resolution) {
4083 console.assert(Type(F['[[Promise]]']) === 'object');
4084 var promise = F['[[Promise]]'];
4085 var alreadyResolved = F['[[AlreadyResolved]]'];
4086 if (alreadyResolved['[[value]]']) return undefined;
4087 set_internal(alreadyResolved, '[[value]]', true);
4088
4089 if (SameValue(resolution, promise)) {
4090 var selfResolutionError = TypeError();
4091 return RejectPromise(promise, selfResolutionError);
4092 }
4093 if (Type(resolution) !== 'object')
4094 return FulfillPromise(promise, resolution);
4095 try {
4096 var then = resolution['then'];
4097 } catch(then) {
4098 return RejectPromise(promise, then);
4099 }
4100 if (!IsCallable(then))
4101 return FulfillPromise(promise, resolution);
4102 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4103 return undefined;
4104 };
4105 return F;
4106 }
4107
4108 // 25.4.1.4 FulfillPromise ( promise, value )
4109
4110 function FulfillPromise(promise, value) {
4111 console.assert(promise['[[PromiseState]]'] === 'pending');
4112 var reactions = promise['[[PromiseFulfillReactions]]'];
4113 set_internal(promise, '[[PromiseResult]]', value);
4114 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4115 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4116 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4117 return TriggerPromiseReactions(reactions, value);
4118 }
4119
4120 // 25.4.1.5 NewPromiseCapability ( C )
4121
4122 function NewPromiseCapability(c) {
4123 // To keep Promise hermetic, this doesn't look much like the spec.
4124 return CreatePromiseCapabilityRecord(undefined, c);
4125 }
4126
4127 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4128
4129 function CreatePromiseCapabilityRecord(promise, constructor) {
4130 // To keep Promise hermetic, this doesn't look much like the spec.
4131 console.assert(IsConstructor(constructor));
4132 var promiseCapability = {};
4133 set_internal(promiseCapability, '[[Promise]]', promise);
4134 set_internal(promiseCapability, '[[Resolve]]', undefined);
4135 set_internal(promiseCapability, '[[Reject]]', undefined);
4136 var executor = GetCapabilitiesExecutor();
4137 set_internal(executor, '[[Capability]]', promiseCapability);
4138
4139 // NOTE: Differs from spec; object is constructed here
4140 var constructorResult = promise = new constructor(executor);
4141 set_internal(promiseCapability, '[[Promise]]', promise);
4142
4143 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4144 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4145 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4146 return promiseCapability;
4147 }
4148
4149 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4150
4151 function GetCapabilitiesExecutor() {
4152 var F = function(resolve, reject) {
4153 console.assert(F['[[Capability]]']);
4154 var promiseCapability = F['[[Capability]]'];
4155 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4156 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4157 set_internal(promiseCapability, '[[Resolve]]', resolve);
4158 set_internal(promiseCapability, '[[Reject]]', reject);
4159 return undefined;
4160 };
4161 return F;
4162 }
4163
4164 // 25.4.1.6 IsPromise ( x )
4165
4166 function IsPromise(x) {
4167 if (Type(x) !== 'object') return false;
4168 if (!('[[PromiseState]]' in x)) return false;
4169 if (x['[[PromiseState]]'] === undefined) return false;
4170 return true;
4171 }
4172
4173 // 25.4.1.7 RejectPromise ( promise, reason )
4174
4175 function RejectPromise(promise, reason) {
4176 console.assert(promise['[[PromiseState]]'] === 'pending');
4177 var reactions = promise['[[PromiseRejectReactions]]'];
4178 set_internal(promise, '[[PromiseResult]]', reason);
4179 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4180 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4181 set_internal(promise, '[[PromiseState]]', 'rejected');
4182 return TriggerPromiseReactions(reactions, reason);
4183 }
4184
4185 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4186
4187 function TriggerPromiseReactions(reactions, argument) {
4188 for (var i = 0, len = reactions.length; i < len; ++i)
4189 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4190 return undefined;
4191 }
4192
4193 // 25.4.2 Promise Jobs
4194
4195 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4196
4197 function PromiseReactionJob(reaction, argument) {
4198 var promiseCapability = reaction['[[Capabilities]]'];
4199 var handler = reaction['[[Handler]]'];
4200 var handlerResult, status;
4201 try {
4202 if (handler === 'Identity') handlerResult = argument;
4203 else if (handler === 'Thrower') throw argument;
4204 else handlerResult = handler.call(undefined, argument);
4205 } catch (handlerResult) {
4206 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4207 NextJob(status); return;
4208 }
4209 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4210 NextJob(status);
4211 }
4212
4213 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4214
4215 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4216 // SPEC BUG: promise vs. promiseToResolve
4217 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4218 try {
4219 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4220 resolvingFunctions['[[Reject]]']);
4221 } catch (thenCallResult) {
4222 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4223 NextJob(status); return;
4224 }
4225 NextJob(thenCallResult);
4226 }
4227
4228 // 25.4.3 The Promise Constructor
4229
4230 // 25.4.3.1 Promise ( executor )
4231
4232 function Promise(executor) {
4233 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4234 Object.defineProperty(this, '[[PromiseState]]', config);
4235 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4236 Object.defineProperty(this, '[[PromiseResult]]', config);
4237 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4238 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4239
4240 var promise = this;
4241 if (Type(promise) !== 'object') throw new TypeError();
4242 if (!('[[PromiseState]]' in promise)) throw TypeError();
4243 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4244 if (!IsCallable(executor)) throw TypeError();
4245
4246 set_internal(promise, '[[PromiseConstructor]]', Promise);
4247
4248 return InitializePromise(promise, executor);
4249 }
4250
4251 // 25.4.3.1.1 InitializePromise ( promise, executor )
4252
4253 function InitializePromise(promise, executor) {
4254 console.assert('[[PromiseState]]' in promise);
4255 console.assert(IsCallable(executor));
4256 set_internal(promise, '[[PromiseState]]', 'pending');
4257 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4258 set_internal(promise, '[[PromiseRejectReactions]]', []);
4259 var resolvingFunctions = CreateResolvingFunctions(promise);
4260 try {
4261 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4262 resolvingFunctions['[[Reject]]']);
4263 } catch (completion) {
4264 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4265 }
4266 return promise;
4267 }
4268
4269 // 25.4.4 Properties of the Promise Constructor
4270 // 25.4.4.1 Promise.all ( iterable )
4271
4272 define(Promise, 'all', function all(iterable) {
4273 var c = strict(this);
4274 var promiseCapability = NewPromiseCapability(c);
4275 try {
4276 var iterator = GetIterator(iterable);
4277 } catch (value) {
4278 promiseCapability['[[Reject]]'].call(undefined, value);
4279 return promiseCapability['[[Promise]]'];
4280 }
4281 var values = [];
4282 var remainingElementsCount = { value: 1 };
4283 var index = 0;
4284 while (true) {
4285 try {
4286 var next = IteratorStep(iterator);
4287 } catch (value) {
4288 promiseCapability['[[Reject]]'].call(undefined, value);
4289 return promiseCapability['[[Promise]]'];
4290 }
4291 if (!next) {
4292 remainingElementsCount.value -= 1;
4293 if (remainingElementsCount.value === 0) {
4294 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4295
4296
4297 }
4298 return promiseCapability['[[Promise]]'];
4299 }
4300 try {
4301 var nextValue = IteratorValue(next);
4302 } catch (value) {
4303 promiseCapability['[[Reject]]'].call(undefined, value);
4304 return promiseCapability['[[Promise]]'];
4305 }
4306 try {
4307 var nextPromise = c.resolve(nextValue);
4308 } catch (value) {
4309 promiseCapability['[[Reject]]'].call(undefined, value);
4310 return promiseCapability['[[Promise]]'];
4311 }
4312 var resolveElement = PromiseAllResolveElementFunction();
4313 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4314 set_internal(resolveElement, '[[Index]]', index);
4315 set_internal(resolveElement, '[[Values]]', values);
4316 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4317 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4318 remainingElementsCount.value += 1;
4319 try {
4320 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4321 } catch (value) {
4322 promiseCapability['[[Reject]]'].call(undefined, value);
4323 return promiseCapability['[[Promise]]'];
4324 }
4325 index += 1;
4326 }
4327 });
4328
4329 // 25.4.4.1.1 Promise.all Resolve Element Functions
4330
4331 function PromiseAllResolveElementFunction() {
4332 var F = function(x) {
4333 var alreadyCalled = F['[[AlreadyCalled]]'];
4334 if (alreadyCalled.value) return undefined;
4335 alreadyCalled.value = true;
4336 var index = F['[[Index]]'];
4337 var values = F['[[Values]]'];
4338 var promiseCapability = F['[[Capabilities]]'];
4339 var remainingElementsCount = F['[[RemainingElements]]'];
4340 try {
4341 values[index] = x;
4342 } catch (result) {
4343 promiseCapability['[[Reject]]'].call(undefined, result);
4344 return promiseCapability['[[Promise]]'];
4345 }
4346 remainingElementsCount.value -= 1;
4347 if (remainingElementsCount.value === 0)
4348 return promiseCapability['[[Resolve]]'].call(undefined, values);
4349 return undefined;
4350 };
4351 return F;
4352 }
4353
4354 // 25.4.4.2 Promise.prototype
4355
4356 Promise.prototype = {};
4357
4358 // 25.4.4.3 Promise.race ( iterable )
4359
4360 define(Promise, 'race', function race(iterable) {
4361 var c = strict(this);
4362 var promiseCapability = NewPromiseCapability(c);
4363 try {
4364 var iterator = GetIterator(iterable);
4365 } catch (value) {
4366 promiseCapability['[[Reject]]'].call(undefined, value);
4367 return promiseCapability['[[Promise]]'];
4368 }
4369 while (true) {
4370 try {
4371 var next = IteratorStep(iterator);
4372 } catch (value) {
4373 promiseCapability['[[Reject]]'].call(undefined, value);
4374 return promiseCapability['[[Promise]]'];
4375 }
4376 if (!next) return promiseCapability['[[Promise]]'];
4377 try {
4378 var nextValue = IteratorValue(next);
4379 } catch (value) {
4380 promiseCapability['[[Reject]]'].call(undefined, value);
4381 return promiseCapability['[[Promise]]'];
4382 }
4383 try {
4384 var nextPromise = c.resolve(nextValue);
4385 } catch (value) {
4386 promiseCapability['[[Reject]]'].call(undefined, value);
4387 return promiseCapability['[[Promise]]'];
4388 }
4389 try {
4390 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4391 } catch (value) {
4392 promiseCapability['[[Reject]]'].call(undefined, value);
4393 return promiseCapability['[[Promise]]'];
4394 }
4395 }
4396 });
4397
4398 // 25.4.4.4 Promise.reject ( r )
4399
4400 define(Promise, 'reject', function reject(r) {
4401 var c = strict(this);
4402 var promiseCapability = NewPromiseCapability(c);
4403 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4404 return promiseCapability['[[Promise]]'];
4405 });
4406
4407 // 25.4.4.5 Promise.resolve ( x )
4408
4409 define(Promise, 'resolve', function resolve(x) {
4410 var c = strict(this);
4411 if (IsPromise(x)) {
4412 var constructor = x['[[PromiseConstructor]]'];
4413 if (SameValue(constructor, c)) return x;
4414 }
4415 var promiseCapability = NewPromiseCapability(c);
4416 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4417 return promiseCapability['[[Promise]]'];
4418 });
4419
4420 // 25.4.4.6 Promise [ @@create ] ( )
4421 // 25.4.4.6.1 AllocatePromise ( constructor )
4422 // 25.4.5 Properties of the Promise Prototype Object
4423 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4424
4425 define(Promise.prototype, 'catch', function catch_(onRejected) {
4426 var promise = this;
4427 return promise.then(undefined, onRejected);
4428 });
4429
4430 // 25.4.5.2 Promise.prototype.constructor
4431
4432 Promise.prototype.constructor = Promise;
4433
4434 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4435
4436 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4437 var promise = this;
4438 if (!IsPromise(promise)) throw TypeError();
4439 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4440 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4441 var c = promise.constructor;
4442 var promiseCapability = NewPromiseCapability(c);
4443 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4444 '[[Handler]]': onFulfilled };
4445 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4446 '[[Handler]]': onRejected };
4447 if (promise['[[PromiseState]]'] === 'pending') {
4448 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4449 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4450 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4451 var value = promise['[[PromiseResult]]'];
4452 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4453 } else if (promise['[[PromiseState]]'] === 'rejected') {
4454 var reason = promise['[[PromiseResult]]'];
4455 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4456 }
4457 return promiseCapability['[[Promise]]'];
4458 });
4459
4460 // 25.4.6 Properties of Promise Instances
4461
4462 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4463 global.Promise = Promise;
4464
4465 // Patch early Promise.cast vs. Promise.resolve implementations
4466 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4467 }());
4468
4469 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4470 define(Promise.prototype, $$toStringTag, 'Promise');
4471
4472 // ---------------------------------------
4473 // 26 Reflection
4474 // ---------------------------------------
4475
4476 (function() {
4477 // 26.1 The Reflect Object
4478 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4479 global.Reflect = {};
4480
4481 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4482 define(
4483 Reflect, 'apply',
4484 function apply(target, thisArgument, argumentsList) {
4485 if (!IsCallable(target)) throw TypeError();
4486 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4487 });
4488
4489 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4490 define(
4491 Reflect, 'construct',
4492 function construct(target, argumentsList) {
4493 return __cons(target, argumentsList);
4494 });
4495
4496 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4497 define(
4498 Reflect, 'defineProperty',
4499 function defineProperty(target, propertyKey, attributes) {
4500 try {
4501 Object.defineProperty(target, propertyKey, attributes);
4502 return true;
4503 } catch (_) {
4504 return false;
4505 }
4506 });
4507
4508 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4509 define(
4510 Reflect, 'deleteProperty',
4511 function deleteProperty(target,name) {
4512 try {
4513 delete target[name];
4514 return !HasOwnProperty(target, name);
4515 } catch (_) {
4516 return false;
4517 }
4518 });
4519
4520 // 26.1.5 Reflect.enumerate ( target )
4521 define(
4522 Reflect, 'enumerate',
4523 function enumerate(target) {
4524 target = ToObject(target);
4525 var iterator = Enumerate(target);
4526 return iterator;
4527 });
4528
4529 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4530 define(
4531 Reflect, 'get',
4532 function get(target, name, receiver) {
4533 target = ToObject(target);
4534 name = String(name);
4535 receiver = (receiver === undefined) ? target : ToObject(receiver);
4536 var desc = getPropertyDescriptor(target, name);
4537 if (desc && 'get' in desc)
4538 return Function.prototype.call.call(desc['get'], receiver);
4539 return target[name];
4540 });
4541
4542 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4543 define(
4544 Reflect, 'getOwnPropertyDescriptor',
4545 Object.getOwnPropertyDescriptor);
4546
4547 // 26.1.8 Reflect.getPrototypeOf ( target )
4548 define(
4549 Reflect, 'getPrototypeOf',
4550 Object.getPrototypeOf);
4551
4552 // 26.1.9 Reflect.has ( target, propertyKey )
4553 define(
4554 Reflect, 'has',
4555 function has(target,name) {
4556 return String(name) in ToObject(target);
4557 });
4558
4559 // 26.1.10 Reflect.isExtensible (target)
4560 define(
4561 Reflect, 'isExtensible',
4562 Object.isExtensible);
4563
4564 // 26.1.11 Reflect.ownKeys ( target )
4565 define(
4566 Reflect, 'ownKeys',
4567 function ownKeys(target) {
4568 var obj = ToObject(target);
4569 return Object.getOwnPropertyNames(obj);
4570 });
4571
4572 // 26.1.12 Reflect.preventExtensions ( target )
4573 define(
4574 Reflect, 'preventExtensions',
4575 function preventExtensions(target) {
4576 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4577 });
4578
4579 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4580 define(
4581 Reflect, 'set',
4582 function set(target, name, value, receiver) {
4583 target = ToObject(target);
4584 name = String(name);
4585 receiver = (receiver === undefined) ? target : ToObject(receiver);
4586 var desc = getPropertyDescriptor(target, name);
4587 try {
4588 if (desc && 'set' in desc)
4589 Function.prototype.call.call(desc['set'], receiver, value);
4590 else
4591 target[name] = value;
4592 return true;
4593 } catch (_) {
4594 return false;
4595 }
4596 });
4597
4598 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4599 define(
4600 Reflect, 'setPrototypeOf',
4601 function setPrototypeOf(target, proto) {
4602 try {
4603 target.__proto__ = proto;
4604 return Reflect.getPrototypeOf(target) === proto;
4605 } catch(_) {
4606 return false;
4607 }
4608 });
4609
4610 }());
4611
4612 // ---------------------------------------
4613 // 26.2 Proxy Objects
4614 // ---------------------------------------
4615
4616 // Not polyfillable.
4617
4618 }(self));
4619
4620 // This helper is defined outside the main scope so that the use of
4621 // 'eval' does not taint the scope for minifiers.
4622 function __cons(t, a) {
4623 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4624 }
4625 </script>
4626 <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){
4627 'use strict'
4628
4629 exports.byteLength = byteLength
4630 exports.toByteArray = toByteArray
4631 exports.fromByteArray = fromByteArray
4632
4633 var lookup = []
4634 var revLookup = []
4635 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4636
4637 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4638 for (var i = 0, len = code.length; i < len; ++i) {
4639 lookup[i] = code[i]
4640 revLookup[code.charCodeAt(i)] = i
4641 }
4642
4643 revLookup['-'.charCodeAt(0)] = 62
4644 revLookup['_'.charCodeAt(0)] = 63
4645
4646 function placeHoldersCount (b64) {
4647 var len = b64.length
4648 if (len % 4 > 0) {
4649 throw new Error('Invalid string. Length must be a multiple of 4')
4650 }
4651
4652 // the number of equal signs (place holders)
4653 // if there are two placeholders, than the two characters before it
4654 // represent one byte
4655 // if there is only one, then the three characters before it represent 2 bytes
4656 // this is just a cheap hack to not do indexOf twice
4657 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4658 }
4659
4660 function byteLength (b64) {
4661 // base64 is 4/3 + up to two characters of the original data
4662 return b64.length * 3 / 4 - placeHoldersCount(b64)
4663 }
4664
4665 function toByteArray (b64) {
4666 var i, j, l, tmp, placeHolders, arr
4667 var len = b64.length
4668 placeHolders = placeHoldersCount(b64)
4669
4670 arr = new Arr(len * 3 / 4 - placeHolders)
4671
4672 // if there are placeholders, only get up to the last complete 4 chars
4673 l = placeHolders > 0 ? len - 4 : len
4674
4675 var L = 0
4676
4677 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4678 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4679 arr[L++] = (tmp >> 16) & 0xFF
4680 arr[L++] = (tmp >> 8) & 0xFF
4681 arr[L++] = tmp & 0xFF
4682 }
4683
4684 if (placeHolders === 2) {
4685 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4686 arr[L++] = tmp & 0xFF
4687 } else if (placeHolders === 1) {
4688 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4689 arr[L++] = (tmp >> 8) & 0xFF
4690 arr[L++] = tmp & 0xFF
4691 }
4692
4693 return arr
4694 }
4695
4696 function tripletToBase64 (num) {
4697 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4698 }
4699
4700 function encodeChunk (uint8, start, end) {
4701 var tmp
4702 var output = []
4703 for (var i = start; i < end; i += 3) {
4704 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4705 output.push(tripletToBase64(tmp))
4706 }
4707 return output.join('')
4708 }
4709
4710 function fromByteArray (uint8) {
4711 var tmp
4712 var len = uint8.length
4713 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4714 var output = ''
4715 var parts = []
4716 var maxChunkLength = 16383 // must be multiple of 3
4717
4718 // go through the array every three bytes, we'll deal with trailing stuff later
4719 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4720 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4721 }
4722
4723 // pad the end with zeros, but make sure to not forget the extra bytes
4724 if (extraBytes === 1) {
4725 tmp = uint8[len - 1]
4726 output += lookup[tmp >> 2]
4727 output += lookup[(tmp << 4) & 0x3F]
4728 output += '=='
4729 } else if (extraBytes === 2) {
4730 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4731 output += lookup[tmp >> 10]
4732 output += lookup[(tmp >> 4) & 0x3F]
4733 output += lookup[(tmp << 2) & 0x3F]
4734 output += '='
4735 }
4736
4737 parts.push(output)
4738
4739 return parts.join('')
4740 }
4741
4742 },{}],2:[function(require,module,exports){
4743 /*!
4744 * The buffer module from node.js, for the browser.
4745 *
4746 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4747 * @license MIT
4748 */
4749 /* eslint-disable no-proto */
4750
4751 'use strict'
4752
4753 var base64 = require('base64-js')
4754 var ieee754 = require('ieee754')
4755
4756 exports.Buffer = Buffer
4757 exports.SlowBuffer = SlowBuffer
4758 exports.INSPECT_MAX_BYTES = 50
4759
4760 var K_MAX_LENGTH = 0x7fffffff
4761 exports.kMaxLength = K_MAX_LENGTH
4762
4763 /**
4764 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4765 * === true Use Uint8Array implementation (fastest)
4766 * === false Print warning and recommend using `buffer` v4.x which has an Object
4767 * implementation (most compatible, even IE6)
4768 *
4769 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4770 * Opera 11.6+, iOS 4.2+.
4771 *
4772 * We report that the browser does not support typed arrays if the are not subclassable
4773 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4774 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4775 * for __proto__ and has a buggy typed array implementation.
4776 */
4777 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4778
4779 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4780 typeof console.error === 'function') {
4781 console.error(
4782 'This browser lacks typed array (Uint8Array) support which is required by ' +
4783 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4784 )
4785 }
4786
4787 function typedArraySupport () {
4788 // Can typed array instances can be augmented?
4789 try {
4790 var arr = new Uint8Array(1)
4791 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4792 return arr.foo() === 42
4793 } catch (e) {
4794 return false
4795 }
4796 }
4797
4798 function createBuffer (length) {
4799 if (length > K_MAX_LENGTH) {
4800 throw new RangeError('Invalid typed array length')
4801 }
4802 // Return an augmented `Uint8Array` instance
4803 var buf = new Uint8Array(length)
4804 buf.__proto__ = Buffer.prototype
4805 return buf
4806 }
4807
4808 /**
4809 * The Buffer constructor returns instances of `Uint8Array` that have their
4810 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4811 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4812 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4813 * returns a single octet.
4814 *
4815 * The `Uint8Array` prototype remains unmodified.
4816 */
4817
4818 function Buffer (arg, encodingOrOffset, length) {
4819 // Common case.
4820 if (typeof arg === 'number') {
4821 if (typeof encodingOrOffset === 'string') {
4822 throw new Error(
4823 'If encoding is specified then the first argument must be a string'
4824 )
4825 }
4826 return allocUnsafe(arg)
4827 }
4828 return from(arg, encodingOrOffset, length)
4829 }
4830
4831 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4832 if (typeof Symbol !== 'undefined' && Symbol.species &&
4833 Buffer[Symbol.species] === Buffer) {
4834 Object.defineProperty(Buffer, Symbol.species, {
4835 value: null,
4836 configurable: true,
4837 enumerable: false,
4838 writable: false
4839 })
4840 }
4841
4842 Buffer.poolSize = 8192 // not used by this implementation
4843
4844 function from (value, encodingOrOffset, length) {
4845 if (typeof value === 'number') {
4846 throw new TypeError('"value" argument must not be a number')
4847 }
4848
4849 if (value instanceof ArrayBuffer) {
4850 return fromArrayBuffer(value, encodingOrOffset, length)
4851 }
4852
4853 if (typeof value === 'string') {
4854 return fromString(value, encodingOrOffset)
4855 }
4856
4857 return fromObject(value)
4858 }
4859
4860 /**
4861 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4862 * if value is a number.
4863 * Buffer.from(str[, encoding])
4864 * Buffer.from(array)
4865 * Buffer.from(buffer)
4866 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4867 **/
4868 Buffer.from = function (value, encodingOrOffset, length) {
4869 return from(value, encodingOrOffset, length)
4870 }
4871
4872 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4873 // https://github.com/feross/buffer/pull/148
4874 Buffer.prototype.__proto__ = Uint8Array.prototype
4875 Buffer.__proto__ = Uint8Array
4876
4877 function assertSize (size) {
4878 if (typeof size !== 'number') {
4879 throw new TypeError('"size" argument must be a number')
4880 } else if (size < 0) {
4881 throw new RangeError('"size" argument must not be negative')
4882 }
4883 }
4884
4885 function alloc (size, fill, encoding) {
4886 assertSize(size)
4887 if (size <= 0) {
4888 return createBuffer(size)
4889 }
4890 if (fill !== undefined) {
4891 // Only pay attention to encoding if it's a string. This
4892 // prevents accidentally sending in a number that would
4893 // be interpretted as a start offset.
4894 return typeof encoding === 'string'
4895 ? createBuffer(size).fill(fill, encoding)
4896 : createBuffer(size).fill(fill)
4897 }
4898 return createBuffer(size)
4899 }
4900
4901 /**
4902 * Creates a new filled Buffer instance.
4903 * alloc(size[, fill[, encoding]])
4904 **/
4905 Buffer.alloc = function (size, fill, encoding) {
4906 return alloc(size, fill, encoding)
4907 }
4908
4909 function allocUnsafe (size) {
4910 assertSize(size)
4911 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4912 }
4913
4914 /**
4915 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4916 * */
4917 Buffer.allocUnsafe = function (size) {
4918 return allocUnsafe(size)
4919 }
4920 /**
4921 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4922 */
4923 Buffer.allocUnsafeSlow = function (size) {
4924 return allocUnsafe(size)
4925 }
4926
4927 function fromString (string, encoding) {
4928 if (typeof encoding !== 'string' || encoding === '') {
4929 encoding = 'utf8'
4930 }
4931
4932 if (!Buffer.isEncoding(encoding)) {
4933 throw new TypeError('"encoding" must be a valid string encoding')
4934 }
4935
4936 var length = byteLength(string, encoding) | 0
4937 var buf = createBuffer(length)
4938
4939 var actual = buf.write(string, encoding)
4940
4941 if (actual !== length) {
4942 // Writing a hex string, for example, that contains invalid characters will
4943 // cause everything after the first invalid character to be ignored. (e.g.
4944 // 'abxxcd' will be treated as 'ab')
4945 buf = buf.slice(0, actual)
4946 }
4947
4948 return buf
4949 }
4950
4951 function fromArrayLike (array) {
4952 var length = array.length < 0 ? 0 : checked(array.length) | 0
4953 var buf = createBuffer(length)
4954 for (var i = 0; i < length; i += 1) {
4955 buf[i] = array[i] & 255
4956 }
4957 return buf
4958 }
4959
4960 function fromArrayBuffer (array, byteOffset, length) {
4961 if (byteOffset < 0 || array.byteLength < byteOffset) {
4962 throw new RangeError('\'offset\' is out of bounds')
4963 }
4964
4965 if (array.byteLength < byteOffset + (length || 0)) {
4966 throw new RangeError('\'length\' is out of bounds')
4967 }
4968
4969 var buf
4970 if (byteOffset === undefined && length === undefined) {
4971 buf = new Uint8Array(array)
4972 } else if (length === undefined) {
4973 buf = new Uint8Array(array, byteOffset)
4974 } else {
4975 buf = new Uint8Array(array, byteOffset, length)
4976 }
4977
4978 // Return an augmented `Uint8Array` instance
4979 buf.__proto__ = Buffer.prototype
4980 return buf
4981 }
4982
4983 function fromObject (obj) {
4984 if (Buffer.isBuffer(obj)) {
4985 var len = checked(obj.length) | 0
4986 var buf = createBuffer(len)
4987
4988 if (buf.length === 0) {
4989 return buf
4990 }
4991
4992 obj.copy(buf, 0, 0, len)
4993 return buf
4994 }
4995
4996 if (obj) {
4997 if (isArrayBufferView(obj) || 'length' in obj) {
4998 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4999 return createBuffer(0)
5000 }
5001 return fromArrayLike(obj)
5002 }
5003
5004 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
5005 return fromArrayLike(obj.data)
5006 }
5007 }
5008
5009 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
5010 }
5011
5012 function checked (length) {
5013 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
5014 // length is NaN (which is otherwise coerced to zero.)
5015 if (length >= K_MAX_LENGTH) {
5016 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
5017 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
5018 }
5019 return length | 0
5020 }
5021
5022 function SlowBuffer (length) {
5023 if (+length != length) { // eslint-disable-line eqeqeq
5024 length = 0
5025 }
5026 return Buffer.alloc(+length)
5027 }
5028
5029 Buffer.isBuffer = function isBuffer (b) {
5030 return b != null && b._isBuffer === true
5031 }
5032
5033 Buffer.compare = function compare (a, b) {
5034 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
5035 throw new TypeError('Arguments must be Buffers')
5036 }
5037
5038 if (a === b) return 0
5039
5040 var x = a.length
5041 var y = b.length
5042
5043 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
5044 if (a[i] !== b[i]) {
5045 x = a[i]
5046 y = b[i]
5047 break
5048 }
5049 }
5050
5051 if (x < y) return -1
5052 if (y < x) return 1
5053 return 0
5054 }
5055
5056 Buffer.isEncoding = function isEncoding (encoding) {
5057 switch (String(encoding).toLowerCase()) {
5058 case 'hex':
5059 case 'utf8':
5060 case 'utf-8':
5061 case 'ascii':
5062 case 'latin1':
5063 case 'binary':
5064 case 'base64':
5065 case 'ucs2':
5066 case 'ucs-2':
5067 case 'utf16le':
5068 case 'utf-16le':
5069 return true
5070 default:
5071 return false
5072 }
5073 }
5074
5075 Buffer.concat = function concat (list, length) {
5076 if (!Array.isArray(list)) {
5077 throw new TypeError('"list" argument must be an Array of Buffers')
5078 }
5079
5080 if (list.length === 0) {
5081 return Buffer.alloc(0)
5082 }
5083
5084 var i
5085 if (length === undefined) {
5086 length = 0
5087 for (i = 0; i < list.length; ++i) {
5088 length += list[i].length
5089 }
5090 }
5091
5092 var buffer = Buffer.allocUnsafe(length)
5093 var pos = 0
5094 for (i = 0; i < list.length; ++i) {
5095 var buf = list[i]
5096 if (!Buffer.isBuffer(buf)) {
5097 throw new TypeError('"list" argument must be an Array of Buffers')
5098 }
5099 buf.copy(buffer, pos)
5100 pos += buf.length
5101 }
5102 return buffer
5103 }
5104
5105 function byteLength (string, encoding) {
5106 if (Buffer.isBuffer(string)) {
5107 return string.length
5108 }
5109 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5110 return string.byteLength
5111 }
5112 if (typeof string !== 'string') {
5113 string = '' + string
5114 }
5115
5116 var len = string.length
5117 if (len === 0) return 0
5118
5119 // Use a for loop to avoid recursion
5120 var loweredCase = false
5121 for (;;) {
5122 switch (encoding) {
5123 case 'ascii':
5124 case 'latin1':
5125 case 'binary':
5126 return len
5127 case 'utf8':
5128 case 'utf-8':
5129 case undefined:
5130 return utf8ToBytes(string).length
5131 case 'ucs2':
5132 case 'ucs-2':
5133 case 'utf16le':
5134 case 'utf-16le':
5135 return len * 2
5136 case 'hex':
5137 return len >>> 1
5138 case 'base64':
5139 return base64ToBytes(string).length
5140 default:
5141 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5142 encoding = ('' + encoding).toLowerCase()
5143 loweredCase = true
5144 }
5145 }
5146 }
5147 Buffer.byteLength = byteLength
5148
5149 function slowToString (encoding, start, end) {
5150 var loweredCase = false
5151
5152 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5153 // property of a typed array.
5154
5155 // This behaves neither like String nor Uint8Array in that we set start/end
5156 // to their upper/lower bounds if the value passed is out of range.
5157 // undefined is handled specially as per ECMA-262 6th Edition,
5158 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5159 if (start === undefined || start < 0) {
5160 start = 0
5161 }
5162 // Return early if start > this.length. Done here to prevent potential uint32
5163 // coercion fail below.
5164 if (start > this.length) {
5165 return ''
5166 }
5167
5168 if (end === undefined || end > this.length) {
5169 end = this.length
5170 }
5171
5172 if (end <= 0) {
5173 return ''
5174 }
5175
5176 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5177 end >>>= 0
5178 start >>>= 0
5179
5180 if (end <= start) {
5181 return ''
5182 }
5183
5184 if (!encoding) encoding = 'utf8'
5185
5186 while (true) {
5187 switch (encoding) {
5188 case 'hex':
5189 return hexSlice(this, start, end)
5190
5191 case 'utf8':
5192 case 'utf-8':
5193 return utf8Slice(this, start, end)
5194
5195 case 'ascii':
5196 return asciiSlice(this, start, end)
5197
5198 case 'latin1':
5199 case 'binary':
5200 return latin1Slice(this, start, end)
5201
5202 case 'base64':
5203 return base64Slice(this, start, end)
5204
5205 case 'ucs2':
5206 case 'ucs-2':
5207 case 'utf16le':
5208 case 'utf-16le':
5209 return utf16leSlice(this, start, end)
5210
5211 default:
5212 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5213 encoding = (encoding + '').toLowerCase()
5214 loweredCase = true
5215 }
5216 }
5217 }
5218
5219 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5220 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5221 // reliably in a browserify context because there could be multiple different
5222 // copies of the 'buffer' package in use. This method works even for Buffer
5223 // instances that were created from another copy of the `buffer` package.
5224 // See: https://github.com/feross/buffer/issues/154
5225 Buffer.prototype._isBuffer = true
5226
5227 function swap (b, n, m) {
5228 var i = b[n]
5229 b[n] = b[m]
5230 b[m] = i
5231 }
5232
5233 Buffer.prototype.swap16 = function swap16 () {
5234 var len = this.length
5235 if (len % 2 !== 0) {
5236 throw new RangeError('Buffer size must be a multiple of 16-bits')
5237 }
5238 for (var i = 0; i < len; i += 2) {
5239 swap(this, i, i + 1)
5240 }
5241 return this
5242 }
5243
5244 Buffer.prototype.swap32 = function swap32 () {
5245 var len = this.length
5246 if (len % 4 !== 0) {
5247 throw new RangeError('Buffer size must be a multiple of 32-bits')
5248 }
5249 for (var i = 0; i < len; i += 4) {
5250 swap(this, i, i + 3)
5251 swap(this, i + 1, i + 2)
5252 }
5253 return this
5254 }
5255
5256 Buffer.prototype.swap64 = function swap64 () {
5257 var len = this.length
5258 if (len % 8 !== 0) {
5259 throw new RangeError('Buffer size must be a multiple of 64-bits')
5260 }
5261 for (var i = 0; i < len; i += 8) {
5262 swap(this, i, i + 7)
5263 swap(this, i + 1, i + 6)
5264 swap(this, i + 2, i + 5)
5265 swap(this, i + 3, i + 4)
5266 }
5267 return this
5268 }
5269
5270 Buffer.prototype.toString = function toString () {
5271 var length = this.length
5272 if (length === 0) return ''
5273 if (arguments.length === 0) return utf8Slice(this, 0, length)
5274 return slowToString.apply(this, arguments)
5275 }
5276
5277 Buffer.prototype.equals = function equals (b) {
5278 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5279 if (this === b) return true
5280 return Buffer.compare(this, b) === 0
5281 }
5282
5283 Buffer.prototype.inspect = function inspect () {
5284 var str = ''
5285 var max = exports.INSPECT_MAX_BYTES
5286 if (this.length > 0) {
5287 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5288 if (this.length > max) str += ' ... '
5289 }
5290 return '<Buffer ' + str + '>'
5291 }
5292
5293 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5294 if (!Buffer.isBuffer(target)) {
5295 throw new TypeError('Argument must be a Buffer')
5296 }
5297
5298 if (start === undefined) {
5299 start = 0
5300 }
5301 if (end === undefined) {
5302 end = target ? target.length : 0
5303 }
5304 if (thisStart === undefined) {
5305 thisStart = 0
5306 }
5307 if (thisEnd === undefined) {
5308 thisEnd = this.length
5309 }
5310
5311 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5312 throw new RangeError('out of range index')
5313 }
5314
5315 if (thisStart >= thisEnd && start >= end) {
5316 return 0
5317 }
5318 if (thisStart >= thisEnd) {
5319 return -1
5320 }
5321 if (start >= end) {
5322 return 1
5323 }
5324
5325 start >>>= 0
5326 end >>>= 0
5327 thisStart >>>= 0
5328 thisEnd >>>= 0
5329
5330 if (this === target) return 0
5331
5332 var x = thisEnd - thisStart
5333 var y = end - start
5334 var len = Math.min(x, y)
5335
5336 var thisCopy = this.slice(thisStart, thisEnd)
5337 var targetCopy = target.slice(start, end)
5338
5339 for (var i = 0; i < len; ++i) {
5340 if (thisCopy[i] !== targetCopy[i]) {
5341 x = thisCopy[i]
5342 y = targetCopy[i]
5343 break
5344 }
5345 }
5346
5347 if (x < y) return -1
5348 if (y < x) return 1
5349 return 0
5350 }
5351
5352 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5353 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5354 //
5355 // Arguments:
5356 // - buffer - a Buffer to search
5357 // - val - a string, Buffer, or number
5358 // - byteOffset - an index into `buffer`; will be clamped to an int32
5359 // - encoding - an optional encoding, relevant is val is a string
5360 // - dir - true for indexOf, false for lastIndexOf
5361 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5362 // Empty buffer means no match
5363 if (buffer.length === 0) return -1
5364
5365 // Normalize byteOffset
5366 if (typeof byteOffset === 'string') {
5367 encoding = byteOffset
5368 byteOffset = 0
5369 } else if (byteOffset > 0x7fffffff) {
5370 byteOffset = 0x7fffffff
5371 } else if (byteOffset < -0x80000000) {
5372 byteOffset = -0x80000000
5373 }
5374 byteOffset = +byteOffset // Coerce to Number.
5375 if (numberIsNaN(byteOffset)) {
5376 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5377 byteOffset = dir ? 0 : (buffer.length - 1)
5378 }
5379
5380 // Normalize byteOffset: negative offsets start from the end of the buffer
5381 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5382 if (byteOffset >= buffer.length) {
5383 if (dir) return -1
5384 else byteOffset = buffer.length - 1
5385 } else if (byteOffset < 0) {
5386 if (dir) byteOffset = 0
5387 else return -1
5388 }
5389
5390 // Normalize val
5391 if (typeof val === 'string') {
5392 val = Buffer.from(val, encoding)
5393 }
5394
5395 // Finally, search either indexOf (if dir is true) or lastIndexOf
5396 if (Buffer.isBuffer(val)) {
5397 // Special case: looking for empty string/buffer always fails
5398 if (val.length === 0) {
5399 return -1
5400 }
5401 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5402 } else if (typeof val === 'number') {
5403 val = val & 0xFF // Search for a byte value [0-255]
5404 if (typeof Uint8Array.prototype.indexOf === 'function') {
5405 if (dir) {
5406 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5407 } else {
5408 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5409 }
5410 }
5411 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5412 }
5413
5414 throw new TypeError('val must be string, number or Buffer')
5415 }
5416
5417 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5418 var indexSize = 1
5419 var arrLength = arr.length
5420 var valLength = val.length
5421
5422 if (encoding !== undefined) {
5423 encoding = String(encoding).toLowerCase()
5424 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5425 encoding === 'utf16le' || encoding === 'utf-16le') {
5426 if (arr.length < 2 || val.length < 2) {
5427 return -1
5428 }
5429 indexSize = 2
5430 arrLength /= 2
5431 valLength /= 2
5432 byteOffset /= 2
5433 }
5434 }
5435
5436 function read (buf, i) {
5437 if (indexSize === 1) {
5438 return buf[i]
5439 } else {
5440 return buf.readUInt16BE(i * indexSize)
5441 }
5442 }
5443
5444 var i
5445 if (dir) {
5446 var foundIndex = -1
5447 for (i = byteOffset; i < arrLength; i++) {
5448 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5449 if (foundIndex === -1) foundIndex = i
5450 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5451 } else {
5452 if (foundIndex !== -1) i -= i - foundIndex
5453 foundIndex = -1
5454 }
5455 }
5456 } else {
5457 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5458 for (i = byteOffset; i >= 0; i--) {
5459 var found = true
5460 for (var j = 0; j < valLength; j++) {
5461 if (read(arr, i + j) !== read(val, j)) {
5462 found = false
5463 break
5464 }
5465 }
5466 if (found) return i
5467 }
5468 }
5469
5470 return -1
5471 }
5472
5473 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5474 return this.indexOf(val, byteOffset, encoding) !== -1
5475 }
5476
5477 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5478 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5479 }
5480
5481 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5482 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5483 }
5484
5485 function hexWrite (buf, string, offset, length) {
5486 offset = Number(offset) || 0
5487 var remaining = buf.length - offset
5488 if (!length) {
5489 length = remaining
5490 } else {
5491 length = Number(length)
5492 if (length > remaining) {
5493 length = remaining
5494 }
5495 }
5496
5497 // must be an even number of digits
5498 var strLen = string.length
5499 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5500
5501 if (length > strLen / 2) {
5502 length = strLen / 2
5503 }
5504 for (var i = 0; i < length; ++i) {
5505 var parsed = parseInt(string.substr(i * 2, 2), 16)
5506 if (numberIsNaN(parsed)) return i
5507 buf[offset + i] = parsed
5508 }
5509 return i
5510 }
5511
5512 function utf8Write (buf, string, offset, length) {
5513 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5514 }
5515
5516 function asciiWrite (buf, string, offset, length) {
5517 return blitBuffer(asciiToBytes(string), buf, offset, length)
5518 }
5519
5520 function latin1Write (buf, string, offset, length) {
5521 return asciiWrite(buf, string, offset, length)
5522 }
5523
5524 function base64Write (buf, string, offset, length) {
5525 return blitBuffer(base64ToBytes(string), buf, offset, length)
5526 }
5527
5528 function ucs2Write (buf, string, offset, length) {
5529 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5530 }
5531
5532 Buffer.prototype.write = function write (string, offset, length, encoding) {
5533 // Buffer#write(string)
5534 if (offset === undefined) {
5535 encoding = 'utf8'
5536 length = this.length
5537 offset = 0
5538 // Buffer#write(string, encoding)
5539 } else if (length === undefined && typeof offset === 'string') {
5540 encoding = offset
5541 length = this.length
5542 offset = 0
5543 // Buffer#write(string, offset[, length][, encoding])
5544 } else if (isFinite(offset)) {
5545 offset = offset >>> 0
5546 if (isFinite(length)) {
5547 length = length >>> 0
5548 if (encoding === undefined) encoding = 'utf8'
5549 } else {
5550 encoding = length
5551 length = undefined
5552 }
5553 } else {
5554 throw new Error(
5555 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5556 )
5557 }
5558
5559 var remaining = this.length - offset
5560 if (length === undefined || length > remaining) length = remaining
5561
5562 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5563 throw new RangeError('Attempt to write outside buffer bounds')
5564 }
5565
5566 if (!encoding) encoding = 'utf8'
5567
5568 var loweredCase = false
5569 for (;;) {
5570 switch (encoding) {
5571 case 'hex':
5572 return hexWrite(this, string, offset, length)
5573
5574 case 'utf8':
5575 case 'utf-8':
5576 return utf8Write(this, string, offset, length)
5577
5578 case 'ascii':
5579 return asciiWrite(this, string, offset, length)
5580
5581 case 'latin1':
5582 case 'binary':
5583 return latin1Write(this, string, offset, length)
5584
5585 case 'base64':
5586 // Warning: maxLength not taken into account in base64Write
5587 return base64Write(this, string, offset, length)
5588
5589 case 'ucs2':
5590 case 'ucs-2':
5591 case 'utf16le':
5592 case 'utf-16le':
5593 return ucs2Write(this, string, offset, length)
5594
5595 default:
5596 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5597 encoding = ('' + encoding).toLowerCase()
5598 loweredCase = true
5599 }
5600 }
5601 }
5602
5603 Buffer.prototype.toJSON = function toJSON () {
5604 return {
5605 type: 'Buffer',
5606 data: Array.prototype.slice.call(this._arr || this, 0)
5607 }
5608 }
5609
5610 function base64Slice (buf, start, end) {
5611 if (start === 0 && end === buf.length) {
5612 return base64.fromByteArray(buf)
5613 } else {
5614 return base64.fromByteArray(buf.slice(start, end))
5615 }
5616 }
5617
5618 function utf8Slice (buf, start, end) {
5619 end = Math.min(buf.length, end)
5620 var res = []
5621
5622 var i = start
5623 while (i < end) {
5624 var firstByte = buf[i]
5625 var codePoint = null
5626 var bytesPerSequence = (firstByte > 0xEF) ? 4
5627 : (firstByte > 0xDF) ? 3
5628 : (firstByte > 0xBF) ? 2
5629 : 1
5630
5631 if (i + bytesPerSequence <= end) {
5632 var secondByte, thirdByte, fourthByte, tempCodePoint
5633
5634 switch (bytesPerSequence) {
5635 case 1:
5636 if (firstByte < 0x80) {
5637 codePoint = firstByte
5638 }
5639 break
5640 case 2:
5641 secondByte = buf[i + 1]
5642 if ((secondByte & 0xC0) === 0x80) {
5643 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5644 if (tempCodePoint > 0x7F) {
5645 codePoint = tempCodePoint
5646 }
5647 }
5648 break
5649 case 3:
5650 secondByte = buf[i + 1]
5651 thirdByte = buf[i + 2]
5652 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5653 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5654 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5655 codePoint = tempCodePoint
5656 }
5657 }
5658 break
5659 case 4:
5660 secondByte = buf[i + 1]
5661 thirdByte = buf[i + 2]
5662 fourthByte = buf[i + 3]
5663 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5664 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5665 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5666 codePoint = tempCodePoint
5667 }
5668 }
5669 }
5670 }
5671
5672 if (codePoint === null) {
5673 // we did not generate a valid codePoint so insert a
5674 // replacement char (U+FFFD) and advance only 1 byte
5675 codePoint = 0xFFFD
5676 bytesPerSequence = 1
5677 } else if (codePoint > 0xFFFF) {
5678 // encode to utf16 (surrogate pair dance)
5679 codePoint -= 0x10000
5680 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5681 codePoint = 0xDC00 | codePoint & 0x3FF
5682 }
5683
5684 res.push(codePoint)
5685 i += bytesPerSequence
5686 }
5687
5688 return decodeCodePointsArray(res)
5689 }
5690
5691 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5692 // the lowest limit is Chrome, with 0x10000 args.
5693 // We go 1 magnitude less, for safety
5694 var MAX_ARGUMENTS_LENGTH = 0x1000
5695
5696 function decodeCodePointsArray (codePoints) {
5697 var len = codePoints.length
5698 if (len <= MAX_ARGUMENTS_LENGTH) {
5699 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5700 }
5701
5702 // Decode in chunks to avoid "call stack size exceeded".
5703 var res = ''
5704 var i = 0
5705 while (i < len) {
5706 res += String.fromCharCode.apply(
5707 String,
5708 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5709 )
5710 }
5711 return res
5712 }
5713
5714 function asciiSlice (buf, start, end) {
5715 var ret = ''
5716 end = Math.min(buf.length, end)
5717
5718 for (var i = start; i < end; ++i) {
5719 ret += String.fromCharCode(buf[i] & 0x7F)
5720 }
5721 return ret
5722 }
5723
5724 function latin1Slice (buf, start, end) {
5725 var ret = ''
5726 end = Math.min(buf.length, end)
5727
5728 for (var i = start; i < end; ++i) {
5729 ret += String.fromCharCode(buf[i])
5730 }
5731 return ret
5732 }
5733
5734 function hexSlice (buf, start, end) {
5735 var len = buf.length
5736
5737 if (!start || start < 0) start = 0
5738 if (!end || end < 0 || end > len) end = len
5739
5740 var out = ''
5741 for (var i = start; i < end; ++i) {
5742 out += toHex(buf[i])
5743 }
5744 return out
5745 }
5746
5747 function utf16leSlice (buf, start, end) {
5748 var bytes = buf.slice(start, end)
5749 var res = ''
5750 for (var i = 0; i < bytes.length; i += 2) {
5751 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5752 }
5753 return res
5754 }
5755
5756 Buffer.prototype.slice = function slice (start, end) {
5757 var len = this.length
5758 start = ~~start
5759 end = end === undefined ? len : ~~end
5760
5761 if (start < 0) {
5762 start += len
5763 if (start < 0) start = 0
5764 } else if (start > len) {
5765 start = len
5766 }
5767
5768 if (end < 0) {
5769 end += len
5770 if (end < 0) end = 0
5771 } else if (end > len) {
5772 end = len
5773 }
5774
5775 if (end < start) end = start
5776
5777 var newBuf = this.subarray(start, end)
5778 // Return an augmented `Uint8Array` instance
5779 newBuf.__proto__ = Buffer.prototype
5780 return newBuf
5781 }
5782
5783 /*
5784 * Need to make sure that buffer isn't trying to write out of bounds.
5785 */
5786 function checkOffset (offset, ext, length) {
5787 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5788 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5789 }
5790
5791 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5792 offset = offset >>> 0
5793 byteLength = byteLength >>> 0
5794 if (!noAssert) checkOffset(offset, byteLength, this.length)
5795
5796 var val = this[offset]
5797 var mul = 1
5798 var i = 0
5799 while (++i < byteLength && (mul *= 0x100)) {
5800 val += this[offset + i] * mul
5801 }
5802
5803 return val
5804 }
5805
5806 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5807 offset = offset >>> 0
5808 byteLength = byteLength >>> 0
5809 if (!noAssert) {
5810 checkOffset(offset, byteLength, this.length)
5811 }
5812
5813 var val = this[offset + --byteLength]
5814 var mul = 1
5815 while (byteLength > 0 && (mul *= 0x100)) {
5816 val += this[offset + --byteLength] * mul
5817 }
5818
5819 return val
5820 }
5821
5822 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5823 offset = offset >>> 0
5824 if (!noAssert) checkOffset(offset, 1, this.length)
5825 return this[offset]
5826 }
5827
5828 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5829 offset = offset >>> 0
5830 if (!noAssert) checkOffset(offset, 2, this.length)
5831 return this[offset] | (this[offset + 1] << 8)
5832 }
5833
5834 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5835 offset = offset >>> 0
5836 if (!noAssert) checkOffset(offset, 2, this.length)
5837 return (this[offset] << 8) | this[offset + 1]
5838 }
5839
5840 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5841 offset = offset >>> 0
5842 if (!noAssert) checkOffset(offset, 4, this.length)
5843
5844 return ((this[offset]) |
5845 (this[offset + 1] << 8) |
5846 (this[offset + 2] << 16)) +
5847 (this[offset + 3] * 0x1000000)
5848 }
5849
5850 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5851 offset = offset >>> 0
5852 if (!noAssert) checkOffset(offset, 4, this.length)
5853
5854 return (this[offset] * 0x1000000) +
5855 ((this[offset + 1] << 16) |
5856 (this[offset + 2] << 8) |
5857 this[offset + 3])
5858 }
5859
5860 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5861 offset = offset >>> 0
5862 byteLength = byteLength >>> 0
5863 if (!noAssert) checkOffset(offset, byteLength, this.length)
5864
5865 var val = this[offset]
5866 var mul = 1
5867 var i = 0
5868 while (++i < byteLength && (mul *= 0x100)) {
5869 val += this[offset + i] * mul
5870 }
5871 mul *= 0x80
5872
5873 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5874
5875 return val
5876 }
5877
5878 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5879 offset = offset >>> 0
5880 byteLength = byteLength >>> 0
5881 if (!noAssert) checkOffset(offset, byteLength, this.length)
5882
5883 var i = byteLength
5884 var mul = 1
5885 var val = this[offset + --i]
5886 while (i > 0 && (mul *= 0x100)) {
5887 val += this[offset + --i] * mul
5888 }
5889 mul *= 0x80
5890
5891 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5892
5893 return val
5894 }
5895
5896 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5897 offset = offset >>> 0
5898 if (!noAssert) checkOffset(offset, 1, this.length)
5899 if (!(this[offset] & 0x80)) return (this[offset])
5900 return ((0xff - this[offset] + 1) * -1)
5901 }
5902
5903 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5904 offset = offset >>> 0
5905 if (!noAssert) checkOffset(offset, 2, this.length)
5906 var val = this[offset] | (this[offset + 1] << 8)
5907 return (val & 0x8000) ? val | 0xFFFF0000 : val
5908 }
5909
5910 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5911 offset = offset >>> 0
5912 if (!noAssert) checkOffset(offset, 2, this.length)
5913 var val = this[offset + 1] | (this[offset] << 8)
5914 return (val & 0x8000) ? val | 0xFFFF0000 : val
5915 }
5916
5917 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5918 offset = offset >>> 0
5919 if (!noAssert) checkOffset(offset, 4, this.length)
5920
5921 return (this[offset]) |
5922 (this[offset + 1] << 8) |
5923 (this[offset + 2] << 16) |
5924 (this[offset + 3] << 24)
5925 }
5926
5927 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5928 offset = offset >>> 0
5929 if (!noAssert) checkOffset(offset, 4, this.length)
5930
5931 return (this[offset] << 24) |
5932 (this[offset + 1] << 16) |
5933 (this[offset + 2] << 8) |
5934 (this[offset + 3])
5935 }
5936
5937 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5938 offset = offset >>> 0
5939 if (!noAssert) checkOffset(offset, 4, this.length)
5940 return ieee754.read(this, offset, true, 23, 4)
5941 }
5942
5943 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5944 offset = offset >>> 0
5945 if (!noAssert) checkOffset(offset, 4, this.length)
5946 return ieee754.read(this, offset, false, 23, 4)
5947 }
5948
5949 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5950 offset = offset >>> 0
5951 if (!noAssert) checkOffset(offset, 8, this.length)
5952 return ieee754.read(this, offset, true, 52, 8)
5953 }
5954
5955 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5956 offset = offset >>> 0
5957 if (!noAssert) checkOffset(offset, 8, this.length)
5958 return ieee754.read(this, offset, false, 52, 8)
5959 }
5960
5961 function checkInt (buf, value, offset, ext, max, min) {
5962 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5963 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5964 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5965 }
5966
5967 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5968 value = +value
5969 offset = offset >>> 0
5970 byteLength = byteLength >>> 0
5971 if (!noAssert) {
5972 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5973 checkInt(this, value, offset, byteLength, maxBytes, 0)
5974 }
5975
5976 var mul = 1
5977 var i = 0
5978 this[offset] = value & 0xFF
5979 while (++i < byteLength && (mul *= 0x100)) {
5980 this[offset + i] = (value / mul) & 0xFF
5981 }
5982
5983 return offset + byteLength
5984 }
5985
5986 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5987 value = +value
5988 offset = offset >>> 0
5989 byteLength = byteLength >>> 0
5990 if (!noAssert) {
5991 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5992 checkInt(this, value, offset, byteLength, maxBytes, 0)
5993 }
5994
5995 var i = byteLength - 1
5996 var mul = 1
5997 this[offset + i] = value & 0xFF
5998 while (--i >= 0 && (mul *= 0x100)) {
5999 this[offset + i] = (value / mul) & 0xFF
6000 }
6001
6002 return offset + byteLength
6003 }
6004
6005 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
6006 value = +value
6007 offset = offset >>> 0
6008 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
6009 this[offset] = (value & 0xff)
6010 return offset + 1
6011 }
6012
6013 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
6014 value = +value
6015 offset = offset >>> 0
6016 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
6017 this[offset] = (value & 0xff)
6018 this[offset + 1] = (value >>> 8)
6019 return offset + 2
6020 }
6021
6022 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
6023 value = +value
6024 offset = offset >>> 0
6025 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
6026 this[offset] = (value >>> 8)
6027 this[offset + 1] = (value & 0xff)
6028 return offset + 2
6029 }
6030
6031 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
6032 value = +value
6033 offset = offset >>> 0
6034 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6035 this[offset + 3] = (value >>> 24)
6036 this[offset + 2] = (value >>> 16)
6037 this[offset + 1] = (value >>> 8)
6038 this[offset] = (value & 0xff)
6039 return offset + 4
6040 }
6041
6042 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
6043 value = +value
6044 offset = offset >>> 0
6045 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6046 this[offset] = (value >>> 24)
6047 this[offset + 1] = (value >>> 16)
6048 this[offset + 2] = (value >>> 8)
6049 this[offset + 3] = (value & 0xff)
6050 return offset + 4
6051 }
6052
6053 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6054 value = +value
6055 offset = offset >>> 0
6056 if (!noAssert) {
6057 var limit = Math.pow(2, (8 * byteLength) - 1)
6058
6059 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6060 }
6061
6062 var i = 0
6063 var mul = 1
6064 var sub = 0
6065 this[offset] = value & 0xFF
6066 while (++i < byteLength && (mul *= 0x100)) {
6067 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6068 sub = 1
6069 }
6070 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6071 }
6072
6073 return offset + byteLength
6074 }
6075
6076 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6077 value = +value
6078 offset = offset >>> 0
6079 if (!noAssert) {
6080 var limit = Math.pow(2, (8 * byteLength) - 1)
6081
6082 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6083 }
6084
6085 var i = byteLength - 1
6086 var mul = 1
6087 var sub = 0
6088 this[offset + i] = value & 0xFF
6089 while (--i >= 0 && (mul *= 0x100)) {
6090 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6091 sub = 1
6092 }
6093 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6094 }
6095
6096 return offset + byteLength
6097 }
6098
6099 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6100 value = +value
6101 offset = offset >>> 0
6102 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6103 if (value < 0) value = 0xff + value + 1
6104 this[offset] = (value & 0xff)
6105 return offset + 1
6106 }
6107
6108 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6109 value = +value
6110 offset = offset >>> 0
6111 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6112 this[offset] = (value & 0xff)
6113 this[offset + 1] = (value >>> 8)
6114 return offset + 2
6115 }
6116
6117 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6118 value = +value
6119 offset = offset >>> 0
6120 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6121 this[offset] = (value >>> 8)
6122 this[offset + 1] = (value & 0xff)
6123 return offset + 2
6124 }
6125
6126 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6127 value = +value
6128 offset = offset >>> 0
6129 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6130 this[offset] = (value & 0xff)
6131 this[offset + 1] = (value >>> 8)
6132 this[offset + 2] = (value >>> 16)
6133 this[offset + 3] = (value >>> 24)
6134 return offset + 4
6135 }
6136
6137 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6138 value = +value
6139 offset = offset >>> 0
6140 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6141 if (value < 0) value = 0xffffffff + value + 1
6142 this[offset] = (value >>> 24)
6143 this[offset + 1] = (value >>> 16)
6144 this[offset + 2] = (value >>> 8)
6145 this[offset + 3] = (value & 0xff)
6146 return offset + 4
6147 }
6148
6149 function checkIEEE754 (buf, value, offset, ext, max, min) {
6150 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6151 if (offset < 0) throw new RangeError('Index out of range')
6152 }
6153
6154 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6155 value = +value
6156 offset = offset >>> 0
6157 if (!noAssert) {
6158 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6159 }
6160 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6161 return offset + 4
6162 }
6163
6164 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6165 return writeFloat(this, value, offset, true, noAssert)
6166 }
6167
6168 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6169 return writeFloat(this, value, offset, false, noAssert)
6170 }
6171
6172 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6173 value = +value
6174 offset = offset >>> 0
6175 if (!noAssert) {
6176 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6177 }
6178 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6179 return offset + 8
6180 }
6181
6182 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6183 return writeDouble(this, value, offset, true, noAssert)
6184 }
6185
6186 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6187 return writeDouble(this, value, offset, false, noAssert)
6188 }
6189
6190 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6191 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6192 if (!start) start = 0
6193 if (!end && end !== 0) end = this.length
6194 if (targetStart >= target.length) targetStart = target.length
6195 if (!targetStart) targetStart = 0
6196 if (end > 0 && end < start) end = start
6197
6198 // Copy 0 bytes; we're done
6199 if (end === start) return 0
6200 if (target.length === 0 || this.length === 0) return 0
6201
6202 // Fatal error conditions
6203 if (targetStart < 0) {
6204 throw new RangeError('targetStart out of bounds')
6205 }
6206 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6207 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6208
6209 // Are we oob?
6210 if (end > this.length) end = this.length
6211 if (target.length - targetStart < end - start) {
6212 end = target.length - targetStart + start
6213 }
6214
6215 var len = end - start
6216 var i
6217
6218 if (this === target && start < targetStart && targetStart < end) {
6219 // descending copy from end
6220 for (i = len - 1; i >= 0; --i) {
6221 target[i + targetStart] = this[i + start]
6222 }
6223 } else if (len < 1000) {
6224 // ascending copy from start
6225 for (i = 0; i < len; ++i) {
6226 target[i + targetStart] = this[i + start]
6227 }
6228 } else {
6229 Uint8Array.prototype.set.call(
6230 target,
6231 this.subarray(start, start + len),
6232 targetStart
6233 )
6234 }
6235
6236 return len
6237 }
6238
6239 // Usage:
6240 // buffer.fill(number[, offset[, end]])
6241 // buffer.fill(buffer[, offset[, end]])
6242 // buffer.fill(string[, offset[, end]][, encoding])
6243 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6244 // Handle string cases:
6245 if (typeof val === 'string') {
6246 if (typeof start === 'string') {
6247 encoding = start
6248 start = 0
6249 end = this.length
6250 } else if (typeof end === 'string') {
6251 encoding = end
6252 end = this.length
6253 }
6254 if (val.length === 1) {
6255 var code = val.charCodeAt(0)
6256 if (code < 256) {
6257 val = code
6258 }
6259 }
6260 if (encoding !== undefined && typeof encoding !== 'string') {
6261 throw new TypeError('encoding must be a string')
6262 }
6263 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6264 throw new TypeError('Unknown encoding: ' + encoding)
6265 }
6266 } else if (typeof val === 'number') {
6267 val = val & 255
6268 }
6269
6270 // Invalid ranges are not set to a default, so can range check early.
6271 if (start < 0 || this.length < start || this.length < end) {
6272 throw new RangeError('Out of range index')
6273 }
6274
6275 if (end <= start) {
6276 return this
6277 }
6278
6279 start = start >>> 0
6280 end = end === undefined ? this.length : end >>> 0
6281
6282 if (!val) val = 0
6283
6284 var i
6285 if (typeof val === 'number') {
6286 for (i = start; i < end; ++i) {
6287 this[i] = val
6288 }
6289 } else {
6290 var bytes = Buffer.isBuffer(val)
6291 ? val
6292 : new Buffer(val, encoding)
6293 var len = bytes.length
6294 for (i = 0; i < end - start; ++i) {
6295 this[i + start] = bytes[i % len]
6296 }
6297 }
6298
6299 return this
6300 }
6301
6302 // HELPER FUNCTIONS
6303 // ================
6304
6305 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6306
6307 function base64clean (str) {
6308 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6309 str = str.trim().replace(INVALID_BASE64_RE, '')
6310 // Node converts strings with length < 2 to ''
6311 if (str.length < 2) return ''
6312 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6313 while (str.length % 4 !== 0) {
6314 str = str + '='
6315 }
6316 return str
6317 }
6318
6319 function toHex (n) {
6320 if (n < 16) return '0' + n.toString(16)
6321 return n.toString(16)
6322 }
6323
6324 function utf8ToBytes (string, units) {
6325 units = units || Infinity
6326 var codePoint
6327 var length = string.length
6328 var leadSurrogate = null
6329 var bytes = []
6330
6331 for (var i = 0; i < length; ++i) {
6332 codePoint = string.charCodeAt(i)
6333
6334 // is surrogate component
6335 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6336 // last char was a lead
6337 if (!leadSurrogate) {
6338 // no lead yet
6339 if (codePoint > 0xDBFF) {
6340 // unexpected trail
6341 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6342 continue
6343 } else if (i + 1 === length) {
6344 // unpaired lead
6345 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6346 continue
6347 }
6348
6349 // valid lead
6350 leadSurrogate = codePoint
6351
6352 continue
6353 }
6354
6355 // 2 leads in a row
6356 if (codePoint < 0xDC00) {
6357 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6358 leadSurrogate = codePoint
6359 continue
6360 }
6361
6362 // valid surrogate pair
6363 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6364 } else if (leadSurrogate) {
6365 // valid bmp char, but last char was a lead
6366 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6367 }
6368
6369 leadSurrogate = null
6370
6371 // encode utf8
6372 if (codePoint < 0x80) {
6373 if ((units -= 1) < 0) break
6374 bytes.push(codePoint)
6375 } else if (codePoint < 0x800) {
6376 if ((units -= 2) < 0) break
6377 bytes.push(
6378 codePoint >> 0x6 | 0xC0,
6379 codePoint & 0x3F | 0x80
6380 )
6381 } else if (codePoint < 0x10000) {
6382 if ((units -= 3) < 0) break
6383 bytes.push(
6384 codePoint >> 0xC | 0xE0,
6385 codePoint >> 0x6 & 0x3F | 0x80,
6386 codePoint & 0x3F | 0x80
6387 )
6388 } else if (codePoint < 0x110000) {
6389 if ((units -= 4) < 0) break
6390 bytes.push(
6391 codePoint >> 0x12 | 0xF0,
6392 codePoint >> 0xC & 0x3F | 0x80,
6393 codePoint >> 0x6 & 0x3F | 0x80,
6394 codePoint & 0x3F | 0x80
6395 )
6396 } else {
6397 throw new Error('Invalid code point')
6398 }
6399 }
6400
6401 return bytes
6402 }
6403
6404 function asciiToBytes (str) {
6405 var byteArray = []
6406 for (var i = 0; i < str.length; ++i) {
6407 // Node's code seems to be doing this and not & 0x7F..
6408 byteArray.push(str.charCodeAt(i) & 0xFF)
6409 }
6410 return byteArray
6411 }
6412
6413 function utf16leToBytes (str, units) {
6414 var c, hi, lo
6415 var byteArray = []
6416 for (var i = 0; i < str.length; ++i) {
6417 if ((units -= 2) < 0) break
6418
6419 c = str.charCodeAt(i)
6420 hi = c >> 8
6421 lo = c % 256
6422 byteArray.push(lo)
6423 byteArray.push(hi)
6424 }
6425
6426 return byteArray
6427 }
6428
6429 function base64ToBytes (str) {
6430 return base64.toByteArray(base64clean(str))
6431 }
6432
6433 function blitBuffer (src, dst, offset, length) {
6434 for (var i = 0; i < length; ++i) {
6435 if ((i + offset >= dst.length) || (i >= src.length)) break
6436 dst[i + offset] = src[i]
6437 }
6438 return i
6439 }
6440
6441 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6442 function isArrayBufferView (obj) {
6443 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6444 }
6445
6446 function numberIsNaN (obj) {
6447 return obj !== obj // eslint-disable-line no-self-compare
6448 }
6449
6450 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6451 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6452 var e, m
6453 var eLen = nBytes * 8 - mLen - 1
6454 var eMax = (1 << eLen) - 1
6455 var eBias = eMax >> 1
6456 var nBits = -7
6457 var i = isLE ? (nBytes - 1) : 0
6458 var d = isLE ? -1 : 1
6459 var s = buffer[offset + i]
6460
6461 i += d
6462
6463 e = s & ((1 << (-nBits)) - 1)
6464 s >>= (-nBits)
6465 nBits += eLen
6466 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6467
6468 m = e & ((1 << (-nBits)) - 1)
6469 e >>= (-nBits)
6470 nBits += mLen
6471 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6472
6473 if (e === 0) {
6474 e = 1 - eBias
6475 } else if (e === eMax) {
6476 return m ? NaN : ((s ? -1 : 1) * Infinity)
6477 } else {
6478 m = m + Math.pow(2, mLen)
6479 e = e - eBias
6480 }
6481 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6482 }
6483
6484 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6485 var e, m, c
6486 var eLen = nBytes * 8 - mLen - 1
6487 var eMax = (1 << eLen) - 1
6488 var eBias = eMax >> 1
6489 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6490 var i = isLE ? 0 : (nBytes - 1)
6491 var d = isLE ? 1 : -1
6492 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6493
6494 value = Math.abs(value)
6495
6496 if (isNaN(value) || value === Infinity) {
6497 m = isNaN(value) ? 1 : 0
6498 e = eMax
6499 } else {
6500 e = Math.floor(Math.log(value) / Math.LN2)
6501 if (value * (c = Math.pow(2, -e)) < 1) {
6502 e--
6503 c *= 2
6504 }
6505 if (e + eBias >= 1) {
6506 value += rt / c
6507 } else {
6508 value += rt * Math.pow(2, 1 - eBias)
6509 }
6510 if (value * c >= 2) {
6511 e++
6512 c /= 2
6513 }
6514
6515 if (e + eBias >= eMax) {
6516 m = 0
6517 e = eMax
6518 } else if (e + eBias >= 1) {
6519 m = (value * c - 1) * Math.pow(2, mLen)
6520 e = e + eBias
6521 } else {
6522 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6523 e = 0
6524 }
6525 }
6526
6527 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6528
6529 e = (e << mLen) | m
6530 eLen += mLen
6531 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6532
6533 buffer[offset + i - d] |= s * 128
6534 }
6535
6536 },{}],4:[function(require,module,exports){
6537 window.basex = require('base-x')
6538 },{"base-x":5}],5:[function(require,module,exports){
6539 // base-x encoding
6540 // Forked from https://github.com/cryptocoinjs/bs58
6541 // Originally written by Mike Hearn for BitcoinJ
6542 // Copyright (c) 2011 Google Inc
6543 // Ported to JavaScript by Stefan Thomas
6544 // Merged Buffer refactorings from base58-native by Stephen Pair
6545 // Copyright (c) 2013 BitPay Inc
6546
6547 var Buffer = require('safe-buffer').Buffer
6548
6549 module.exports = function base (ALPHABET) {
6550 var ALPHABET_MAP = {}
6551 var BASE = ALPHABET.length
6552 var LEADER = ALPHABET.charAt(0)
6553
6554 // pre-compute lookup table
6555 for (var z = 0; z < ALPHABET.length; z++) {
6556 var x = ALPHABET.charAt(z)
6557
6558 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6559 ALPHABET_MAP[x] = z
6560 }
6561
6562 function encode (source) {
6563 if (source.length === 0) return ''
6564
6565 var digits = [0]
6566 for (var i = 0; i < source.length; ++i) {
6567 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6568 carry += digits[j] << 8
6569 digits[j] = carry % BASE
6570 carry = (carry / BASE) | 0
6571 }
6572
6573 while (carry > 0) {
6574 digits.push(carry % BASE)
6575 carry = (carry / BASE) | 0
6576 }
6577 }
6578
6579 var string = ''
6580
6581 // deal with leading zeros
6582 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6583 // convert digits to a string
6584 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6585
6586 return string
6587 }
6588
6589 function decodeUnsafe (string) {
6590 if (string.length === 0) return Buffer.allocUnsafe(0)
6591
6592 var bytes = [0]
6593 for (var i = 0; i < string.length; i++) {
6594 var value = ALPHABET_MAP[string[i]]
6595 if (value === undefined) return
6596
6597 for (var j = 0, carry = value; j < bytes.length; ++j) {
6598 carry += bytes[j] * BASE
6599 bytes[j] = carry & 0xff
6600 carry >>= 8
6601 }
6602
6603 while (carry > 0) {
6604 bytes.push(carry & 0xff)
6605 carry >>= 8
6606 }
6607 }
6608
6609 // deal with leading zeros
6610 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6611 bytes.push(0)
6612 }
6613
6614 return Buffer.from(bytes.reverse())
6615 }
6616
6617 function decode (string) {
6618 var buffer = decodeUnsafe(string)
6619 if (buffer) return buffer
6620
6621 throw new Error('Non-base' + BASE + ' character')
6622 }
6623
6624 return {
6625 encode: encode,
6626 decodeUnsafe: decodeUnsafe,
6627 decode: decode
6628 }
6629 }
6630
6631 },{"safe-buffer":6}],6:[function(require,module,exports){
6632 module.exports = require('buffer')
6633
6634 },{"buffer":2}]},{},[4])(4)
6635 });</script>
6636 <script>(function (root) {
6637 "use strict";
6638
6639 /***** unorm.js *****/
6640
6641 /*
6642 * UnicodeNormalizer 1.0.0
6643 * Copyright (c) 2008 Matsuza
6644 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6645 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6646 * $Rev: 13309 $
6647 */
6648
6649 var DEFAULT_FEATURE = [null, 0, {}];
6650 var CACHE_THRESHOLD = 10;
6651 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6652 var NCount = VCount * TCount; // 588
6653 var SCount = LCount * NCount; // 11172
6654
6655 var UChar = function(cp, feature){
6656 this.codepoint = cp;
6657 this.feature = feature;
6658 };
6659
6660 // Strategies
6661 var cache = {};
6662 var cacheCounter = [];
6663 for (var i = 0; i <= 0xFF; ++i){
6664 cacheCounter[i] = 0;
6665 }
6666
6667 function fromCache(next, cp, needFeature){
6668 var ret = cache[cp];
6669 if(!ret){
6670 ret = next(cp, needFeature);
6671 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6672 cache[cp] = ret;
6673 }
6674 }
6675 return ret;
6676 }
6677
6678 function fromData(next, cp, needFeature){
6679 var hash = cp & 0xFF00;
6680 var dunit = UChar.udata[hash] || {};
6681 var f = dunit[cp];
6682 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6683 }
6684 function fromCpOnly(next, cp, needFeature){
6685 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6686 }
6687 function fromRuleBasedJamo(next, cp, needFeature){
6688 var j;
6689 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6690 return next(cp, needFeature);
6691 }
6692 if(LBase <= cp && cp < LBase + LCount){
6693 var c = {};
6694 var base = (cp - LBase) * VCount;
6695 for (j = 0; j < VCount; ++j){
6696 c[VBase + j] = SBase + TCount * (j + base);
6697 }
6698 return new UChar(cp, [,,c]);
6699 }
6700
6701 var SIndex = cp - SBase;
6702 var TIndex = SIndex % TCount;
6703 var feature = [];
6704 if(TIndex !== 0){
6705 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6706 } else {
6707 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6708 feature[2] = {};
6709 for (j = 1; j < TCount; ++j){
6710 feature[2][TBase + j] = cp + j;
6711 }
6712 }
6713 return new UChar(cp, feature);
6714 }
6715 function fromCpFilter(next, cp, needFeature){
6716 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6717 }
6718
6719 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6720
6721 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6722 return function (cp, needFeature) {
6723 return strategy(next, cp, needFeature);
6724 };
6725 }, null);
6726
6727 UChar.isHighSurrogate = function(cp){
6728 return cp >= 0xD800 && cp <= 0xDBFF;
6729 };
6730 UChar.isLowSurrogate = function(cp){
6731 return cp >= 0xDC00 && cp <= 0xDFFF;
6732 };
6733
6734 UChar.prototype.prepFeature = function(){
6735 if(!this.feature){
6736 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6737 }
6738 };
6739
6740 UChar.prototype.toString = function(){
6741 if(this.codepoint < 0x10000){
6742 return String.fromCharCode(this.codepoint);
6743 } else {
6744 var x = this.codepoint - 0x10000;
6745 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6746 }
6747 };
6748
6749 UChar.prototype.getDecomp = function(){
6750 this.prepFeature();
6751 return this.feature[0] || null;
6752 };
6753
6754 UChar.prototype.isCompatibility = function(){
6755 this.prepFeature();
6756 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6757 };
6758 UChar.prototype.isExclude = function(){
6759 this.prepFeature();
6760 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6761 };
6762 UChar.prototype.getCanonicalClass = function(){
6763 this.prepFeature();
6764 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6765 };
6766 UChar.prototype.getComposite = function(following){
6767 this.prepFeature();
6768 if(!this.feature[2]){
6769 return null;
6770 }
6771 var cp = this.feature[2][following.codepoint];
6772 return cp ? UChar.fromCharCode(cp) : null;
6773 };
6774
6775 var UCharIterator = function(str){
6776 this.str = str;
6777 this.cursor = 0;
6778 };
6779 UCharIterator.prototype.next = function(){
6780 if(!!this.str && this.cursor < this.str.length){
6781 var cp = this.str.charCodeAt(this.cursor++);
6782 var d;
6783 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6784 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6785 ++this.cursor;
6786 }
6787 return UChar.fromCharCode(cp);
6788 } else {
6789 this.str = null;
6790 return null;
6791 }
6792 };
6793
6794 var RecursDecompIterator = function(it, cano){
6795 this.it = it;
6796 this.canonical = cano;
6797 this.resBuf = [];
6798 };
6799
6800 RecursDecompIterator.prototype.next = function(){
6801 function recursiveDecomp(cano, uchar){
6802 var decomp = uchar.getDecomp();
6803 if(!!decomp && !(cano && uchar.isCompatibility())){
6804 var ret = [];
6805 for(var i = 0; i < decomp.length; ++i){
6806 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6807 ret = ret.concat(a);
6808 }
6809 return ret;
6810 } else {
6811 return [uchar];
6812 }
6813 }
6814 if(this.resBuf.length === 0){
6815 var uchar = this.it.next();
6816 if(!uchar){
6817 return null;
6818 }
6819 this.resBuf = recursiveDecomp(this.canonical, uchar);
6820 }
6821 return this.resBuf.shift();
6822 };
6823
6824 var DecompIterator = function(it){
6825 this.it = it;
6826 this.resBuf = [];
6827 };
6828
6829 DecompIterator.prototype.next = function(){
6830 var cc;
6831 if(this.resBuf.length === 0){
6832 do{
6833 var uchar = this.it.next();
6834 if(!uchar){
6835 break;
6836 }
6837 cc = uchar.getCanonicalClass();
6838 var inspt = this.resBuf.length;
6839 if(cc !== 0){
6840 for(; inspt > 0; --inspt){
6841 var uchar2 = this.resBuf[inspt - 1];
6842 var cc2 = uchar2.getCanonicalClass();
6843 if(cc2 <= cc){
6844 break;
6845 }
6846 }
6847 }
6848 this.resBuf.splice(inspt, 0, uchar);
6849 } while(cc !== 0);
6850 }
6851 return this.resBuf.shift();
6852 };
6853
6854 var CompIterator = function(it){
6855 this.it = it;
6856 this.procBuf = [];
6857 this.resBuf = [];
6858 this.lastClass = null;
6859 };
6860
6861 CompIterator.prototype.next = function(){
6862 while(this.resBuf.length === 0){
6863 var uchar = this.it.next();
6864 if(!uchar){
6865 this.resBuf = this.procBuf;
6866 this.procBuf = [];
6867 break;
6868 }
6869 if(this.procBuf.length === 0){
6870 this.lastClass = uchar.getCanonicalClass();
6871 this.procBuf.push(uchar);
6872 } else {
6873 var starter = this.procBuf[0];
6874 var composite = starter.getComposite(uchar);
6875 var cc = uchar.getCanonicalClass();
6876 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6877 this.procBuf[0] = composite;
6878 } else {
6879 if(cc === 0){
6880 this.resBuf = this.procBuf;
6881 this.procBuf = [];
6882 }
6883 this.lastClass = cc;
6884 this.procBuf.push(uchar);
6885 }
6886 }
6887 }
6888 return this.resBuf.shift();
6889 };
6890
6891 var createIterator = function(mode, str){
6892 switch(mode){
6893 case "NFD":
6894 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6895 case "NFKD":
6896 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6897 case "NFC":
6898 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6899 case "NFKC":
6900 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6901 }
6902 throw mode + " is invalid";
6903 };
6904 var normalize = function(mode, str){
6905 var it = createIterator(mode, str);
6906 var ret = "";
6907 var uchar;
6908 while(!!(uchar = it.next())){
6909 ret += uchar.toString();
6910 }
6911 return ret;
6912 };
6913
6914 /* API functions */
6915 function nfd(str){
6916 return normalize("NFD", str);
6917 }
6918
6919 function nfkd(str){
6920 return normalize("NFKD", str);
6921 }
6922
6923 function nfc(str){
6924 return normalize("NFC", str);
6925 }
6926
6927 function nfkc(str){
6928 return normalize("NFKC", str);
6929 }
6930
6931 /* Unicode data */
6932 UChar.udata={
6933 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
6934 256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
6935 512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},
6936 768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},
6937 1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
6938 1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
6939 1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
6940 1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
6941 2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},
6942 2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
6943 2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},
6944 2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
6945 3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
6946 3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
6947 3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
6948 3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
6949 4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
6950 4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},
6951 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6952 4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},
6953 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6954 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6955 5632:{71231:[,9],71350:[,9],71351:[,7]},
6956 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6957 6144:{6313:[,228]},
6958 6400:{6457:[,222],6458:[,230],6459:[,220]},
6959 6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},
6960 6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
6961 7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},
6962 7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
6963 7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
6964 7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
6965 8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
6966 8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
6967 8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
6968 8960:{9001:[[12296]],9002:[[12297]]},
6969 9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
6970 10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
6971 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6972 11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
6973 11776:{11935:[[27597],256],12019:[[40863],256]},
6974 12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
6975 12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
6976 12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
6977 12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
6978 13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
6979 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6980 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6981 42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},
6982 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6983 43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
6984 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6985 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6986 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6987 48128:{113822:[,1]},
6988 53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
6989 53760:{119362:[,230],119363:[,230],119364:[,230]},
6990 54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
6991 54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
6992 54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
6993 55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
6994 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6995 60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
6996 61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
6997 61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
6998 63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
6999 63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
7000 64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
7001 64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
7002 64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
7003 64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
7004 65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
7005 65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
7006
7007 };
7008
7009 /***** Module to export */
7010 var unorm = {
7011 nfc: nfc,
7012 nfd: nfd,
7013 nfkc: nfkc,
7014 nfkd: nfkd
7015 };
7016
7017 /*globals module:true,define:true*/
7018
7019 // CommonJS
7020 if (typeof module === "object") {
7021 module.exports = unorm;
7022
7023 // AMD
7024 } else if (typeof define === "function" && define.amd) {
7025 define("unorm", function () {
7026 return unorm;
7027 });
7028
7029 // Global
7030 } else {
7031 root.unorm = unorm;
7032 }
7033
7034 /***** Export as shim for String::normalize method *****/
7035 /*
7036 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
7037
7038 21.1.3.12 String.prototype.normalize(form="NFC")
7039 When the normalize method is called with one argument form, the following steps are taken:
7040
7041 1. Let O be CheckObjectCoercible(this value).
7042 2. Let S be ToString(O).
7043 3. ReturnIfAbrupt(S).
7044 4. If form is not provided or undefined let form be "NFC".
7045 5. Let f be ToString(form).
7046 6. ReturnIfAbrupt(f).
7047 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
7048 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.
7049 9. Return ns.
7050
7051 The length property of the normalize method is 0.
7052
7053 *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.
7054 */
7055 unorm.shimApplied = false;
7056
7057 if (!String.prototype.normalize) {
7058 String.prototype.normalize = function(form) {
7059 var str = "" + this;
7060 form = form === undefined ? "NFC" : form;
7061
7062 if (form === "NFC") {
7063 return unorm.nfc(str);
7064 } else if (form === "NFD") {
7065 return unorm.nfd(str);
7066 } else if (form === "NFKC") {
7067 return unorm.nfkc(str);
7068 } else if (form === "NFKD") {
7069 return unorm.nfkd(str);
7070 } else {
7071 throw new RangeError("Invalid normalization form: " + form);
7072 }
7073 };
7074
7075 unorm.shimApplied = true;
7076 }
7077 }(this));
7078 </script>
7079 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7080 !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)
7081 },_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))
7082 },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});
7083 </script>
7084 <script>/*!
7085 * Bootstrap v3.2.0 (http://getbootstrap.com)
7086 * Copyright 2011-2014 Twitter, Inc.
7087 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7088 */
7089 if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);</script>
7090 <script>(function() {
7091 'use strict';
7092
7093 /**
7094 * Extend an Object with another Object's properties.
7095 *
7096 * The source objects are specified as additional arguments.
7097 *
7098 * @param dst Object the object to extend.
7099 *
7100 * @return Object the final object.
7101 */
7102 var _extend = function(dst) {
7103 var sources = Array.prototype.slice.call(arguments, 1);
7104 for (var i=0; i<sources.length; ++i) {
7105 var src = sources[i];
7106 for (var p in src) {
7107 if (src.hasOwnProperty(p)) dst[p] = src[p];
7108 }
7109 }
7110 return dst;
7111 };
7112
7113
7114 /**
7115 * Defer execution of given function.
7116 * @param {Function} func
7117 */
7118 var _defer = function(func) {
7119 if (typeof setImmediate === 'function') {
7120 return setImmediate(func);
7121 } else {
7122 return setTimeout(func, 0);
7123 }
7124 };
7125
7126 /**
7127 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7128 */
7129 var Levenshtein = {
7130 /**
7131 * Calculate levenshtein distance of the two strings.
7132 *
7133 * @param str1 String the first string.
7134 * @param str2 String the second string.
7135 * @return Integer the levenshtein distance (0 and above).
7136 */
7137 get: function(str1, str2) {
7138 // base cases
7139 if (str1 === str2) return 0;
7140 if (str1.length === 0) return str2.length;
7141 if (str2.length === 0) return str1.length;
7142
7143 // two rows
7144 var prevRow = new Array(str2.length + 1),
7145 curCol, nextCol, i, j, tmp;
7146
7147 // initialise previous row
7148 for (i=0; i<prevRow.length; ++i) {
7149 prevRow[i] = i;
7150 }
7151
7152 // calculate current row distance from previous row
7153 for (i=0; i<str1.length; ++i) {
7154 nextCol = i + 1;
7155
7156 for (j=0; j<str2.length; ++j) {
7157 curCol = nextCol;
7158
7159 // substution
7160 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7161 // insertion
7162 tmp = curCol + 1;
7163 if (nextCol > tmp) {
7164 nextCol = tmp;
7165 }
7166 // deletion
7167 tmp = prevRow[j + 1] + 1;
7168 if (nextCol > tmp) {
7169 nextCol = tmp;
7170 }
7171
7172 // copy current col value into previous (in preparation for next iteration)
7173 prevRow[j] = curCol;
7174 }
7175
7176 // copy last col value into previous (in preparation for next iteration)
7177 prevRow[j] = nextCol;
7178 }
7179
7180 return nextCol;
7181 },
7182
7183 /**
7184 * Asynchronously calculate levenshtein distance of the two strings.
7185 *
7186 * @param str1 String the first string.
7187 * @param str2 String the second string.
7188 * @param cb Function callback function with signature: function(Error err, int distance)
7189 * @param [options] Object additional options.
7190 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7191 */
7192 getAsync: function(str1, str2, cb, options) {
7193 options = _extend({}, {
7194 progress: null
7195 }, options);
7196
7197 // base cases
7198 if (str1 === str2) return cb(null, 0);
7199 if (str1.length === 0) return cb(null, str2.length);
7200 if (str2.length === 0) return cb(null, str1.length);
7201
7202 // two rows
7203 var prevRow = new Array(str2.length + 1),
7204 curCol, nextCol,
7205 i, j, tmp,
7206 startTime, currentTime;
7207
7208 // initialise previous row
7209 for (i=0; i<prevRow.length; ++i) {
7210 prevRow[i] = i;
7211 }
7212
7213 nextCol = 1;
7214 i = 0;
7215 j = -1;
7216
7217 var __calculate = function() {
7218 // reset timer
7219 startTime = new Date().valueOf();
7220 currentTime = startTime;
7221
7222 // keep going until one second has elapsed
7223 while (currentTime - startTime < 1000) {
7224 // reached end of current row?
7225 if (str2.length <= (++j)) {
7226 // copy current into previous (in preparation for next iteration)
7227 prevRow[j] = nextCol;
7228
7229 // if already done all chars
7230 if (str1.length <= (++i)) {
7231 return cb(null, nextCol);
7232 }
7233 // else if we have more left to do
7234 else {
7235 nextCol = i + 1;
7236 j = 0;
7237 }
7238 }
7239
7240 // calculation
7241 curCol = nextCol;
7242
7243 // substution
7244 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7245 // insertion
7246 tmp = curCol + 1;
7247 if (nextCol > tmp) {
7248 nextCol = tmp;
7249 }
7250 // deletion
7251 tmp = prevRow[j + 1] + 1;
7252 if (nextCol > tmp) {
7253 nextCol = tmp;
7254 }
7255
7256 // copy current into previous (in preparation for next iteration)
7257 prevRow[j] = curCol;
7258
7259 // get current time
7260 currentTime = new Date().valueOf();
7261 }
7262
7263 // send a progress update?
7264 if (null !== options.progress) {
7265 try {
7266 options.progress.call(null, (i * 100.0/ str1.length));
7267 } catch (err) {
7268 return cb('Progress callback: ' + err.toString());
7269 }
7270 }
7271
7272 // next iteration
7273 _defer(__calculate);
7274 };
7275
7276 __calculate();
7277 }
7278
7279 };
7280
7281 // amd
7282 if (typeof define !== "undefined" && define !== null && define.amd) {
7283 define(function() {
7284 return Levenshtein;
7285 });
7286 }
7287 // commonjs
7288 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7289 module.exports = Levenshtein;
7290 }
7291 // web worker
7292 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7293 self.Levenshtein = Levenshtein;
7294 }
7295 // browser main thread
7296 else if (typeof window !== "undefined" && window !== null) {
7297 window.Levenshtein = Levenshtein;
7298 }
7299 }());
7300
7301 </script>
7302 <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},
7303 write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
7304 for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
7305 7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
7306 0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
7307 setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
7308 j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
7309 b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
7310 c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
7311 0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7312 (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,
7313 78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
7314 j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
7315 a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
7316 a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
7317 2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
7318 LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
7319 this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7320 [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,
7321 116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
7322 43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
7323 3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
7324 55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
7325 45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7326 (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,
7327 correctLevel:3,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
7328 j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
7329 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7330 </script>
7331 <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){
7332 (function (global){
7333 'use strict';
7334
7335 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7336 // original notice:
7337
7338 /*!
7339 * The buffer module from node.js, for the browser.
7340 *
7341 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7342 * @license MIT
7343 */
7344 function compare(a, b) {
7345 if (a === b) {
7346 return 0;
7347 }
7348
7349 var x = a.length;
7350 var y = b.length;
7351
7352 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7353 if (a[i] !== b[i]) {
7354 x = a[i];
7355 y = b[i];
7356 break;
7357 }
7358 }
7359
7360 if (x < y) {
7361 return -1;
7362 }
7363 if (y < x) {
7364 return 1;
7365 }
7366 return 0;
7367 }
7368 function isBuffer(b) {
7369 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7370 return global.Buffer.isBuffer(b);
7371 }
7372 return !!(b != null && b._isBuffer);
7373 }
7374
7375 // based on node assert, original notice:
7376
7377 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7378 //
7379 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7380 //
7381 // Originally from narwhal.js (http://narwhaljs.org)
7382 // Copyright (c) 2009 Thomas Robinson <280north.com>
7383 //
7384 // Permission is hereby granted, free of charge, to any person obtaining a copy
7385 // of this software and associated documentation files (the 'Software'), to
7386 // deal in the Software without restriction, including without limitation the
7387 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7388 // sell copies of the Software, and to permit persons to whom the Software is
7389 // furnished to do so, subject to the following conditions:
7390 //
7391 // The above copyright notice and this permission notice shall be included in
7392 // all copies or substantial portions of the Software.
7393 //
7394 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7395 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7396 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7397 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7398 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7399 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7400
7401 var util = require('util/');
7402 var hasOwn = Object.prototype.hasOwnProperty;
7403 var pSlice = Array.prototype.slice;
7404 var functionsHaveNames = (function () {
7405 return function foo() {}.name === 'foo';
7406 }());
7407 function pToString (obj) {
7408 return Object.prototype.toString.call(obj);
7409 }
7410 function isView(arrbuf) {
7411 if (isBuffer(arrbuf)) {
7412 return false;
7413 }
7414 if (typeof global.ArrayBuffer !== 'function') {
7415 return false;
7416 }
7417 if (typeof ArrayBuffer.isView === 'function') {
7418 return ArrayBuffer.isView(arrbuf);
7419 }
7420 if (!arrbuf) {
7421 return false;
7422 }
7423 if (arrbuf instanceof DataView) {
7424 return true;
7425 }
7426 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7427 return true;
7428 }
7429 return false;
7430 }
7431 // 1. The assert module provides functions that throw
7432 // AssertionError's when particular conditions are not met. The
7433 // assert module must conform to the following interface.
7434
7435 var assert = module.exports = ok;
7436
7437 // 2. The AssertionError is defined in assert.
7438 // new assert.AssertionError({ message: message,
7439 // actual: actual,
7440 // expected: expected })
7441
7442 var regex = /\s*function\s+([^\(\s]*)\s*/;
7443 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7444 function getName(func) {
7445 if (!util.isFunction(func)) {
7446 return;
7447 }
7448 if (functionsHaveNames) {
7449 return func.name;
7450 }
7451 var str = func.toString();
7452 var match = str.match(regex);
7453 return match && match[1];
7454 }
7455 assert.AssertionError = function AssertionError(options) {
7456 this.name = 'AssertionError';
7457 this.actual = options.actual;
7458 this.expected = options.expected;
7459 this.operator = options.operator;
7460 if (options.message) {
7461 this.message = options.message;
7462 this.generatedMessage = false;
7463 } else {
7464 this.message = getMessage(this);
7465 this.generatedMessage = true;
7466 }
7467 var stackStartFunction = options.stackStartFunction || fail;
7468 if (Error.captureStackTrace) {
7469 Error.captureStackTrace(this, stackStartFunction);
7470 } else {
7471 // non v8 browsers so we can have a stacktrace
7472 var err = new Error();
7473 if (err.stack) {
7474 var out = err.stack;
7475
7476 // try to strip useless frames
7477 var fn_name = getName(stackStartFunction);
7478 var idx = out.indexOf('\n' + fn_name);
7479 if (idx >= 0) {
7480 // once we have located the function frame
7481 // we need to strip out everything before it (and its line)
7482 var next_line = out.indexOf('\n', idx + 1);
7483 out = out.substring(next_line + 1);
7484 }
7485
7486 this.stack = out;
7487 }
7488 }
7489 };
7490
7491 // assert.AssertionError instanceof Error
7492 util.inherits(assert.AssertionError, Error);
7493
7494 function truncate(s, n) {
7495 if (typeof s === 'string') {
7496 return s.length < n ? s : s.slice(0, n);
7497 } else {
7498 return s;
7499 }
7500 }
7501 function inspect(something) {
7502 if (functionsHaveNames || !util.isFunction(something)) {
7503 return util.inspect(something);
7504 }
7505 var rawname = getName(something);
7506 var name = rawname ? ': ' + rawname : '';
7507 return '[Function' + name + ']';
7508 }
7509 function getMessage(self) {
7510 return truncate(inspect(self.actual), 128) + ' ' +
7511 self.operator + ' ' +
7512 truncate(inspect(self.expected), 128);
7513 }
7514
7515 // At present only the three keys mentioned above are used and
7516 // understood by the spec. Implementations or sub modules can pass
7517 // other keys to the AssertionError's constructor - they will be
7518 // ignored.
7519
7520 // 3. All of the following functions must throw an AssertionError
7521 // when a corresponding condition is not met, with a message that
7522 // may be undefined if not provided. All assertion methods provide
7523 // both the actual and expected values to the assertion error for
7524 // display purposes.
7525
7526 function fail(actual, expected, message, operator, stackStartFunction) {
7527 throw new assert.AssertionError({
7528 message: message,
7529 actual: actual,
7530 expected: expected,
7531 operator: operator,
7532 stackStartFunction: stackStartFunction
7533 });
7534 }
7535
7536 // EXTENSION! allows for well behaved errors defined elsewhere.
7537 assert.fail = fail;
7538
7539 // 4. Pure assertion tests whether a value is truthy, as determined
7540 // by !!guard.
7541 // assert.ok(guard, message_opt);
7542 // This statement is equivalent to assert.equal(true, !!guard,
7543 // message_opt);. To test strictly for the value true, use
7544 // assert.strictEqual(true, guard, message_opt);.
7545
7546 function ok(value, message) {
7547 if (!value) fail(value, true, message, '==', assert.ok);
7548 }
7549 assert.ok = ok;
7550
7551 // 5. The equality assertion tests shallow, coercive equality with
7552 // ==.
7553 // assert.equal(actual, expected, message_opt);
7554
7555 assert.equal = function equal(actual, expected, message) {
7556 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7557 };
7558
7559 // 6. The non-equality assertion tests for whether two objects are not equal
7560 // with != assert.notEqual(actual, expected, message_opt);
7561
7562 assert.notEqual = function notEqual(actual, expected, message) {
7563 if (actual == expected) {
7564 fail(actual, expected, message, '!=', assert.notEqual);
7565 }
7566 };
7567
7568 // 7. The equivalence assertion tests a deep equality relation.
7569 // assert.deepEqual(actual, expected, message_opt);
7570
7571 assert.deepEqual = function deepEqual(actual, expected, message) {
7572 if (!_deepEqual(actual, expected, false)) {
7573 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7574 }
7575 };
7576
7577 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7578 if (!_deepEqual(actual, expected, true)) {
7579 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7580 }
7581 };
7582
7583 function _deepEqual(actual, expected, strict, memos) {
7584 // 7.1. All identical values are equivalent, as determined by ===.
7585 if (actual === expected) {
7586 return true;
7587 } else if (isBuffer(actual) && isBuffer(expected)) {
7588 return compare(actual, expected) === 0;
7589
7590 // 7.2. If the expected value is a Date object, the actual value is
7591 // equivalent if it is also a Date object that refers to the same time.
7592 } else if (util.isDate(actual) && util.isDate(expected)) {
7593 return actual.getTime() === expected.getTime();
7594
7595 // 7.3 If the expected value is a RegExp object, the actual value is
7596 // equivalent if it is also a RegExp object with the same source and
7597 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7598 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7599 return actual.source === expected.source &&
7600 actual.global === expected.global &&
7601 actual.multiline === expected.multiline &&
7602 actual.lastIndex === expected.lastIndex &&
7603 actual.ignoreCase === expected.ignoreCase;
7604
7605 // 7.4. Other pairs that do not both pass typeof value == 'object',
7606 // equivalence is determined by ==.
7607 } else if ((actual === null || typeof actual !== 'object') &&
7608 (expected === null || typeof expected !== 'object')) {
7609 return strict ? actual === expected : actual == expected;
7610
7611 // If both values are instances of typed arrays, wrap their underlying
7612 // ArrayBuffers in a Buffer each to increase performance
7613 // This optimization requires the arrays to have the same type as checked by
7614 // Object.prototype.toString (aka pToString). Never perform binary
7615 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7616 // bit patterns are not identical.
7617 } else if (isView(actual) && isView(expected) &&
7618 pToString(actual) === pToString(expected) &&
7619 !(actual instanceof Float32Array ||
7620 actual instanceof Float64Array)) {
7621 return compare(new Uint8Array(actual.buffer),
7622 new Uint8Array(expected.buffer)) === 0;
7623
7624 // 7.5 For all other Object pairs, including Array objects, equivalence is
7625 // determined by having the same number of owned properties (as verified
7626 // with Object.prototype.hasOwnProperty.call), the same set of keys
7627 // (although not necessarily the same order), equivalent values for every
7628 // corresponding key, and an identical 'prototype' property. Note: this
7629 // accounts for both named and indexed properties on Arrays.
7630 } else if (isBuffer(actual) !== isBuffer(expected)) {
7631 return false;
7632 } else {
7633 memos = memos || {actual: [], expected: []};
7634
7635 var actualIndex = memos.actual.indexOf(actual);
7636 if (actualIndex !== -1) {
7637 if (actualIndex === memos.expected.indexOf(expected)) {
7638 return true;
7639 }
7640 }
7641
7642 memos.actual.push(actual);
7643 memos.expected.push(expected);
7644
7645 return objEquiv(actual, expected, strict, memos);
7646 }
7647 }
7648
7649 function isArguments(object) {
7650 return Object.prototype.toString.call(object) == '[object Arguments]';
7651 }
7652
7653 function objEquiv(a, b, strict, actualVisitedObjects) {
7654 if (a === null || a === undefined || b === null || b === undefined)
7655 return false;
7656 // if one is a primitive, the other must be same
7657 if (util.isPrimitive(a) || util.isPrimitive(b))
7658 return a === b;
7659 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7660 return false;
7661 var aIsArgs = isArguments(a);
7662 var bIsArgs = isArguments(b);
7663 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7664 return false;
7665 if (aIsArgs) {
7666 a = pSlice.call(a);
7667 b = pSlice.call(b);
7668 return _deepEqual(a, b, strict);
7669 }
7670 var ka = objectKeys(a);
7671 var kb = objectKeys(b);
7672 var key, i;
7673 // having the same number of owned properties (keys incorporates
7674 // hasOwnProperty)
7675 if (ka.length !== kb.length)
7676 return false;
7677 //the same set of keys (although not necessarily the same order),
7678 ka.sort();
7679 kb.sort();
7680 //~~~cheap key test
7681 for (i = ka.length - 1; i >= 0; i--) {
7682 if (ka[i] !== kb[i])
7683 return false;
7684 }
7685 //equivalent values for every corresponding key, and
7686 //~~~possibly expensive deep test
7687 for (i = ka.length - 1; i >= 0; i--) {
7688 key = ka[i];
7689 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7690 return false;
7691 }
7692 return true;
7693 }
7694
7695 // 8. The non-equivalence assertion tests for any deep inequality.
7696 // assert.notDeepEqual(actual, expected, message_opt);
7697
7698 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7699 if (_deepEqual(actual, expected, false)) {
7700 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7701 }
7702 };
7703
7704 assert.notDeepStrictEqual = notDeepStrictEqual;
7705 function notDeepStrictEqual(actual, expected, message) {
7706 if (_deepEqual(actual, expected, true)) {
7707 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7708 }
7709 }
7710
7711
7712 // 9. The strict equality assertion tests strict equality, as determined by ===.
7713 // assert.strictEqual(actual, expected, message_opt);
7714
7715 assert.strictEqual = function strictEqual(actual, expected, message) {
7716 if (actual !== expected) {
7717 fail(actual, expected, message, '===', assert.strictEqual);
7718 }
7719 };
7720
7721 // 10. The strict non-equality assertion tests for strict inequality, as
7722 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7723
7724 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7725 if (actual === expected) {
7726 fail(actual, expected, message, '!==', assert.notStrictEqual);
7727 }
7728 };
7729
7730 function expectedException(actual, expected) {
7731 if (!actual || !expected) {
7732 return false;
7733 }
7734
7735 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7736 return expected.test(actual);
7737 }
7738
7739 try {
7740 if (actual instanceof expected) {
7741 return true;
7742 }
7743 } catch (e) {
7744 // Ignore. The instanceof check doesn't work for arrow functions.
7745 }
7746
7747 if (Error.isPrototypeOf(expected)) {
7748 return false;
7749 }
7750
7751 return expected.call({}, actual) === true;
7752 }
7753
7754 function _tryBlock(block) {
7755 var error;
7756 try {
7757 block();
7758 } catch (e) {
7759 error = e;
7760 }
7761 return error;
7762 }
7763
7764 function _throws(shouldThrow, block, expected, message) {
7765 var actual;
7766
7767 if (typeof block !== 'function') {
7768 throw new TypeError('"block" argument must be a function');
7769 }
7770
7771 if (typeof expected === 'string') {
7772 message = expected;
7773 expected = null;
7774 }
7775
7776 actual = _tryBlock(block);
7777
7778 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7779 (message ? ' ' + message : '.');
7780
7781 if (shouldThrow && !actual) {
7782 fail(actual, expected, 'Missing expected exception' + message);
7783 }
7784
7785 var userProvidedMessage = typeof message === 'string';
7786 var isUnwantedException = !shouldThrow && util.isError(actual);
7787 var isUnexpectedException = !shouldThrow && actual && !expected;
7788
7789 if ((isUnwantedException &&
7790 userProvidedMessage &&
7791 expectedException(actual, expected)) ||
7792 isUnexpectedException) {
7793 fail(actual, expected, 'Got unwanted exception' + message);
7794 }
7795
7796 if ((shouldThrow && actual && expected &&
7797 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7798 throw actual;
7799 }
7800 }
7801
7802 // 11. Expected to throw an error:
7803 // assert.throws(block, Error_opt, message_opt);
7804
7805 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7806 _throws(true, block, error, message);
7807 };
7808
7809 // EXTENSION! This is annoying to write outside this module.
7810 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7811 _throws(false, block, error, message);
7812 };
7813
7814 assert.ifError = function(err) { if (err) throw err; };
7815
7816 var objectKeys = Object.keys || function (obj) {
7817 var keys = [];
7818 for (var key in obj) {
7819 if (hasOwn.call(obj, key)) keys.push(key);
7820 }
7821 return keys;
7822 };
7823
7824 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7825 },{"util/":32}],2:[function(require,module,exports){
7826 'use strict'
7827
7828 exports.byteLength = byteLength
7829 exports.toByteArray = toByteArray
7830 exports.fromByteArray = fromByteArray
7831
7832 var lookup = []
7833 var revLookup = []
7834 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7835
7836 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7837 for (var i = 0, len = code.length; i < len; ++i) {
7838 lookup[i] = code[i]
7839 revLookup[code.charCodeAt(i)] = i
7840 }
7841
7842 revLookup['-'.charCodeAt(0)] = 62
7843 revLookup['_'.charCodeAt(0)] = 63
7844
7845 function placeHoldersCount (b64) {
7846 var len = b64.length
7847 if (len % 4 > 0) {
7848 throw new Error('Invalid string. Length must be a multiple of 4')
7849 }
7850
7851 // the number of equal signs (place holders)
7852 // if there are two placeholders, than the two characters before it
7853 // represent one byte
7854 // if there is only one, then the three characters before it represent 2 bytes
7855 // this is just a cheap hack to not do indexOf twice
7856 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7857 }
7858
7859 function byteLength (b64) {
7860 // base64 is 4/3 + up to two characters of the original data
7861 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7862 }
7863
7864 function toByteArray (b64) {
7865 var i, l, tmp, placeHolders, arr
7866 var len = b64.length
7867 placeHolders = placeHoldersCount(b64)
7868
7869 arr = new Arr((len * 3 / 4) - placeHolders)
7870
7871 // if there are placeholders, only get up to the last complete 4 chars
7872 l = placeHolders > 0 ? len - 4 : len
7873
7874 var L = 0
7875
7876 for (i = 0; i < l; i += 4) {
7877 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7878 arr[L++] = (tmp >> 16) & 0xFF
7879 arr[L++] = (tmp >> 8) & 0xFF
7880 arr[L++] = tmp & 0xFF
7881 }
7882
7883 if (placeHolders === 2) {
7884 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7885 arr[L++] = tmp & 0xFF
7886 } else if (placeHolders === 1) {
7887 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7888 arr[L++] = (tmp >> 8) & 0xFF
7889 arr[L++] = tmp & 0xFF
7890 }
7891
7892 return arr
7893 }
7894
7895 function tripletToBase64 (num) {
7896 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7897 }
7898
7899 function encodeChunk (uint8, start, end) {
7900 var tmp
7901 var output = []
7902 for (var i = start; i < end; i += 3) {
7903 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7904 output.push(tripletToBase64(tmp))
7905 }
7906 return output.join('')
7907 }
7908
7909 function fromByteArray (uint8) {
7910 var tmp
7911 var len = uint8.length
7912 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7913 var output = ''
7914 var parts = []
7915 var maxChunkLength = 16383 // must be multiple of 3
7916
7917 // go through the array every three bytes, we'll deal with trailing stuff later
7918 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7919 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7920 }
7921
7922 // pad the end with zeros, but make sure to not forget the extra bytes
7923 if (extraBytes === 1) {
7924 tmp = uint8[len - 1]
7925 output += lookup[tmp >> 2]
7926 output += lookup[(tmp << 4) & 0x3F]
7927 output += '=='
7928 } else if (extraBytes === 2) {
7929 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7930 output += lookup[tmp >> 10]
7931 output += lookup[(tmp >> 4) & 0x3F]
7932 output += lookup[(tmp << 2) & 0x3F]
7933 output += '='
7934 }
7935
7936 parts.push(output)
7937
7938 return parts.join('')
7939 }
7940
7941 },{}],3:[function(require,module,exports){
7942
7943 },{}],4:[function(require,module,exports){
7944 /*!
7945 * The buffer module from node.js, for the browser.
7946 *
7947 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7948 * @license MIT
7949 */
7950 /* eslint-disable no-proto */
7951
7952 'use strict'
7953
7954 var base64 = require('base64-js')
7955 var ieee754 = require('ieee754')
7956
7957 exports.Buffer = Buffer
7958 exports.SlowBuffer = SlowBuffer
7959 exports.INSPECT_MAX_BYTES = 50
7960
7961 var K_MAX_LENGTH = 0x7fffffff
7962 exports.kMaxLength = K_MAX_LENGTH
7963
7964 /**
7965 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7966 * === true Use Uint8Array implementation (fastest)
7967 * === false Print warning and recommend using `buffer` v4.x which has an Object
7968 * implementation (most compatible, even IE6)
7969 *
7970 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7971 * Opera 11.6+, iOS 4.2+.
7972 *
7973 * We report that the browser does not support typed arrays if the are not subclassable
7974 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7975 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7976 * for __proto__ and has a buggy typed array implementation.
7977 */
7978 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7979
7980 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7981 typeof console.error === 'function') {
7982 console.error(
7983 'This browser lacks typed array (Uint8Array) support which is required by ' +
7984 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7985 )
7986 }
7987
7988 function typedArraySupport () {
7989 // Can typed array instances can be augmented?
7990 try {
7991 var arr = new Uint8Array(1)
7992 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7993 return arr.foo() === 42
7994 } catch (e) {
7995 return false
7996 }
7997 }
7998
7999 function createBuffer (length) {
8000 if (length > K_MAX_LENGTH) {
8001 throw new RangeError('Invalid typed array length')
8002 }
8003 // Return an augmented `Uint8Array` instance
8004 var buf = new Uint8Array(length)
8005 buf.__proto__ = Buffer.prototype
8006 return buf
8007 }
8008
8009 /**
8010 * The Buffer constructor returns instances of `Uint8Array` that have their
8011 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
8012 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
8013 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
8014 * returns a single octet.
8015 *
8016 * The `Uint8Array` prototype remains unmodified.
8017 */
8018
8019 function Buffer (arg, encodingOrOffset, length) {
8020 // Common case.
8021 if (typeof arg === 'number') {
8022 if (typeof encodingOrOffset === 'string') {
8023 throw new Error(
8024 'If encoding is specified then the first argument must be a string'
8025 )
8026 }
8027 return allocUnsafe(arg)
8028 }
8029 return from(arg, encodingOrOffset, length)
8030 }
8031
8032 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
8033 if (typeof Symbol !== 'undefined' && Symbol.species &&
8034 Buffer[Symbol.species] === Buffer) {
8035 Object.defineProperty(Buffer, Symbol.species, {
8036 value: null,
8037 configurable: true,
8038 enumerable: false,
8039 writable: false
8040 })
8041 }
8042
8043 Buffer.poolSize = 8192 // not used by this implementation
8044
8045 function from (value, encodingOrOffset, length) {
8046 if (typeof value === 'number') {
8047 throw new TypeError('"value" argument must not be a number')
8048 }
8049
8050 if (value instanceof ArrayBuffer) {
8051 return fromArrayBuffer(value, encodingOrOffset, length)
8052 }
8053
8054 if (typeof value === 'string') {
8055 return fromString(value, encodingOrOffset)
8056 }
8057
8058 return fromObject(value)
8059 }
8060
8061 /**
8062 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8063 * if value is a number.
8064 * Buffer.from(str[, encoding])
8065 * Buffer.from(array)
8066 * Buffer.from(buffer)
8067 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8068 **/
8069 Buffer.from = function (value, encodingOrOffset, length) {
8070 return from(value, encodingOrOffset, length)
8071 }
8072
8073 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8074 // https://github.com/feross/buffer/pull/148
8075 Buffer.prototype.__proto__ = Uint8Array.prototype
8076 Buffer.__proto__ = Uint8Array
8077
8078 function assertSize (size) {
8079 if (typeof size !== 'number') {
8080 throw new TypeError('"size" argument must be a number')
8081 } else if (size < 0) {
8082 throw new RangeError('"size" argument must not be negative')
8083 }
8084 }
8085
8086 function alloc (size, fill, encoding) {
8087 assertSize(size)
8088 if (size <= 0) {
8089 return createBuffer(size)
8090 }
8091 if (fill !== undefined) {
8092 // Only pay attention to encoding if it's a string. This
8093 // prevents accidentally sending in a number that would
8094 // be interpretted as a start offset.
8095 return typeof encoding === 'string'
8096 ? createBuffer(size).fill(fill, encoding)
8097 : createBuffer(size).fill(fill)
8098 }
8099 return createBuffer(size)
8100 }
8101
8102 /**
8103 * Creates a new filled Buffer instance.
8104 * alloc(size[, fill[, encoding]])
8105 **/
8106 Buffer.alloc = function (size, fill, encoding) {
8107 return alloc(size, fill, encoding)
8108 }
8109
8110 function allocUnsafe (size) {
8111 assertSize(size)
8112 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8113 }
8114
8115 /**
8116 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8117 * */
8118 Buffer.allocUnsafe = function (size) {
8119 return allocUnsafe(size)
8120 }
8121 /**
8122 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8123 */
8124 Buffer.allocUnsafeSlow = function (size) {
8125 return allocUnsafe(size)
8126 }
8127
8128 function fromString (string, encoding) {
8129 if (typeof encoding !== 'string' || encoding === '') {
8130 encoding = 'utf8'
8131 }
8132
8133 if (!Buffer.isEncoding(encoding)) {
8134 throw new TypeError('"encoding" must be a valid string encoding')
8135 }
8136
8137 var length = byteLength(string, encoding) | 0
8138 var buf = createBuffer(length)
8139
8140 var actual = buf.write(string, encoding)
8141
8142 if (actual !== length) {
8143 // Writing a hex string, for example, that contains invalid characters will
8144 // cause everything after the first invalid character to be ignored. (e.g.
8145 // 'abxxcd' will be treated as 'ab')
8146 buf = buf.slice(0, actual)
8147 }
8148
8149 return buf
8150 }
8151
8152 function fromArrayLike (array) {
8153 var length = array.length < 0 ? 0 : checked(array.length) | 0
8154 var buf = createBuffer(length)
8155 for (var i = 0; i < length; i += 1) {
8156 buf[i] = array[i] & 255
8157 }
8158 return buf
8159 }
8160
8161 function fromArrayBuffer (array, byteOffset, length) {
8162 if (byteOffset < 0 || array.byteLength < byteOffset) {
8163 throw new RangeError('\'offset\' is out of bounds')
8164 }
8165
8166 if (array.byteLength < byteOffset + (length || 0)) {
8167 throw new RangeError('\'length\' is out of bounds')
8168 }
8169
8170 var buf
8171 if (byteOffset === undefined && length === undefined) {
8172 buf = new Uint8Array(array)
8173 } else if (length === undefined) {
8174 buf = new Uint8Array(array, byteOffset)
8175 } else {
8176 buf = new Uint8Array(array, byteOffset, length)
8177 }
8178
8179 // Return an augmented `Uint8Array` instance
8180 buf.__proto__ = Buffer.prototype
8181 return buf
8182 }
8183
8184 function fromObject (obj) {
8185 if (Buffer.isBuffer(obj)) {
8186 var len = checked(obj.length) | 0
8187 var buf = createBuffer(len)
8188
8189 if (buf.length === 0) {
8190 return buf
8191 }
8192
8193 obj.copy(buf, 0, 0, len)
8194 return buf
8195 }
8196
8197 if (obj) {
8198 if (isArrayBufferView(obj) || 'length' in obj) {
8199 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8200 return createBuffer(0)
8201 }
8202 return fromArrayLike(obj)
8203 }
8204
8205 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8206 return fromArrayLike(obj.data)
8207 }
8208 }
8209
8210 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8211 }
8212
8213 function checked (length) {
8214 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8215 // length is NaN (which is otherwise coerced to zero.)
8216 if (length >= K_MAX_LENGTH) {
8217 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8218 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8219 }
8220 return length | 0
8221 }
8222
8223 function SlowBuffer (length) {
8224 if (+length != length) { // eslint-disable-line eqeqeq
8225 length = 0
8226 }
8227 return Buffer.alloc(+length)
8228 }
8229
8230 Buffer.isBuffer = function isBuffer (b) {
8231 return b != null && b._isBuffer === true
8232 }
8233
8234 Buffer.compare = function compare (a, b) {
8235 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8236 throw new TypeError('Arguments must be Buffers')
8237 }
8238
8239 if (a === b) return 0
8240
8241 var x = a.length
8242 var y = b.length
8243
8244 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8245 if (a[i] !== b[i]) {
8246 x = a[i]
8247 y = b[i]
8248 break
8249 }
8250 }
8251
8252 if (x < y) return -1
8253 if (y < x) return 1
8254 return 0
8255 }
8256
8257 Buffer.isEncoding = function isEncoding (encoding) {
8258 switch (String(encoding).toLowerCase()) {
8259 case 'hex':
8260 case 'utf8':
8261 case 'utf-8':
8262 case 'ascii':
8263 case 'latin1':
8264 case 'binary':
8265 case 'base64':
8266 case 'ucs2':
8267 case 'ucs-2':
8268 case 'utf16le':
8269 case 'utf-16le':
8270 return true
8271 default:
8272 return false
8273 }
8274 }
8275
8276 Buffer.concat = function concat (list, length) {
8277 if (!Array.isArray(list)) {
8278 throw new TypeError('"list" argument must be an Array of Buffers')
8279 }
8280
8281 if (list.length === 0) {
8282 return Buffer.alloc(0)
8283 }
8284
8285 var i
8286 if (length === undefined) {
8287 length = 0
8288 for (i = 0; i < list.length; ++i) {
8289 length += list[i].length
8290 }
8291 }
8292
8293 var buffer = Buffer.allocUnsafe(length)
8294 var pos = 0
8295 for (i = 0; i < list.length; ++i) {
8296 var buf = list[i]
8297 if (!Buffer.isBuffer(buf)) {
8298 throw new TypeError('"list" argument must be an Array of Buffers')
8299 }
8300 buf.copy(buffer, pos)
8301 pos += buf.length
8302 }
8303 return buffer
8304 }
8305
8306 function byteLength (string, encoding) {
8307 if (Buffer.isBuffer(string)) {
8308 return string.length
8309 }
8310 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8311 return string.byteLength
8312 }
8313 if (typeof string !== 'string') {
8314 string = '' + string
8315 }
8316
8317 var len = string.length
8318 if (len === 0) return 0
8319
8320 // Use a for loop to avoid recursion
8321 var loweredCase = false
8322 for (;;) {
8323 switch (encoding) {
8324 case 'ascii':
8325 case 'latin1':
8326 case 'binary':
8327 return len
8328 case 'utf8':
8329 case 'utf-8':
8330 case undefined:
8331 return utf8ToBytes(string).length
8332 case 'ucs2':
8333 case 'ucs-2':
8334 case 'utf16le':
8335 case 'utf-16le':
8336 return len * 2
8337 case 'hex':
8338 return len >>> 1
8339 case 'base64':
8340 return base64ToBytes(string).length
8341 default:
8342 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8343 encoding = ('' + encoding).toLowerCase()
8344 loweredCase = true
8345 }
8346 }
8347 }
8348 Buffer.byteLength = byteLength
8349
8350 function slowToString (encoding, start, end) {
8351 var loweredCase = false
8352
8353 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8354 // property of a typed array.
8355
8356 // This behaves neither like String nor Uint8Array in that we set start/end
8357 // to their upper/lower bounds if the value passed is out of range.
8358 // undefined is handled specially as per ECMA-262 6th Edition,
8359 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8360 if (start === undefined || start < 0) {
8361 start = 0
8362 }
8363 // Return early if start > this.length. Done here to prevent potential uint32
8364 // coercion fail below.
8365 if (start > this.length) {
8366 return ''
8367 }
8368
8369 if (end === undefined || end > this.length) {
8370 end = this.length
8371 }
8372
8373 if (end <= 0) {
8374 return ''
8375 }
8376
8377 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8378 end >>>= 0
8379 start >>>= 0
8380
8381 if (end <= start) {
8382 return ''
8383 }
8384
8385 if (!encoding) encoding = 'utf8'
8386
8387 while (true) {
8388 switch (encoding) {
8389 case 'hex':
8390 return hexSlice(this, start, end)
8391
8392 case 'utf8':
8393 case 'utf-8':
8394 return utf8Slice(this, start, end)
8395
8396 case 'ascii':
8397 return asciiSlice(this, start, end)
8398
8399 case 'latin1':
8400 case 'binary':
8401 return latin1Slice(this, start, end)
8402
8403 case 'base64':
8404 return base64Slice(this, start, end)
8405
8406 case 'ucs2':
8407 case 'ucs-2':
8408 case 'utf16le':
8409 case 'utf-16le':
8410 return utf16leSlice(this, start, end)
8411
8412 default:
8413 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8414 encoding = (encoding + '').toLowerCase()
8415 loweredCase = true
8416 }
8417 }
8418 }
8419
8420 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8421 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8422 // reliably in a browserify context because there could be multiple different
8423 // copies of the 'buffer' package in use. This method works even for Buffer
8424 // instances that were created from another copy of the `buffer` package.
8425 // See: https://github.com/feross/buffer/issues/154
8426 Buffer.prototype._isBuffer = true
8427
8428 function swap (b, n, m) {
8429 var i = b[n]
8430 b[n] = b[m]
8431 b[m] = i
8432 }
8433
8434 Buffer.prototype.swap16 = function swap16 () {
8435 var len = this.length
8436 if (len % 2 !== 0) {
8437 throw new RangeError('Buffer size must be a multiple of 16-bits')
8438 }
8439 for (var i = 0; i < len; i += 2) {
8440 swap(this, i, i + 1)
8441 }
8442 return this
8443 }
8444
8445 Buffer.prototype.swap32 = function swap32 () {
8446 var len = this.length
8447 if (len % 4 !== 0) {
8448 throw new RangeError('Buffer size must be a multiple of 32-bits')
8449 }
8450 for (var i = 0; i < len; i += 4) {
8451 swap(this, i, i + 3)
8452 swap(this, i + 1, i + 2)
8453 }
8454 return this
8455 }
8456
8457 Buffer.prototype.swap64 = function swap64 () {
8458 var len = this.length
8459 if (len % 8 !== 0) {
8460 throw new RangeError('Buffer size must be a multiple of 64-bits')
8461 }
8462 for (var i = 0; i < len; i += 8) {
8463 swap(this, i, i + 7)
8464 swap(this, i + 1, i + 6)
8465 swap(this, i + 2, i + 5)
8466 swap(this, i + 3, i + 4)
8467 }
8468 return this
8469 }
8470
8471 Buffer.prototype.toString = function toString () {
8472 var length = this.length
8473 if (length === 0) return ''
8474 if (arguments.length === 0) return utf8Slice(this, 0, length)
8475 return slowToString.apply(this, arguments)
8476 }
8477
8478 Buffer.prototype.equals = function equals (b) {
8479 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8480 if (this === b) return true
8481 return Buffer.compare(this, b) === 0
8482 }
8483
8484 Buffer.prototype.inspect = function inspect () {
8485 var str = ''
8486 var max = exports.INSPECT_MAX_BYTES
8487 if (this.length > 0) {
8488 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8489 if (this.length > max) str += ' ... '
8490 }
8491 return '<Buffer ' + str + '>'
8492 }
8493
8494 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8495 if (!Buffer.isBuffer(target)) {
8496 throw new TypeError('Argument must be a Buffer')
8497 }
8498
8499 if (start === undefined) {
8500 start = 0
8501 }
8502 if (end === undefined) {
8503 end = target ? target.length : 0
8504 }
8505 if (thisStart === undefined) {
8506 thisStart = 0
8507 }
8508 if (thisEnd === undefined) {
8509 thisEnd = this.length
8510 }
8511
8512 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8513 throw new RangeError('out of range index')
8514 }
8515
8516 if (thisStart >= thisEnd && start >= end) {
8517 return 0
8518 }
8519 if (thisStart >= thisEnd) {
8520 return -1
8521 }
8522 if (start >= end) {
8523 return 1
8524 }
8525
8526 start >>>= 0
8527 end >>>= 0
8528 thisStart >>>= 0
8529 thisEnd >>>= 0
8530
8531 if (this === target) return 0
8532
8533 var x = thisEnd - thisStart
8534 var y = end - start
8535 var len = Math.min(x, y)
8536
8537 var thisCopy = this.slice(thisStart, thisEnd)
8538 var targetCopy = target.slice(start, end)
8539
8540 for (var i = 0; i < len; ++i) {
8541 if (thisCopy[i] !== targetCopy[i]) {
8542 x = thisCopy[i]
8543 y = targetCopy[i]
8544 break
8545 }
8546 }
8547
8548 if (x < y) return -1
8549 if (y < x) return 1
8550 return 0
8551 }
8552
8553 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8554 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8555 //
8556 // Arguments:
8557 // - buffer - a Buffer to search
8558 // - val - a string, Buffer, or number
8559 // - byteOffset - an index into `buffer`; will be clamped to an int32
8560 // - encoding - an optional encoding, relevant is val is a string
8561 // - dir - true for indexOf, false for lastIndexOf
8562 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8563 // Empty buffer means no match
8564 if (buffer.length === 0) return -1
8565
8566 // Normalize byteOffset
8567 if (typeof byteOffset === 'string') {
8568 encoding = byteOffset
8569 byteOffset = 0
8570 } else if (byteOffset > 0x7fffffff) {
8571 byteOffset = 0x7fffffff
8572 } else if (byteOffset < -0x80000000) {
8573 byteOffset = -0x80000000
8574 }
8575 byteOffset = +byteOffset // Coerce to Number.
8576 if (numberIsNaN(byteOffset)) {
8577 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8578 byteOffset = dir ? 0 : (buffer.length - 1)
8579 }
8580
8581 // Normalize byteOffset: negative offsets start from the end of the buffer
8582 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8583 if (byteOffset >= buffer.length) {
8584 if (dir) return -1
8585 else byteOffset = buffer.length - 1
8586 } else if (byteOffset < 0) {
8587 if (dir) byteOffset = 0
8588 else return -1
8589 }
8590
8591 // Normalize val
8592 if (typeof val === 'string') {
8593 val = Buffer.from(val, encoding)
8594 }
8595
8596 // Finally, search either indexOf (if dir is true) or lastIndexOf
8597 if (Buffer.isBuffer(val)) {
8598 // Special case: looking for empty string/buffer always fails
8599 if (val.length === 0) {
8600 return -1
8601 }
8602 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8603 } else if (typeof val === 'number') {
8604 val = val & 0xFF // Search for a byte value [0-255]
8605 if (typeof Uint8Array.prototype.indexOf === 'function') {
8606 if (dir) {
8607 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8608 } else {
8609 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8610 }
8611 }
8612 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8613 }
8614
8615 throw new TypeError('val must be string, number or Buffer')
8616 }
8617
8618 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8619 var indexSize = 1
8620 var arrLength = arr.length
8621 var valLength = val.length
8622
8623 if (encoding !== undefined) {
8624 encoding = String(encoding).toLowerCase()
8625 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8626 encoding === 'utf16le' || encoding === 'utf-16le') {
8627 if (arr.length < 2 || val.length < 2) {
8628 return -1
8629 }
8630 indexSize = 2
8631 arrLength /= 2
8632 valLength /= 2
8633 byteOffset /= 2
8634 }
8635 }
8636
8637 function read (buf, i) {
8638 if (indexSize === 1) {
8639 return buf[i]
8640 } else {
8641 return buf.readUInt16BE(i * indexSize)
8642 }
8643 }
8644
8645 var i
8646 if (dir) {
8647 var foundIndex = -1
8648 for (i = byteOffset; i < arrLength; i++) {
8649 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8650 if (foundIndex === -1) foundIndex = i
8651 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8652 } else {
8653 if (foundIndex !== -1) i -= i - foundIndex
8654 foundIndex = -1
8655 }
8656 }
8657 } else {
8658 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8659 for (i = byteOffset; i >= 0; i--) {
8660 var found = true
8661 for (var j = 0; j < valLength; j++) {
8662 if (read(arr, i + j) !== read(val, j)) {
8663 found = false
8664 break
8665 }
8666 }
8667 if (found) return i
8668 }
8669 }
8670
8671 return -1
8672 }
8673
8674 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8675 return this.indexOf(val, byteOffset, encoding) !== -1
8676 }
8677
8678 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8679 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8680 }
8681
8682 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8683 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8684 }
8685
8686 function hexWrite (buf, string, offset, length) {
8687 offset = Number(offset) || 0
8688 var remaining = buf.length - offset
8689 if (!length) {
8690 length = remaining
8691 } else {
8692 length = Number(length)
8693 if (length > remaining) {
8694 length = remaining
8695 }
8696 }
8697
8698 // must be an even number of digits
8699 var strLen = string.length
8700 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8701
8702 if (length > strLen / 2) {
8703 length = strLen / 2
8704 }
8705 for (var i = 0; i < length; ++i) {
8706 var parsed = parseInt(string.substr(i * 2, 2), 16)
8707 if (numberIsNaN(parsed)) return i
8708 buf[offset + i] = parsed
8709 }
8710 return i
8711 }
8712
8713 function utf8Write (buf, string, offset, length) {
8714 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8715 }
8716
8717 function asciiWrite (buf, string, offset, length) {
8718 return blitBuffer(asciiToBytes(string), buf, offset, length)
8719 }
8720
8721 function latin1Write (buf, string, offset, length) {
8722 return asciiWrite(buf, string, offset, length)
8723 }
8724
8725 function base64Write (buf, string, offset, length) {
8726 return blitBuffer(base64ToBytes(string), buf, offset, length)
8727 }
8728
8729 function ucs2Write (buf, string, offset, length) {
8730 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8731 }
8732
8733 Buffer.prototype.write = function write (string, offset, length, encoding) {
8734 // Buffer#write(string)
8735 if (offset === undefined) {
8736 encoding = 'utf8'
8737 length = this.length
8738 offset = 0
8739 // Buffer#write(string, encoding)
8740 } else if (length === undefined && typeof offset === 'string') {
8741 encoding = offset
8742 length = this.length
8743 offset = 0
8744 // Buffer#write(string, offset[, length][, encoding])
8745 } else if (isFinite(offset)) {
8746 offset = offset >>> 0
8747 if (isFinite(length)) {
8748 length = length >>> 0
8749 if (encoding === undefined) encoding = 'utf8'
8750 } else {
8751 encoding = length
8752 length = undefined
8753 }
8754 } else {
8755 throw new Error(
8756 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8757 )
8758 }
8759
8760 var remaining = this.length - offset
8761 if (length === undefined || length > remaining) length = remaining
8762
8763 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8764 throw new RangeError('Attempt to write outside buffer bounds')
8765 }
8766
8767 if (!encoding) encoding = 'utf8'
8768
8769 var loweredCase = false
8770 for (;;) {
8771 switch (encoding) {
8772 case 'hex':
8773 return hexWrite(this, string, offset, length)
8774
8775 case 'utf8':
8776 case 'utf-8':
8777 return utf8Write(this, string, offset, length)
8778
8779 case 'ascii':
8780 return asciiWrite(this, string, offset, length)
8781
8782 case 'latin1':
8783 case 'binary':
8784 return latin1Write(this, string, offset, length)
8785
8786 case 'base64':
8787 // Warning: maxLength not taken into account in base64Write
8788 return base64Write(this, string, offset, length)
8789
8790 case 'ucs2':
8791 case 'ucs-2':
8792 case 'utf16le':
8793 case 'utf-16le':
8794 return ucs2Write(this, string, offset, length)
8795
8796 default:
8797 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8798 encoding = ('' + encoding).toLowerCase()
8799 loweredCase = true
8800 }
8801 }
8802 }
8803
8804 Buffer.prototype.toJSON = function toJSON () {
8805 return {
8806 type: 'Buffer',
8807 data: Array.prototype.slice.call(this._arr || this, 0)
8808 }
8809 }
8810
8811 function base64Slice (buf, start, end) {
8812 if (start === 0 && end === buf.length) {
8813 return base64.fromByteArray(buf)
8814 } else {
8815 return base64.fromByteArray(buf.slice(start, end))
8816 }
8817 }
8818
8819 function utf8Slice (buf, start, end) {
8820 end = Math.min(buf.length, end)
8821 var res = []
8822
8823 var i = start
8824 while (i < end) {
8825 var firstByte = buf[i]
8826 var codePoint = null
8827 var bytesPerSequence = (firstByte > 0xEF) ? 4
8828 : (firstByte > 0xDF) ? 3
8829 : (firstByte > 0xBF) ? 2
8830 : 1
8831
8832 if (i + bytesPerSequence <= end) {
8833 var secondByte, thirdByte, fourthByte, tempCodePoint
8834
8835 switch (bytesPerSequence) {
8836 case 1:
8837 if (firstByte < 0x80) {
8838 codePoint = firstByte
8839 }
8840 break
8841 case 2:
8842 secondByte = buf[i + 1]
8843 if ((secondByte & 0xC0) === 0x80) {
8844 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8845 if (tempCodePoint > 0x7F) {
8846 codePoint = tempCodePoint
8847 }
8848 }
8849 break
8850 case 3:
8851 secondByte = buf[i + 1]
8852 thirdByte = buf[i + 2]
8853 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8854 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8855 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8856 codePoint = tempCodePoint
8857 }
8858 }
8859 break
8860 case 4:
8861 secondByte = buf[i + 1]
8862 thirdByte = buf[i + 2]
8863 fourthByte = buf[i + 3]
8864 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8865 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8866 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8867 codePoint = tempCodePoint
8868 }
8869 }
8870 }
8871 }
8872
8873 if (codePoint === null) {
8874 // we did not generate a valid codePoint so insert a
8875 // replacement char (U+FFFD) and advance only 1 byte
8876 codePoint = 0xFFFD
8877 bytesPerSequence = 1
8878 } else if (codePoint > 0xFFFF) {
8879 // encode to utf16 (surrogate pair dance)
8880 codePoint -= 0x10000
8881 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8882 codePoint = 0xDC00 | codePoint & 0x3FF
8883 }
8884
8885 res.push(codePoint)
8886 i += bytesPerSequence
8887 }
8888
8889 return decodeCodePointsArray(res)
8890 }
8891
8892 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
8893 // the lowest limit is Chrome, with 0x10000 args.
8894 // We go 1 magnitude less, for safety
8895 var MAX_ARGUMENTS_LENGTH = 0x1000
8896
8897 function decodeCodePointsArray (codePoints) {
8898 var len = codePoints.length
8899 if (len <= MAX_ARGUMENTS_LENGTH) {
8900 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8901 }
8902
8903 // Decode in chunks to avoid "call stack size exceeded".
8904 var res = ''
8905 var i = 0
8906 while (i < len) {
8907 res += String.fromCharCode.apply(
8908 String,
8909 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8910 )
8911 }
8912 return res
8913 }
8914
8915 function asciiSlice (buf, start, end) {
8916 var ret = ''
8917 end = Math.min(buf.length, end)
8918
8919 for (var i = start; i < end; ++i) {
8920 ret += String.fromCharCode(buf[i] & 0x7F)
8921 }
8922 return ret
8923 }
8924
8925 function latin1Slice (buf, start, end) {
8926 var ret = ''
8927 end = Math.min(buf.length, end)
8928
8929 for (var i = start; i < end; ++i) {
8930 ret += String.fromCharCode(buf[i])
8931 }
8932 return ret
8933 }
8934
8935 function hexSlice (buf, start, end) {
8936 var len = buf.length
8937
8938 if (!start || start < 0) start = 0
8939 if (!end || end < 0 || end > len) end = len
8940
8941 var out = ''
8942 for (var i = start; i < end; ++i) {
8943 out += toHex(buf[i])
8944 }
8945 return out
8946 }
8947
8948 function utf16leSlice (buf, start, end) {
8949 var bytes = buf.slice(start, end)
8950 var res = ''
8951 for (var i = 0; i < bytes.length; i += 2) {
8952 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8953 }
8954 return res
8955 }
8956
8957 Buffer.prototype.slice = function slice (start, end) {
8958 var len = this.length
8959 start = ~~start
8960 end = end === undefined ? len : ~~end
8961
8962 if (start < 0) {
8963 start += len
8964 if (start < 0) start = 0
8965 } else if (start > len) {
8966 start = len
8967 }
8968
8969 if (end < 0) {
8970 end += len
8971 if (end < 0) end = 0
8972 } else if (end > len) {
8973 end = len
8974 }
8975
8976 if (end < start) end = start
8977
8978 var newBuf = this.subarray(start, end)
8979 // Return an augmented `Uint8Array` instance
8980 newBuf.__proto__ = Buffer.prototype
8981 return newBuf
8982 }
8983
8984 /*
8985 * Need to make sure that buffer isn't trying to write out of bounds.
8986 */
8987 function checkOffset (offset, ext, length) {
8988 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8989 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8990 }
8991
8992 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8993 offset = offset >>> 0
8994 byteLength = byteLength >>> 0
8995 if (!noAssert) checkOffset(offset, byteLength, this.length)
8996
8997 var val = this[offset]
8998 var mul = 1
8999 var i = 0
9000 while (++i < byteLength && (mul *= 0x100)) {
9001 val += this[offset + i] * mul
9002 }
9003
9004 return val
9005 }
9006
9007 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
9008 offset = offset >>> 0
9009 byteLength = byteLength >>> 0
9010 if (!noAssert) {
9011 checkOffset(offset, byteLength, this.length)
9012 }
9013
9014 var val = this[offset + --byteLength]
9015 var mul = 1
9016 while (byteLength > 0 && (mul *= 0x100)) {
9017 val += this[offset + --byteLength] * mul
9018 }
9019
9020 return val
9021 }
9022
9023 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
9024 offset = offset >>> 0
9025 if (!noAssert) checkOffset(offset, 1, this.length)
9026 return this[offset]
9027 }
9028
9029 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
9030 offset = offset >>> 0
9031 if (!noAssert) checkOffset(offset, 2, this.length)
9032 return this[offset] | (this[offset + 1] << 8)
9033 }
9034
9035 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
9036 offset = offset >>> 0
9037 if (!noAssert) checkOffset(offset, 2, this.length)
9038 return (this[offset] << 8) | this[offset + 1]
9039 }
9040
9041 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
9042 offset = offset >>> 0
9043 if (!noAssert) checkOffset(offset, 4, this.length)
9044
9045 return ((this[offset]) |
9046 (this[offset + 1] << 8) |
9047 (this[offset + 2] << 16)) +
9048 (this[offset + 3] * 0x1000000)
9049 }
9050
9051 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
9052 offset = offset >>> 0
9053 if (!noAssert) checkOffset(offset, 4, this.length)
9054
9055 return (this[offset] * 0x1000000) +
9056 ((this[offset + 1] << 16) |
9057 (this[offset + 2] << 8) |
9058 this[offset + 3])
9059 }
9060
9061 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9062 offset = offset >>> 0
9063 byteLength = byteLength >>> 0
9064 if (!noAssert) checkOffset(offset, byteLength, this.length)
9065
9066 var val = this[offset]
9067 var mul = 1
9068 var i = 0
9069 while (++i < byteLength && (mul *= 0x100)) {
9070 val += this[offset + i] * mul
9071 }
9072 mul *= 0x80
9073
9074 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9075
9076 return val
9077 }
9078
9079 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9080 offset = offset >>> 0
9081 byteLength = byteLength >>> 0
9082 if (!noAssert) checkOffset(offset, byteLength, this.length)
9083
9084 var i = byteLength
9085 var mul = 1
9086 var val = this[offset + --i]
9087 while (i > 0 && (mul *= 0x100)) {
9088 val += this[offset + --i] * mul
9089 }
9090 mul *= 0x80
9091
9092 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9093
9094 return val
9095 }
9096
9097 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9098 offset = offset >>> 0
9099 if (!noAssert) checkOffset(offset, 1, this.length)
9100 if (!(this[offset] & 0x80)) return (this[offset])
9101 return ((0xff - this[offset] + 1) * -1)
9102 }
9103
9104 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9105 offset = offset >>> 0
9106 if (!noAssert) checkOffset(offset, 2, this.length)
9107 var val = this[offset] | (this[offset + 1] << 8)
9108 return (val & 0x8000) ? val | 0xFFFF0000 : val
9109 }
9110
9111 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9112 offset = offset >>> 0
9113 if (!noAssert) checkOffset(offset, 2, this.length)
9114 var val = this[offset + 1] | (this[offset] << 8)
9115 return (val & 0x8000) ? val | 0xFFFF0000 : val
9116 }
9117
9118 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9119 offset = offset >>> 0
9120 if (!noAssert) checkOffset(offset, 4, this.length)
9121
9122 return (this[offset]) |
9123 (this[offset + 1] << 8) |
9124 (this[offset + 2] << 16) |
9125 (this[offset + 3] << 24)
9126 }
9127
9128 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9129 offset = offset >>> 0
9130 if (!noAssert) checkOffset(offset, 4, this.length)
9131
9132 return (this[offset] << 24) |
9133 (this[offset + 1] << 16) |
9134 (this[offset + 2] << 8) |
9135 (this[offset + 3])
9136 }
9137
9138 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9139 offset = offset >>> 0
9140 if (!noAssert) checkOffset(offset, 4, this.length)
9141 return ieee754.read(this, offset, true, 23, 4)
9142 }
9143
9144 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9145 offset = offset >>> 0
9146 if (!noAssert) checkOffset(offset, 4, this.length)
9147 return ieee754.read(this, offset, false, 23, 4)
9148 }
9149
9150 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9151 offset = offset >>> 0
9152 if (!noAssert) checkOffset(offset, 8, this.length)
9153 return ieee754.read(this, offset, true, 52, 8)
9154 }
9155
9156 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9157 offset = offset >>> 0
9158 if (!noAssert) checkOffset(offset, 8, this.length)
9159 return ieee754.read(this, offset, false, 52, 8)
9160 }
9161
9162 function checkInt (buf, value, offset, ext, max, min) {
9163 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9164 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9165 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9166 }
9167
9168 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9169 value = +value
9170 offset = offset >>> 0
9171 byteLength = byteLength >>> 0
9172 if (!noAssert) {
9173 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9174 checkInt(this, value, offset, byteLength, maxBytes, 0)
9175 }
9176
9177 var mul = 1
9178 var i = 0
9179 this[offset] = value & 0xFF
9180 while (++i < byteLength && (mul *= 0x100)) {
9181 this[offset + i] = (value / mul) & 0xFF
9182 }
9183
9184 return offset + byteLength
9185 }
9186
9187 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9188 value = +value
9189 offset = offset >>> 0
9190 byteLength = byteLength >>> 0
9191 if (!noAssert) {
9192 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9193 checkInt(this, value, offset, byteLength, maxBytes, 0)
9194 }
9195
9196 var i = byteLength - 1
9197 var mul = 1
9198 this[offset + i] = value & 0xFF
9199 while (--i >= 0 && (mul *= 0x100)) {
9200 this[offset + i] = (value / mul) & 0xFF
9201 }
9202
9203 return offset + byteLength
9204 }
9205
9206 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9207 value = +value
9208 offset = offset >>> 0
9209 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9210 this[offset] = (value & 0xff)
9211 return offset + 1
9212 }
9213
9214 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9215 value = +value
9216 offset = offset >>> 0
9217 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9218 this[offset] = (value & 0xff)
9219 this[offset + 1] = (value >>> 8)
9220 return offset + 2
9221 }
9222
9223 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9224 value = +value
9225 offset = offset >>> 0
9226 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9227 this[offset] = (value >>> 8)
9228 this[offset + 1] = (value & 0xff)
9229 return offset + 2
9230 }
9231
9232 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9233 value = +value
9234 offset = offset >>> 0
9235 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9236 this[offset + 3] = (value >>> 24)
9237 this[offset + 2] = (value >>> 16)
9238 this[offset + 1] = (value >>> 8)
9239 this[offset] = (value & 0xff)
9240 return offset + 4
9241 }
9242
9243 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9244 value = +value
9245 offset = offset >>> 0
9246 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9247 this[offset] = (value >>> 24)
9248 this[offset + 1] = (value >>> 16)
9249 this[offset + 2] = (value >>> 8)
9250 this[offset + 3] = (value & 0xff)
9251 return offset + 4
9252 }
9253
9254 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9255 value = +value
9256 offset = offset >>> 0
9257 if (!noAssert) {
9258 var limit = Math.pow(2, (8 * byteLength) - 1)
9259
9260 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9261 }
9262
9263 var i = 0
9264 var mul = 1
9265 var sub = 0
9266 this[offset] = value & 0xFF
9267 while (++i < byteLength && (mul *= 0x100)) {
9268 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9269 sub = 1
9270 }
9271 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9272 }
9273
9274 return offset + byteLength
9275 }
9276
9277 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9278 value = +value
9279 offset = offset >>> 0
9280 if (!noAssert) {
9281 var limit = Math.pow(2, (8 * byteLength) - 1)
9282
9283 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9284 }
9285
9286 var i = byteLength - 1
9287 var mul = 1
9288 var sub = 0
9289 this[offset + i] = value & 0xFF
9290 while (--i >= 0 && (mul *= 0x100)) {
9291 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9292 sub = 1
9293 }
9294 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9295 }
9296
9297 return offset + byteLength
9298 }
9299
9300 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9301 value = +value
9302 offset = offset >>> 0
9303 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9304 if (value < 0) value = 0xff + value + 1
9305 this[offset] = (value & 0xff)
9306 return offset + 1
9307 }
9308
9309 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9310 value = +value
9311 offset = offset >>> 0
9312 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9313 this[offset] = (value & 0xff)
9314 this[offset + 1] = (value >>> 8)
9315 return offset + 2
9316 }
9317
9318 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9319 value = +value
9320 offset = offset >>> 0
9321 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9322 this[offset] = (value >>> 8)
9323 this[offset + 1] = (value & 0xff)
9324 return offset + 2
9325 }
9326
9327 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9328 value = +value
9329 offset = offset >>> 0
9330 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9331 this[offset] = (value & 0xff)
9332 this[offset + 1] = (value >>> 8)
9333 this[offset + 2] = (value >>> 16)
9334 this[offset + 3] = (value >>> 24)
9335 return offset + 4
9336 }
9337
9338 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9339 value = +value
9340 offset = offset >>> 0
9341 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9342 if (value < 0) value = 0xffffffff + value + 1
9343 this[offset] = (value >>> 24)
9344 this[offset + 1] = (value >>> 16)
9345 this[offset + 2] = (value >>> 8)
9346 this[offset + 3] = (value & 0xff)
9347 return offset + 4
9348 }
9349
9350 function checkIEEE754 (buf, value, offset, ext, max, min) {
9351 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9352 if (offset < 0) throw new RangeError('Index out of range')
9353 }
9354
9355 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9356 value = +value
9357 offset = offset >>> 0
9358 if (!noAssert) {
9359 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
9360 }
9361 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9362 return offset + 4
9363 }
9364
9365 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9366 return writeFloat(this, value, offset, true, noAssert)
9367 }
9368
9369 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9370 return writeFloat(this, value, offset, false, noAssert)
9371 }
9372
9373 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9374 value = +value
9375 offset = offset >>> 0
9376 if (!noAssert) {
9377 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
9378 }
9379 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9380 return offset + 8
9381 }
9382
9383 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9384 return writeDouble(this, value, offset, true, noAssert)
9385 }
9386
9387 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9388 return writeDouble(this, value, offset, false, noAssert)
9389 }
9390
9391 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9392 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9393 if (!start) start = 0
9394 if (!end && end !== 0) end = this.length
9395 if (targetStart >= target.length) targetStart = target.length
9396 if (!targetStart) targetStart = 0
9397 if (end > 0 && end < start) end = start
9398
9399 // Copy 0 bytes; we're done
9400 if (end === start) return 0
9401 if (target.length === 0 || this.length === 0) return 0
9402
9403 // Fatal error conditions
9404 if (targetStart < 0) {
9405 throw new RangeError('targetStart out of bounds')
9406 }
9407 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9408 if (end < 0) throw new RangeError('sourceEnd out of bounds')
9409
9410 // Are we oob?
9411 if (end > this.length) end = this.length
9412 if (target.length - targetStart < end - start) {
9413 end = target.length - targetStart + start
9414 }
9415
9416 var len = end - start
9417 var i
9418
9419 if (this === target && start < targetStart && targetStart < end) {
9420 // descending copy from end
9421 for (i = len - 1; i >= 0; --i) {
9422 target[i + targetStart] = this[i + start]
9423 }
9424 } else if (len < 1000) {
9425 // ascending copy from start
9426 for (i = 0; i < len; ++i) {
9427 target[i + targetStart] = this[i + start]
9428 }
9429 } else {
9430 Uint8Array.prototype.set.call(
9431 target,
9432 this.subarray(start, start + len),
9433 targetStart
9434 )
9435 }
9436
9437 return len
9438 }
9439
9440 // Usage:
9441 // buffer.fill(number[, offset[, end]])
9442 // buffer.fill(buffer[, offset[, end]])
9443 // buffer.fill(string[, offset[, end]][, encoding])
9444 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9445 // Handle string cases:
9446 if (typeof val === 'string') {
9447 if (typeof start === 'string') {
9448 encoding = start
9449 start = 0
9450 end = this.length
9451 } else if (typeof end === 'string') {
9452 encoding = end
9453 end = this.length
9454 }
9455 if (val.length === 1) {
9456 var code = val.charCodeAt(0)
9457 if (code < 256) {
9458 val = code
9459 }
9460 }
9461 if (encoding !== undefined && typeof encoding !== 'string') {
9462 throw new TypeError('encoding must be a string')
9463 }
9464 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9465 throw new TypeError('Unknown encoding: ' + encoding)
9466 }
9467 } else if (typeof val === 'number') {
9468 val = val & 255
9469 }
9470
9471 // Invalid ranges are not set to a default, so can range check early.
9472 if (start < 0 || this.length < start || this.length < end) {
9473 throw new RangeError('Out of range index')
9474 }
9475
9476 if (end <= start) {
9477 return this
9478 }
9479
9480 start = start >>> 0
9481 end = end === undefined ? this.length : end >>> 0
9482
9483 if (!val) val = 0
9484
9485 var i
9486 if (typeof val === 'number') {
9487 for (i = start; i < end; ++i) {
9488 this[i] = val
9489 }
9490 } else {
9491 var bytes = Buffer.isBuffer(val)
9492 ? val
9493 : new Buffer(val, encoding)
9494 var len = bytes.length
9495 for (i = 0; i < end - start; ++i) {
9496 this[i + start] = bytes[i % len]
9497 }
9498 }
9499
9500 return this
9501 }
9502
9503 // HELPER FUNCTIONS
9504 // ================
9505
9506 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
9507
9508 function base64clean (str) {
9509 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9510 str = str.trim().replace(INVALID_BASE64_RE, '')
9511 // Node converts strings with length < 2 to ''
9512 if (str.length < 2) return ''
9513 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9514 while (str.length % 4 !== 0) {
9515 str = str + '='
9516 }
9517 return str
9518 }
9519
9520 function toHex (n) {
9521 if (n < 16) return '0' + n.toString(16)
9522 return n.toString(16)
9523 }
9524
9525 function utf8ToBytes (string, units) {
9526 units = units || Infinity
9527 var codePoint
9528 var length = string.length
9529 var leadSurrogate = null
9530 var bytes = []
9531
9532 for (var i = 0; i < length; ++i) {
9533 codePoint = string.charCodeAt(i)
9534
9535 // is surrogate component
9536 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9537 // last char was a lead
9538 if (!leadSurrogate) {
9539 // no lead yet
9540 if (codePoint > 0xDBFF) {
9541 // unexpected trail
9542 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9543 continue
9544 } else if (i + 1 === length) {
9545 // unpaired lead
9546 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9547 continue
9548 }
9549
9550 // valid lead
9551 leadSurrogate = codePoint
9552
9553 continue
9554 }
9555
9556 // 2 leads in a row
9557 if (codePoint < 0xDC00) {
9558 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9559 leadSurrogate = codePoint
9560 continue
9561 }
9562
9563 // valid surrogate pair
9564 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9565 } else if (leadSurrogate) {
9566 // valid bmp char, but last char was a lead
9567 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9568 }
9569
9570 leadSurrogate = null
9571
9572 // encode utf8
9573 if (codePoint < 0x80) {
9574 if ((units -= 1) < 0) break
9575 bytes.push(codePoint)
9576 } else if (codePoint < 0x800) {
9577 if ((units -= 2) < 0) break
9578 bytes.push(
9579 codePoint >> 0x6 | 0xC0,
9580 codePoint & 0x3F | 0x80
9581 )
9582 } else if (codePoint < 0x10000) {
9583 if ((units -= 3) < 0) break
9584 bytes.push(
9585 codePoint >> 0xC | 0xE0,
9586 codePoint >> 0x6 & 0x3F | 0x80,
9587 codePoint & 0x3F | 0x80
9588 )
9589 } else if (codePoint < 0x110000) {
9590 if ((units -= 4) < 0) break
9591 bytes.push(
9592 codePoint >> 0x12 | 0xF0,
9593 codePoint >> 0xC & 0x3F | 0x80,
9594 codePoint >> 0x6 & 0x3F | 0x80,
9595 codePoint & 0x3F | 0x80
9596 )
9597 } else {
9598 throw new Error('Invalid code point')
9599 }
9600 }
9601
9602 return bytes
9603 }
9604
9605 function asciiToBytes (str) {
9606 var byteArray = []
9607 for (var i = 0; i < str.length; ++i) {
9608 // Node's code seems to be doing this and not & 0x7F..
9609 byteArray.push(str.charCodeAt(i) & 0xFF)
9610 }
9611 return byteArray
9612 }
9613
9614 function utf16leToBytes (str, units) {
9615 var c, hi, lo
9616 var byteArray = []
9617 for (var i = 0; i < str.length; ++i) {
9618 if ((units -= 2) < 0) break
9619
9620 c = str.charCodeAt(i)
9621 hi = c >> 8
9622 lo = c % 256
9623 byteArray.push(lo)
9624 byteArray.push(hi)
9625 }
9626
9627 return byteArray
9628 }
9629
9630 function base64ToBytes (str) {
9631 return base64.toByteArray(base64clean(str))
9632 }
9633
9634 function blitBuffer (src, dst, offset, length) {
9635 for (var i = 0; i < length; ++i) {
9636 if ((i + offset >= dst.length) || (i >= src.length)) break
9637 dst[i + offset] = src[i]
9638 }
9639 return i
9640 }
9641
9642 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9643 function isArrayBufferView (obj) {
9644 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9645 }
9646
9647 function numberIsNaN (obj) {
9648 return obj !== obj // eslint-disable-line no-self-compare
9649 }
9650
9651 },{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
9652 (function (Buffer){
9653 // Copyright Joyent, Inc. and other Node contributors.
9654 //
9655 // Permission is hereby granted, free of charge, to any person obtaining a
9656 // copy of this software and associated documentation files (the
9657 // "Software"), to deal in the Software without restriction, including
9658 // without limitation the rights to use, copy, modify, merge, publish,
9659 // distribute, sublicense, and/or sell copies of the Software, and to permit
9660 // persons to whom the Software is furnished to do so, subject to the
9661 // following conditions:
9662 //
9663 // The above copyright notice and this permission notice shall be included
9664 // in all copies or substantial portions of the Software.
9665 //
9666 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9667 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9668 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9669 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9670 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9671 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9672 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9673
9674 // NOTE: These type checking functions intentionally don't use `instanceof`
9675 // because it is fragile and can be easily faked with `Object.create()`.
9676
9677 function isArray(arg) {
9678 if (Array.isArray) {
9679 return Array.isArray(arg);
9680 }
9681 return objectToString(arg) === '[object Array]';
9682 }
9683 exports.isArray = isArray;
9684
9685 function isBoolean(arg) {
9686 return typeof arg === 'boolean';
9687 }
9688 exports.isBoolean = isBoolean;
9689
9690 function isNull(arg) {
9691 return arg === null;
9692 }
9693 exports.isNull = isNull;
9694
9695 function isNullOrUndefined(arg) {
9696 return arg == null;
9697 }
9698 exports.isNullOrUndefined = isNullOrUndefined;
9699
9700 function isNumber(arg) {
9701 return typeof arg === 'number';
9702 }
9703 exports.isNumber = isNumber;
9704
9705 function isString(arg) {
9706 return typeof arg === 'string';
9707 }
9708 exports.isString = isString;
9709
9710 function isSymbol(arg) {
9711 return typeof arg === 'symbol';
9712 }
9713 exports.isSymbol = isSymbol;
9714
9715 function isUndefined(arg) {
9716 return arg === void 0;
9717 }
9718 exports.isUndefined = isUndefined;
9719
9720 function isRegExp(re) {
9721 return objectToString(re) === '[object RegExp]';
9722 }
9723 exports.isRegExp = isRegExp;
9724
9725 function isObject(arg) {
9726 return typeof arg === 'object' && arg !== null;
9727 }
9728 exports.isObject = isObject;
9729
9730 function isDate(d) {
9731 return objectToString(d) === '[object Date]';
9732 }
9733 exports.isDate = isDate;
9734
9735 function isError(e) {
9736 return (objectToString(e) === '[object Error]' || e instanceof Error);
9737 }
9738 exports.isError = isError;
9739
9740 function isFunction(arg) {
9741 return typeof arg === 'function';
9742 }
9743 exports.isFunction = isFunction;
9744
9745 function isPrimitive(arg) {
9746 return arg === null ||
9747 typeof arg === 'boolean' ||
9748 typeof arg === 'number' ||
9749 typeof arg === 'string' ||
9750 typeof arg === 'symbol' || // ES6 symbol
9751 typeof arg === 'undefined';
9752 }
9753 exports.isPrimitive = isPrimitive;
9754
9755 exports.isBuffer = Buffer.isBuffer;
9756
9757 function objectToString(o) {
9758 return Object.prototype.toString.call(o);
9759 }
9760
9761 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9762 },{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9763 // Copyright Joyent, Inc. and other Node contributors.
9764 //
9765 // Permission is hereby granted, free of charge, to any person obtaining a
9766 // copy of this software and associated documentation files (the
9767 // "Software"), to deal in the Software without restriction, including
9768 // without limitation the rights to use, copy, modify, merge, publish,
9769 // distribute, sublicense, and/or sell copies of the Software, and to permit
9770 // persons to whom the Software is furnished to do so, subject to the
9771 // following conditions:
9772 //
9773 // The above copyright notice and this permission notice shall be included
9774 // in all copies or substantial portions of the Software.
9775 //
9776 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9777 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9778 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9779 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9780 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9781 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9782 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9783
9784 function EventEmitter() {
9785 this._events = this._events || {};
9786 this._maxListeners = this._maxListeners || undefined;
9787 }
9788 module.exports = EventEmitter;
9789
9790 // Backwards-compat with node 0.10.x
9791 EventEmitter.EventEmitter = EventEmitter;
9792
9793 EventEmitter.prototype._events = undefined;
9794 EventEmitter.prototype._maxListeners = undefined;
9795
9796 // By default EventEmitters will print a warning if more than 10 listeners are
9797 // added to it. This is a useful default which helps finding memory leaks.
9798 EventEmitter.defaultMaxListeners = 10;
9799
9800 // Obviously not all Emitters should be limited to 10. This function allows
9801 // that to be increased. Set to zero for unlimited.
9802 EventEmitter.prototype.setMaxListeners = function(n) {
9803 if (!isNumber(n) || n < 0 || isNaN(n))
9804 throw TypeError('n must be a positive number');
9805 this._maxListeners = n;
9806 return this;
9807 };
9808
9809 EventEmitter.prototype.emit = function(type) {
9810 var er, handler, len, args, i, listeners;
9811
9812 if (!this._events)
9813 this._events = {};
9814
9815 // If there is no 'error' event listener then throw.
9816 if (type === 'error') {
9817 if (!this._events.error ||
9818 (isObject(this._events.error) && !this._events.error.length)) {
9819 er = arguments[1];
9820 if (er instanceof Error) {
9821 throw er; // Unhandled 'error' event
9822 } else {
9823 // At least give some kind of context to the user
9824 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9825 err.context = er;
9826 throw err;
9827 }
9828 }
9829 }
9830
9831 handler = this._events[type];
9832
9833 if (isUndefined(handler))
9834 return false;
9835
9836 if (isFunction(handler)) {
9837 switch (arguments.length) {
9838 // fast cases
9839 case 1:
9840 handler.call(this);
9841 break;
9842 case 2:
9843 handler.call(this, arguments[1]);
9844 break;
9845 case 3:
9846 handler.call(this, arguments[1], arguments[2]);
9847 break;
9848 // slower
9849 default:
9850 args = Array.prototype.slice.call(arguments, 1);
9851 handler.apply(this, args);
9852 }
9853 } else if (isObject(handler)) {
9854 args = Array.prototype.slice.call(arguments, 1);
9855 listeners = handler.slice();
9856 len = listeners.length;
9857 for (i = 0; i < len; i++)
9858 listeners[i].apply(this, args);
9859 }
9860
9861 return true;
9862 };
9863
9864 EventEmitter.prototype.addListener = function(type, listener) {
9865 var m;
9866
9867 if (!isFunction(listener))
9868 throw TypeError('listener must be a function');
9869
9870 if (!this._events)
9871 this._events = {};
9872
9873 // To avoid recursion in the case that type === "newListener"! Before
9874 // adding it to the listeners, first emit "newListener".
9875 if (this._events.newListener)
9876 this.emit('newListener', type,
9877 isFunction(listener.listener) ?
9878 listener.listener : listener);
9879
9880 if (!this._events[type])
9881 // Optimize the case of one listener. Don't need the extra array object.
9882 this._events[type] = listener;
9883 else if (isObject(this._events[type]))
9884 // If we've already got an array, just append.
9885 this._events[type].push(listener);
9886 else
9887 // Adding the second element, need to change to array.
9888 this._events[type] = [this._events[type], listener];
9889
9890 // Check for listener leak
9891 if (isObject(this._events[type]) && !this._events[type].warned) {
9892 if (!isUndefined(this._maxListeners)) {
9893 m = this._maxListeners;
9894 } else {
9895 m = EventEmitter.defaultMaxListeners;
9896 }
9897
9898 if (m && m > 0 && this._events[type].length > m) {
9899 this._events[type].warned = true;
9900 console.error('(node) warning: possible EventEmitter memory ' +
9901 'leak detected. %d listeners added. ' +
9902 'Use emitter.setMaxListeners() to increase limit.',
9903 this._events[type].length);
9904 if (typeof console.trace === 'function') {
9905 // not supported in IE 10
9906 console.trace();
9907 }
9908 }
9909 }
9910
9911 return this;
9912 };
9913
9914 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9915
9916 EventEmitter.prototype.once = function(type, listener) {
9917 if (!isFunction(listener))
9918 throw TypeError('listener must be a function');
9919
9920 var fired = false;
9921
9922 function g() {
9923 this.removeListener(type, g);
9924
9925 if (!fired) {
9926 fired = true;
9927 listener.apply(this, arguments);
9928 }
9929 }
9930
9931 g.listener = listener;
9932 this.on(type, g);
9933
9934 return this;
9935 };
9936
9937 // emits a 'removeListener' event iff the listener was removed
9938 EventEmitter.prototype.removeListener = function(type, listener) {
9939 var list, position, length, i;
9940
9941 if (!isFunction(listener))
9942 throw TypeError('listener must be a function');
9943
9944 if (!this._events || !this._events[type])
9945 return this;
9946
9947 list = this._events[type];
9948 length = list.length;
9949 position = -1;
9950
9951 if (list === listener ||
9952 (isFunction(list.listener) && list.listener === listener)) {
9953 delete this._events[type];
9954 if (this._events.removeListener)
9955 this.emit('removeListener', type, listener);
9956
9957 } else if (isObject(list)) {
9958 for (i = length; i-- > 0;) {
9959 if (list[i] === listener ||
9960 (list[i].listener && list[i].listener === listener)) {
9961 position = i;
9962 break;
9963 }
9964 }
9965
9966 if (position < 0)
9967 return this;
9968
9969 if (list.length === 1) {
9970 list.length = 0;
9971 delete this._events[type];
9972 } else {
9973 list.splice(position, 1);
9974 }
9975
9976 if (this._events.removeListener)
9977 this.emit('removeListener', type, listener);
9978 }
9979
9980 return this;
9981 };
9982
9983 EventEmitter.prototype.removeAllListeners = function(type) {
9984 var key, listeners;
9985
9986 if (!this._events)
9987 return this;
9988
9989 // not listening for removeListener, no need to emit
9990 if (!this._events.removeListener) {
9991 if (arguments.length === 0)
9992 this._events = {};
9993 else if (this._events[type])
9994 delete this._events[type];
9995 return this;
9996 }
9997
9998 // emit removeListener for all listeners on all events
9999 if (arguments.length === 0) {
10000 for (key in this._events) {
10001 if (key === 'removeListener') continue;
10002 this.removeAllListeners(key);
10003 }
10004 this.removeAllListeners('removeListener');
10005 this._events = {};
10006 return this;
10007 }
10008
10009 listeners = this._events[type];
10010
10011 if (isFunction(listeners)) {
10012 this.removeListener(type, listeners);
10013 } else if (listeners) {
10014 // LIFO order
10015 while (listeners.length)
10016 this.removeListener(type, listeners[listeners.length - 1]);
10017 }
10018 delete this._events[type];
10019
10020 return this;
10021 };
10022
10023 EventEmitter.prototype.listeners = function(type) {
10024 var ret;
10025 if (!this._events || !this._events[type])
10026 ret = [];
10027 else if (isFunction(this._events[type]))
10028 ret = [this._events[type]];
10029 else
10030 ret = this._events[type].slice();
10031 return ret;
10032 };
10033
10034 EventEmitter.prototype.listenerCount = function(type) {
10035 if (this._events) {
10036 var evlistener = this._events[type];
10037
10038 if (isFunction(evlistener))
10039 return 1;
10040 else if (evlistener)
10041 return evlistener.length;
10042 }
10043 return 0;
10044 };
10045
10046 EventEmitter.listenerCount = function(emitter, type) {
10047 return emitter.listenerCount(type);
10048 };
10049
10050 function isFunction(arg) {
10051 return typeof arg === 'function';
10052 }
10053
10054 function isNumber(arg) {
10055 return typeof arg === 'number';
10056 }
10057
10058 function isObject(arg) {
10059 return typeof arg === 'object' && arg !== null;
10060 }
10061
10062 function isUndefined(arg) {
10063 return arg === void 0;
10064 }
10065
10066 },{}],7:[function(require,module,exports){
10067 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10068 var e, m
10069 var eLen = nBytes * 8 - mLen - 1
10070 var eMax = (1 << eLen) - 1
10071 var eBias = eMax >> 1
10072 var nBits = -7
10073 var i = isLE ? (nBytes - 1) : 0
10074 var d = isLE ? -1 : 1
10075 var s = buffer[offset + i]
10076
10077 i += d
10078
10079 e = s & ((1 << (-nBits)) - 1)
10080 s >>= (-nBits)
10081 nBits += eLen
10082 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10083
10084 m = e & ((1 << (-nBits)) - 1)
10085 e >>= (-nBits)
10086 nBits += mLen
10087 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10088
10089 if (e === 0) {
10090 e = 1 - eBias
10091 } else if (e === eMax) {
10092 return m ? NaN : ((s ? -1 : 1) * Infinity)
10093 } else {
10094 m = m + Math.pow(2, mLen)
10095 e = e - eBias
10096 }
10097 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10098 }
10099
10100 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10101 var e, m, c
10102 var eLen = nBytes * 8 - mLen - 1
10103 var eMax = (1 << eLen) - 1
10104 var eBias = eMax >> 1
10105 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10106 var i = isLE ? 0 : (nBytes - 1)
10107 var d = isLE ? 1 : -1
10108 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10109
10110 value = Math.abs(value)
10111
10112 if (isNaN(value) || value === Infinity) {
10113 m = isNaN(value) ? 1 : 0
10114 e = eMax
10115 } else {
10116 e = Math.floor(Math.log(value) / Math.LN2)
10117 if (value * (c = Math.pow(2, -e)) < 1) {
10118 e--
10119 c *= 2
10120 }
10121 if (e + eBias >= 1) {
10122 value += rt / c
10123 } else {
10124 value += rt * Math.pow(2, 1 - eBias)
10125 }
10126 if (value * c >= 2) {
10127 e++
10128 c /= 2
10129 }
10130
10131 if (e + eBias >= eMax) {
10132 m = 0
10133 e = eMax
10134 } else if (e + eBias >= 1) {
10135 m = (value * c - 1) * Math.pow(2, mLen)
10136 e = e + eBias
10137 } else {
10138 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10139 e = 0
10140 }
10141 }
10142
10143 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10144
10145 e = (e << mLen) | m
10146 eLen += mLen
10147 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10148
10149 buffer[offset + i - d] |= s * 128
10150 }
10151
10152 },{}],8:[function(require,module,exports){
10153 if (typeof Object.create === 'function') {
10154 // implementation from standard node.js 'util' module
10155 module.exports = function inherits(ctor, superCtor) {
10156 ctor.super_ = superCtor
10157 ctor.prototype = Object.create(superCtor.prototype, {
10158 constructor: {
10159 value: ctor,
10160 enumerable: false,
10161 writable: true,
10162 configurable: true
10163 }
10164 });
10165 };
10166 } else {
10167 // old school shim for old browsers
10168 module.exports = function inherits(ctor, superCtor) {
10169 ctor.super_ = superCtor
10170 var TempCtor = function () {}
10171 TempCtor.prototype = superCtor.prototype
10172 ctor.prototype = new TempCtor()
10173 ctor.prototype.constructor = ctor
10174 }
10175 }
10176
10177 },{}],9:[function(require,module,exports){
10178 /*!
10179 * Determine if an object is a Buffer
10180 *
10181 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10182 * @license MIT
10183 */
10184
10185 // The _isBuffer check is for Safari 5-7 support, because it's missing
10186 // Object.prototype.constructor. Remove this eventually
10187 module.exports = function (obj) {
10188 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10189 }
10190
10191 function isBuffer (obj) {
10192 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10193 }
10194
10195 // For Node v0.10 support. Remove this eventually.
10196 function isSlowBuffer (obj) {
10197 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10198 }
10199
10200 },{}],10:[function(require,module,exports){
10201 var toString = {}.toString;
10202
10203 module.exports = Array.isArray || function (arr) {
10204 return toString.call(arr) == '[object Array]';
10205 };
10206
10207 },{}],11:[function(require,module,exports){
10208 (function (process){
10209 'use strict';
10210
10211 if (!process.version ||
10212 process.version.indexOf('v0.') === 0 ||
10213 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10214 module.exports = nextTick;
10215 } else {
10216 module.exports = process.nextTick;
10217 }
10218
10219 function nextTick(fn, arg1, arg2, arg3) {
10220 if (typeof fn !== 'function') {
10221 throw new TypeError('"callback" argument must be a function');
10222 }
10223 var len = arguments.length;
10224 var args, i;
10225 switch (len) {
10226 case 0:
10227 case 1:
10228 return process.nextTick(fn);
10229 case 2:
10230 return process.nextTick(function afterTickOne() {
10231 fn.call(null, arg1);
10232 });
10233 case 3:
10234 return process.nextTick(function afterTickTwo() {
10235 fn.call(null, arg1, arg2);
10236 });
10237 case 4:
10238 return process.nextTick(function afterTickThree() {
10239 fn.call(null, arg1, arg2, arg3);
10240 });
10241 default:
10242 args = new Array(len - 1);
10243 i = 0;
10244 while (i < args.length) {
10245 args[i++] = arguments[i];
10246 }
10247 return process.nextTick(function afterTick() {
10248 fn.apply(null, args);
10249 });
10250 }
10251 }
10252
10253 }).call(this,require('_process'))
10254 },{"_process":12}],12:[function(require,module,exports){
10255 // shim for using process in browser
10256 var process = module.exports = {};
10257
10258 // cached from whatever global is present so that test runners that stub it
10259 // don't break things. But we need to wrap it in a try catch in case it is
10260 // wrapped in strict mode code which doesn't define any globals. It's inside a
10261 // function because try/catches deoptimize in certain engines.
10262
10263 var cachedSetTimeout;
10264 var cachedClearTimeout;
10265
10266 function defaultSetTimout() {
10267 throw new Error('setTimeout has not been defined');
10268 }
10269 function defaultClearTimeout () {
10270 throw new Error('clearTimeout has not been defined');
10271 }
10272 (function () {
10273 try {
10274 if (typeof setTimeout === 'function') {
10275 cachedSetTimeout = setTimeout;
10276 } else {
10277 cachedSetTimeout = defaultSetTimout;
10278 }
10279 } catch (e) {
10280 cachedSetTimeout = defaultSetTimout;
10281 }
10282 try {
10283 if (typeof clearTimeout === 'function') {
10284 cachedClearTimeout = clearTimeout;
10285 } else {
10286 cachedClearTimeout = defaultClearTimeout;
10287 }
10288 } catch (e) {
10289 cachedClearTimeout = defaultClearTimeout;
10290 }
10291 } ())
10292 function runTimeout(fun) {
10293 if (cachedSetTimeout === setTimeout) {
10294 //normal enviroments in sane situations
10295 return setTimeout(fun, 0);
10296 }
10297 // if setTimeout wasn't available but was latter defined
10298 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10299 cachedSetTimeout = setTimeout;
10300 return setTimeout(fun, 0);
10301 }
10302 try {
10303 // when when somebody has screwed with setTimeout but no I.E. maddness
10304 return cachedSetTimeout(fun, 0);
10305 } catch(e){
10306 try {
10307 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10308 return cachedSetTimeout.call(null, fun, 0);
10309 } catch(e){
10310 // 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
10311 return cachedSetTimeout.call(this, fun, 0);
10312 }
10313 }
10314
10315
10316 }
10317 function runClearTimeout(marker) {
10318 if (cachedClearTimeout === clearTimeout) {
10319 //normal enviroments in sane situations
10320 return clearTimeout(marker);
10321 }
10322 // if clearTimeout wasn't available but was latter defined
10323 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10324 cachedClearTimeout = clearTimeout;
10325 return clearTimeout(marker);
10326 }
10327 try {
10328 // when when somebody has screwed with setTimeout but no I.E. maddness
10329 return cachedClearTimeout(marker);
10330 } catch (e){
10331 try {
10332 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10333 return cachedClearTimeout.call(null, marker);
10334 } catch (e){
10335 // 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.
10336 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10337 return cachedClearTimeout.call(this, marker);
10338 }
10339 }
10340
10341
10342
10343 }
10344 var queue = [];
10345 var draining = false;
10346 var currentQueue;
10347 var queueIndex = -1;
10348
10349 function cleanUpNextTick() {
10350 if (!draining || !currentQueue) {
10351 return;
10352 }
10353 draining = false;
10354 if (currentQueue.length) {
10355 queue = currentQueue.concat(queue);
10356 } else {
10357 queueIndex = -1;
10358 }
10359 if (queue.length) {
10360 drainQueue();
10361 }
10362 }
10363
10364 function drainQueue() {
10365 if (draining) {
10366 return;
10367 }
10368 var timeout = runTimeout(cleanUpNextTick);
10369 draining = true;
10370
10371 var len = queue.length;
10372 while(len) {
10373 currentQueue = queue;
10374 queue = [];
10375 while (++queueIndex < len) {
10376 if (currentQueue) {
10377 currentQueue[queueIndex].run();
10378 }
10379 }
10380 queueIndex = -1;
10381 len = queue.length;
10382 }
10383 currentQueue = null;
10384 draining = false;
10385 runClearTimeout(timeout);
10386 }
10387
10388 process.nextTick = function (fun) {
10389 var args = new Array(arguments.length - 1);
10390 if (arguments.length > 1) {
10391 for (var i = 1; i < arguments.length; i++) {
10392 args[i - 1] = arguments[i];
10393 }
10394 }
10395 queue.push(new Item(fun, args));
10396 if (queue.length === 1 && !draining) {
10397 runTimeout(drainQueue);
10398 }
10399 };
10400
10401 // v8 likes predictible objects
10402 function Item(fun, array) {
10403 this.fun = fun;
10404 this.array = array;
10405 }
10406 Item.prototype.run = function () {
10407 this.fun.apply(null, this.array);
10408 };
10409 process.title = 'browser';
10410 process.browser = true;
10411 process.env = {};
10412 process.argv = [];
10413 process.version = ''; // empty string to avoid regexp issues
10414 process.versions = {};
10415
10416 function noop() {}
10417
10418 process.on = noop;
10419 process.addListener = noop;
10420 process.once = noop;
10421 process.off = noop;
10422 process.removeListener = noop;
10423 process.removeAllListeners = noop;
10424 process.emit = noop;
10425 process.prependListener = noop;
10426 process.prependOnceListener = noop;
10427
10428 process.listeners = function (name) { return [] }
10429
10430 process.binding = function (name) {
10431 throw new Error('process.binding is not supported');
10432 };
10433
10434 process.cwd = function () { return '/' };
10435 process.chdir = function (dir) {
10436 throw new Error('process.chdir is not supported');
10437 };
10438 process.umask = function() { return 0; };
10439
10440 },{}],13:[function(require,module,exports){
10441 module.exports = require('./lib/_stream_duplex.js');
10442
10443 },{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10444 // Copyright Joyent, Inc. and other Node contributors.
10445 //
10446 // Permission is hereby granted, free of charge, to any person obtaining a
10447 // copy of this software and associated documentation files (the
10448 // "Software"), to deal in the Software without restriction, including
10449 // without limitation the rights to use, copy, modify, merge, publish,
10450 // distribute, sublicense, and/or sell copies of the Software, and to permit
10451 // persons to whom the Software is furnished to do so, subject to the
10452 // following conditions:
10453 //
10454 // The above copyright notice and this permission notice shall be included
10455 // in all copies or substantial portions of the Software.
10456 //
10457 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10458 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10459 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10460 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10461 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10462 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10463 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10464
10465 // a duplex stream is just a stream that is both readable and writable.
10466 // Since JS doesn't have multiple prototypal inheritance, this class
10467 // prototypally inherits from Readable, and then parasitically from
10468 // Writable.
10469
10470 'use strict';
10471
10472 /*<replacement>*/
10473
10474 var processNextTick = require('process-nextick-args');
10475 /*</replacement>*/
10476
10477 /*<replacement>*/
10478 var objectKeys = Object.keys || function (obj) {
10479 var keys = [];
10480 for (var key in obj) {
10481 keys.push(key);
10482 }return keys;
10483 };
10484 /*</replacement>*/
10485
10486 module.exports = Duplex;
10487
10488 /*<replacement>*/
10489 var util = require('core-util-is');
10490 util.inherits = require('inherits');
10491 /*</replacement>*/
10492
10493 var Readable = require('./_stream_readable');
10494 var Writable = require('./_stream_writable');
10495
10496 util.inherits(Duplex, Readable);
10497
10498 var keys = objectKeys(Writable.prototype);
10499 for (var v = 0; v < keys.length; v++) {
10500 var method = keys[v];
10501 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10502 }
10503
10504 function Duplex(options) {
10505 if (!(this instanceof Duplex)) return new Duplex(options);
10506
10507 Readable.call(this, options);
10508 Writable.call(this, options);
10509
10510 if (options && options.readable === false) this.readable = false;
10511
10512 if (options && options.writable === false) this.writable = false;
10513
10514 this.allowHalfOpen = true;
10515 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10516
10517 this.once('end', onend);
10518 }
10519
10520 // the no-half-open enforcer
10521 function onend() {
10522 // if we allow half-open state, or if the writable side ended,
10523 // then we're ok.
10524 if (this.allowHalfOpen || this._writableState.ended) return;
10525
10526 // no more data can be written.
10527 // But allow more writes to happen in this tick.
10528 processNextTick(onEndNT, this);
10529 }
10530
10531 function onEndNT(self) {
10532 self.end();
10533 }
10534
10535 Object.defineProperty(Duplex.prototype, 'destroyed', {
10536 get: function () {
10537 if (this._readableState === undefined || this._writableState === undefined) {
10538 return false;
10539 }
10540 return this._readableState.destroyed && this._writableState.destroyed;
10541 },
10542 set: function (value) {
10543 // we ignore the value if the stream
10544 // has not been initialized yet
10545 if (this._readableState === undefined || this._writableState === undefined) {
10546 return;
10547 }
10548
10549 // backward compatibility, the user is explicitly
10550 // managing destroyed
10551 this._readableState.destroyed = value;
10552 this._writableState.destroyed = value;
10553 }
10554 });
10555
10556 Duplex.prototype._destroy = function (err, cb) {
10557 this.push(null);
10558 this.end();
10559
10560 processNextTick(cb, err);
10561 };
10562
10563 function forEach(xs, f) {
10564 for (var i = 0, l = xs.length; i < l; i++) {
10565 f(xs[i], i);
10566 }
10567 }
10568 },{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10569 // Copyright Joyent, Inc. and other Node contributors.
10570 //
10571 // Permission is hereby granted, free of charge, to any person obtaining a
10572 // copy of this software and associated documentation files (the
10573 // "Software"), to deal in the Software without restriction, including
10574 // without limitation the rights to use, copy, modify, merge, publish,
10575 // distribute, sublicense, and/or sell copies of the Software, and to permit
10576 // persons to whom the Software is furnished to do so, subject to the
10577 // following conditions:
10578 //
10579 // The above copyright notice and this permission notice shall be included
10580 // in all copies or substantial portions of the Software.
10581 //
10582 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10583 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10584 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10585 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10586 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10587 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10588 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10589
10590 // a passthrough stream.
10591 // basically just the most minimal sort of Transform stream.
10592 // Every written chunk gets output as-is.
10593
10594 'use strict';
10595
10596 module.exports = PassThrough;
10597
10598 var Transform = require('./_stream_transform');
10599
10600 /*<replacement>*/
10601 var util = require('core-util-is');
10602 util.inherits = require('inherits');
10603 /*</replacement>*/
10604
10605 util.inherits(PassThrough, Transform);
10606
10607 function PassThrough(options) {
10608 if (!(this instanceof PassThrough)) return new PassThrough(options);
10609
10610 Transform.call(this, options);
10611 }
10612
10613 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10614 cb(null, chunk);
10615 };
10616 },{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10617 (function (process,global){
10618 // Copyright Joyent, Inc. and other Node contributors.
10619 //
10620 // Permission is hereby granted, free of charge, to any person obtaining a
10621 // copy of this software and associated documentation files (the
10622 // "Software"), to deal in the Software without restriction, including
10623 // without limitation the rights to use, copy, modify, merge, publish,
10624 // distribute, sublicense, and/or sell copies of the Software, and to permit
10625 // persons to whom the Software is furnished to do so, subject to the
10626 // following conditions:
10627 //
10628 // The above copyright notice and this permission notice shall be included
10629 // in all copies or substantial portions of the Software.
10630 //
10631 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10632 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10633 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10634 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10635 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10636 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10637 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10638
10639 'use strict';
10640
10641 /*<replacement>*/
10642
10643 var processNextTick = require('process-nextick-args');
10644 /*</replacement>*/
10645
10646 module.exports = Readable;
10647
10648 /*<replacement>*/
10649 var isArray = require('isarray');
10650 /*</replacement>*/
10651
10652 /*<replacement>*/
10653 var Duplex;
10654 /*</replacement>*/
10655
10656 Readable.ReadableState = ReadableState;
10657
10658 /*<replacement>*/
10659 var EE = require('events').EventEmitter;
10660
10661 var EElistenerCount = function (emitter, type) {
10662 return emitter.listeners(type).length;
10663 };
10664 /*</replacement>*/
10665
10666 /*<replacement>*/
10667 var Stream = require('./internal/streams/stream');
10668 /*</replacement>*/
10669
10670 // TODO(bmeurer): Change this back to const once hole checks are
10671 // properly optimized away early in Ignition+TurboFan.
10672 /*<replacement>*/
10673 var Buffer = require('safe-buffer').Buffer;
10674 var OurUint8Array = global.Uint8Array || function () {};
10675 function _uint8ArrayToBuffer(chunk) {
10676 return Buffer.from(chunk);
10677 }
10678 function _isUint8Array(obj) {
10679 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10680 }
10681 /*</replacement>*/
10682
10683 /*<replacement>*/
10684 var util = require('core-util-is');
10685 util.inherits = require('inherits');
10686 /*</replacement>*/
10687
10688 /*<replacement>*/
10689 var debugUtil = require('util');
10690 var debug = void 0;
10691 if (debugUtil && debugUtil.debuglog) {
10692 debug = debugUtil.debuglog('stream');
10693 } else {
10694 debug = function () {};
10695 }
10696 /*</replacement>*/
10697
10698 var BufferList = require('./internal/streams/BufferList');
10699 var destroyImpl = require('./internal/streams/destroy');
10700 var StringDecoder;
10701
10702 util.inherits(Readable, Stream);
10703
10704 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10705
10706 function prependListener(emitter, event, fn) {
10707 // Sadly this is not cacheable as some libraries bundle their own
10708 // event emitter implementation with them.
10709 if (typeof emitter.prependListener === 'function') {
10710 return emitter.prependListener(event, fn);
10711 } else {
10712 // This is a hack to make sure that our error handler is attached before any
10713 // userland ones. NEVER DO THIS. This is here only because this code needs
10714 // to continue to work with older versions of Node.js that do not include
10715 // the prependListener() method. The goal is to eventually remove this hack.
10716 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]];
10717 }
10718 }
10719
10720 function ReadableState(options, stream) {
10721 Duplex = Duplex || require('./_stream_duplex');
10722
10723 options = options || {};
10724
10725 // object stream flag. Used to make read(n) ignore n and to
10726 // make all the buffer merging and length checks go away
10727 this.objectMode = !!options.objectMode;
10728
10729 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10730
10731 // the point at which it stops calling _read() to fill the buffer
10732 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10733 var hwm = options.highWaterMark;
10734 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10735 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
10736
10737 // cast to ints.
10738 this.highWaterMark = Math.floor(this.highWaterMark);
10739
10740 // A linked list is used to store data chunks instead of an array because the
10741 // linked list can remove elements from the beginning faster than
10742 // array.shift()
10743 this.buffer = new BufferList();
10744 this.length = 0;
10745 this.pipes = null;
10746 this.pipesCount = 0;
10747 this.flowing = null;
10748 this.ended = false;
10749 this.endEmitted = false;
10750 this.reading = false;
10751
10752 // a flag to be able to tell if the event 'readable'/'data' is emitted
10753 // immediately, or on a later tick. We set this to true at first, because
10754 // any actions that shouldn't happen until "later" should generally also
10755 // not happen before the first read call.
10756 this.sync = true;
10757
10758 // whenever we return null, then we set a flag to say
10759 // that we're awaiting a 'readable' event emission.
10760 this.needReadable = false;
10761 this.emittedReadable = false;
10762 this.readableListening = false;
10763 this.resumeScheduled = false;
10764
10765 // has it been destroyed
10766 this.destroyed = false;
10767
10768 // Crypto is kind of old and crusty. Historically, its default string
10769 // encoding is 'binary' so we have to make this configurable.
10770 // Everything else in the universe uses 'utf8', though.
10771 this.defaultEncoding = options.defaultEncoding || 'utf8';
10772
10773 // the number of writers that are awaiting a drain event in .pipe()s
10774 this.awaitDrain = 0;
10775
10776 // if true, a maybeReadMore has been scheduled
10777 this.readingMore = false;
10778
10779 this.decoder = null;
10780 this.encoding = null;
10781 if (options.encoding) {
10782 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10783 this.decoder = new StringDecoder(options.encoding);
10784 this.encoding = options.encoding;
10785 }
10786 }
10787
10788 function Readable(options) {
10789 Duplex = Duplex || require('./_stream_duplex');
10790
10791 if (!(this instanceof Readable)) return new Readable(options);
10792
10793 this._readableState = new ReadableState(options, this);
10794
10795 // legacy
10796 this.readable = true;
10797
10798 if (options) {
10799 if (typeof options.read === 'function') this._read = options.read;
10800
10801 if (typeof options.destroy === 'function') this._destroy = options.destroy;
10802 }
10803
10804 Stream.call(this);
10805 }
10806
10807 Object.defineProperty(Readable.prototype, 'destroyed', {
10808 get: function () {
10809 if (this._readableState === undefined) {
10810 return false;
10811 }
10812 return this._readableState.destroyed;
10813 },
10814 set: function (value) {
10815 // we ignore the value if the stream
10816 // has not been initialized yet
10817 if (!this._readableState) {
10818 return;
10819 }
10820
10821 // backward compatibility, the user is explicitly
10822 // managing destroyed
10823 this._readableState.destroyed = value;
10824 }
10825 });
10826
10827 Readable.prototype.destroy = destroyImpl.destroy;
10828 Readable.prototype._undestroy = destroyImpl.undestroy;
10829 Readable.prototype._destroy = function (err, cb) {
10830 this.push(null);
10831 cb(err);
10832 };
10833
10834 // Manually shove something into the read() buffer.
10835 // This returns true if the highWaterMark has not been hit yet,
10836 // similar to how Writable.write() returns true if you should
10837 // write() some more.
10838 Readable.prototype.push = function (chunk, encoding) {
10839 var state = this._readableState;
10840 var skipChunkCheck;
10841
10842 if (!state.objectMode) {
10843 if (typeof chunk === 'string') {
10844 encoding = encoding || state.defaultEncoding;
10845 if (encoding !== state.encoding) {
10846 chunk = Buffer.from(chunk, encoding);
10847 encoding = '';
10848 }
10849 skipChunkCheck = true;
10850 }
10851 } else {
10852 skipChunkCheck = true;
10853 }
10854
10855 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10856 };
10857
10858 // Unshift should *always* be something directly out of read()
10859 Readable.prototype.unshift = function (chunk) {
10860 return readableAddChunk(this, chunk, null, true, false);
10861 };
10862
10863 function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10864 var state = stream._readableState;
10865 if (chunk === null) {
10866 state.reading = false;
10867 onEofChunk(stream, state);
10868 } else {
10869 var er;
10870 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10871 if (er) {
10872 stream.emit('error', er);
10873 } else if (state.objectMode || chunk && chunk.length > 0) {
10874 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10875 chunk = _uint8ArrayToBuffer(chunk);
10876 }
10877
10878 if (addToFront) {
10879 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10880 } else if (state.ended) {
10881 stream.emit('error', new Error('stream.push() after EOF'));
10882 } else {
10883 state.reading = false;
10884 if (state.decoder && !encoding) {
10885 chunk = state.decoder.write(chunk);
10886 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10887 } else {
10888 addChunk(stream, state, chunk, false);
10889 }
10890 }
10891 } else if (!addToFront) {
10892 state.reading = false;
10893 }
10894 }
10895
10896 return needMoreData(state);
10897 }
10898
10899 function addChunk(stream, state, chunk, addToFront) {
10900 if (state.flowing && state.length === 0 && !state.sync) {
10901 stream.emit('data', chunk);
10902 stream.read(0);
10903 } else {
10904 // update the buffer info.
10905 state.length += state.objectMode ? 1 : chunk.length;
10906 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10907
10908 if (state.needReadable) emitReadable(stream);
10909 }
10910 maybeReadMore(stream, state);
10911 }
10912
10913 function chunkInvalid(state, chunk) {
10914 var er;
10915 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10916 er = new TypeError('Invalid non-string/buffer chunk');
10917 }
10918 return er;
10919 }
10920
10921 // if it's past the high water mark, we can push in some more.
10922 // Also, if we have no data yet, we can stand some
10923 // more bytes. This is to work around cases where hwm=0,
10924 // such as the repl. Also, if the push() triggered a
10925 // readable event, and the user called read(largeNumber) such that
10926 // needReadable was set, then we ought to push more, so that another
10927 // 'readable' event will be triggered.
10928 function needMoreData(state) {
10929 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
10930 }
10931
10932 Readable.prototype.isPaused = function () {
10933 return this._readableState.flowing === false;
10934 };
10935
10936 // backwards compatibility.
10937 Readable.prototype.setEncoding = function (enc) {
10938 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10939 this._readableState.decoder = new StringDecoder(enc);
10940 this._readableState.encoding = enc;
10941 return this;
10942 };
10943
10944 // Don't raise the hwm > 8MB
10945 var MAX_HWM = 0x800000;
10946 function computeNewHighWaterMark(n) {
10947 if (n >= MAX_HWM) {
10948 n = MAX_HWM;
10949 } else {
10950 // Get the next highest power of 2 to prevent increasing hwm excessively in
10951 // tiny amounts
10952 n--;
10953 n |= n >>> 1;
10954 n |= n >>> 2;
10955 n |= n >>> 4;
10956 n |= n >>> 8;
10957 n |= n >>> 16;
10958 n++;
10959 }
10960 return n;
10961 }
10962
10963 // This function is designed to be inlinable, so please take care when making
10964 // changes to the function body.
10965 function howMuchToRead(n, state) {
10966 if (n <= 0 || state.length === 0 && state.ended) return 0;
10967 if (state.objectMode) return 1;
10968 if (n !== n) {
10969 // Only flow one buffer at a time
10970 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10971 }
10972 // If we're asking for more than the current hwm, then raise the hwm.
10973 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10974 if (n <= state.length) return n;
10975 // Don't have enough
10976 if (!state.ended) {
10977 state.needReadable = true;
10978 return 0;
10979 }
10980 return state.length;
10981 }
10982
10983 // you can override either this method, or the async _read(n) below.
10984 Readable.prototype.read = function (n) {
10985 debug('read', n);
10986 n = parseInt(n, 10);
10987 var state = this._readableState;
10988 var nOrig = n;
10989
10990 if (n !== 0) state.emittedReadable = false;
10991
10992 // if we're doing read(0) to trigger a readable event, but we
10993 // already have a bunch of data in the buffer, then just trigger
10994 // the 'readable' event and move on.
10995 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10996 debug('read: emitReadable', state.length, state.ended);
10997 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10998 return null;
10999 }
11000
11001 n = howMuchToRead(n, state);
11002
11003 // if we've ended, and we're now clear, then finish it up.
11004 if (n === 0 && state.ended) {
11005 if (state.length === 0) endReadable(this);
11006 return null;
11007 }
11008
11009 // All the actual chunk generation logic needs to be
11010 // *below* the call to _read. The reason is that in certain
11011 // synthetic stream cases, such as passthrough streams, _read
11012 // may be a completely synchronous operation which may change
11013 // the state of the read buffer, providing enough data when
11014 // before there was *not* enough.
11015 //
11016 // So, the steps are:
11017 // 1. Figure out what the state of things will be after we do
11018 // a read from the buffer.
11019 //
11020 // 2. If that resulting state will trigger a _read, then call _read.
11021 // Note that this may be asynchronous, or synchronous. Yes, it is
11022 // deeply ugly to write APIs this way, but that still doesn't mean
11023 // that the Readable class should behave improperly, as streams are
11024 // designed to be sync/async agnostic.
11025 // Take note if the _read call is sync or async (ie, if the read call
11026 // has returned yet), so that we know whether or not it's safe to emit
11027 // 'readable' etc.
11028 //
11029 // 3. Actually pull the requested chunks out of the buffer and return.
11030
11031 // if we need a readable event, then we need to do some reading.
11032 var doRead = state.needReadable;
11033 debug('need readable', doRead);
11034
11035 // if we currently have less than the highWaterMark, then also read some
11036 if (state.length === 0 || state.length - n < state.highWaterMark) {
11037 doRead = true;
11038 debug('length less than watermark', doRead);
11039 }
11040
11041 // however, if we've ended, then there's no point, and if we're already
11042 // reading, then it's unnecessary.
11043 if (state.ended || state.reading) {
11044 doRead = false;
11045 debug('reading or ended', doRead);
11046 } else if (doRead) {
11047 debug('do read');
11048 state.reading = true;
11049 state.sync = true;
11050 // if the length is currently zero, then we *need* a readable event.
11051 if (state.length === 0) state.needReadable = true;
11052 // call internal read method
11053 this._read(state.highWaterMark);
11054 state.sync = false;
11055 // If _read pushed data synchronously, then `reading` will be false,
11056 // and we need to re-evaluate how much data we can return to the user.
11057 if (!state.reading) n = howMuchToRead(nOrig, state);
11058 }
11059
11060 var ret;
11061 if (n > 0) ret = fromList(n, state);else ret = null;
11062
11063 if (ret === null) {
11064 state.needReadable = true;
11065 n = 0;
11066 } else {
11067 state.length -= n;
11068 }
11069
11070 if (state.length === 0) {
11071 // If we have nothing in the buffer, then we want to know
11072 // as soon as we *do* get something into the buffer.
11073 if (!state.ended) state.needReadable = true;
11074
11075 // If we tried to read() past the EOF, then emit end on the next tick.
11076 if (nOrig !== n && state.ended) endReadable(this);
11077 }
11078
11079 if (ret !== null) this.emit('data', ret);
11080
11081 return ret;
11082 };
11083
11084 function onEofChunk(stream, state) {
11085 if (state.ended) return;
11086 if (state.decoder) {
11087 var chunk = state.decoder.end();
11088 if (chunk && chunk.length) {
11089 state.buffer.push(chunk);
11090 state.length += state.objectMode ? 1 : chunk.length;
11091 }
11092 }
11093 state.ended = true;
11094
11095 // emit 'readable' now to make sure it gets picked up.
11096 emitReadable(stream);
11097 }
11098
11099 // Don't emit readable right away in sync mode, because this can trigger
11100 // another read() call => stack overflow. This way, it might trigger
11101 // a nextTick recursion warning, but that's not so bad.
11102 function emitReadable(stream) {
11103 var state = stream._readableState;
11104 state.needReadable = false;
11105 if (!state.emittedReadable) {
11106 debug('emitReadable', state.flowing);
11107 state.emittedReadable = true;
11108 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11109 }
11110 }
11111
11112 function emitReadable_(stream) {
11113 debug('emit readable');
11114 stream.emit('readable');
11115 flow(stream);
11116 }
11117
11118 // at this point, the user has presumably seen the 'readable' event,
11119 // and called read() to consume some data. that may have triggered
11120 // in turn another _read(n) call, in which case reading = true if
11121 // it's in progress.
11122 // However, if we're not ended, or reading, and the length < hwm,
11123 // then go ahead and try to read some more preemptively.
11124 function maybeReadMore(stream, state) {
11125 if (!state.readingMore) {
11126 state.readingMore = true;
11127 processNextTick(maybeReadMore_, stream, state);
11128 }
11129 }
11130
11131 function maybeReadMore_(stream, state) {
11132 var len = state.length;
11133 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11134 debug('maybeReadMore read 0');
11135 stream.read(0);
11136 if (len === state.length)
11137 // didn't get any data, stop spinning.
11138 break;else len = state.length;
11139 }
11140 state.readingMore = false;
11141 }
11142
11143 // abstract method. to be overridden in specific implementation classes.
11144 // call cb(er, data) where data is <= n in length.
11145 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11146 // arbitrary, and perhaps not very meaningful.
11147 Readable.prototype._read = function (n) {
11148 this.emit('error', new Error('_read() is not implemented'));
11149 };
11150
11151 Readable.prototype.pipe = function (dest, pipeOpts) {
11152 var src = this;
11153 var state = this._readableState;
11154
11155 switch (state.pipesCount) {
11156 case 0:
11157 state.pipes = dest;
11158 break;
11159 case 1:
11160 state.pipes = [state.pipes, dest];
11161 break;
11162 default:
11163 state.pipes.push(dest);
11164 break;
11165 }
11166 state.pipesCount += 1;
11167 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11168
11169 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11170
11171 var endFn = doEnd ? onend : unpipe;
11172 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11173
11174 dest.on('unpipe', onunpipe);
11175 function onunpipe(readable, unpipeInfo) {
11176 debug('onunpipe');
11177 if (readable === src) {
11178 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11179 unpipeInfo.hasUnpiped = true;
11180 cleanup();
11181 }
11182 }
11183 }
11184
11185 function onend() {
11186 debug('onend');
11187 dest.end();
11188 }
11189
11190 // when the dest drains, it reduces the awaitDrain counter
11191 // on the source. This would be more elegant with a .once()
11192 // handler in flow(), but adding and removing repeatedly is
11193 // too slow.
11194 var ondrain = pipeOnDrain(src);
11195 dest.on('drain', ondrain);
11196
11197 var cleanedUp = false;
11198 function cleanup() {
11199 debug('cleanup');
11200 // cleanup event handlers once the pipe is broken
11201 dest.removeListener('close', onclose);
11202 dest.removeListener('finish', onfinish);
11203 dest.removeListener('drain', ondrain);
11204 dest.removeListener('error', onerror);
11205 dest.removeListener('unpipe', onunpipe);
11206 src.removeListener('end', onend);
11207 src.removeListener('end', unpipe);
11208 src.removeListener('data', ondata);
11209
11210 cleanedUp = true;
11211
11212 // if the reader is waiting for a drain event from this
11213 // specific writer, then it would cause it to never start
11214 // flowing again.
11215 // So, if this is awaiting a drain, then we just call it now.
11216 // If we don't know, then assume that we are waiting for one.
11217 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11218 }
11219
11220 // If the user pushes more data while we're writing to dest then we'll end up
11221 // in ondata again. However, we only want to increase awaitDrain once because
11222 // dest will only emit one 'drain' event for the multiple writes.
11223 // => Introduce a guard on increasing awaitDrain.
11224 var increasedAwaitDrain = false;
11225 src.on('data', ondata);
11226 function ondata(chunk) {
11227 debug('ondata');
11228 increasedAwaitDrain = false;
11229 var ret = dest.write(chunk);
11230 if (false === ret && !increasedAwaitDrain) {
11231 // If the user unpiped during `dest.write()`, it is possible
11232 // to get stuck in a permanently paused state if that write
11233 // also returned false.
11234 // => Check whether `dest` is still a piping destination.
11235 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11236 debug('false write response, pause', src._readableState.awaitDrain);
11237 src._readableState.awaitDrain++;
11238 increasedAwaitDrain = true;
11239 }
11240 src.pause();
11241 }
11242 }
11243
11244 // if the dest has an error, then stop piping into it.
11245 // however, don't suppress the throwing behavior for this.
11246 function onerror(er) {
11247 debug('onerror', er);
11248 unpipe();
11249 dest.removeListener('error', onerror);
11250 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
11251 }
11252
11253 // Make sure our error handler is attached before userland ones.
11254 prependListener(dest, 'error', onerror);
11255
11256 // Both close and finish should trigger unpipe, but only once.
11257 function onclose() {
11258 dest.removeListener('finish', onfinish);
11259 unpipe();
11260 }
11261 dest.once('close', onclose);
11262 function onfinish() {
11263 debug('onfinish');
11264 dest.removeListener('close', onclose);
11265 unpipe();
11266 }
11267 dest.once('finish', onfinish);
11268
11269 function unpipe() {
11270 debug('unpipe');
11271 src.unpipe(dest);
11272 }
11273
11274 // tell the dest that it's being piped to
11275 dest.emit('pipe', src);
11276
11277 // start the flow if it hasn't been started already.
11278 if (!state.flowing) {
11279 debug('pipe resume');
11280 src.resume();
11281 }
11282
11283 return dest;
11284 };
11285
11286 function pipeOnDrain(src) {
11287 return function () {
11288 var state = src._readableState;
11289 debug('pipeOnDrain', state.awaitDrain);
11290 if (state.awaitDrain) state.awaitDrain--;
11291 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11292 state.flowing = true;
11293 flow(src);
11294 }
11295 };
11296 }
11297
11298 Readable.prototype.unpipe = function (dest) {
11299 var state = this._readableState;
11300 var unpipeInfo = { hasUnpiped: false };
11301
11302 // if we're not piping anywhere, then do nothing.
11303 if (state.pipesCount === 0) return this;
11304
11305 // just one destination. most common case.
11306 if (state.pipesCount === 1) {
11307 // passed in one, but it's not the right one.
11308 if (dest && dest !== state.pipes) return this;
11309
11310 if (!dest) dest = state.pipes;
11311
11312 // got a match.
11313 state.pipes = null;
11314 state.pipesCount = 0;
11315 state.flowing = false;
11316 if (dest) dest.emit('unpipe', this, unpipeInfo);
11317 return this;
11318 }
11319
11320 // slow case. multiple pipe destinations.
11321
11322 if (!dest) {
11323 // remove all.
11324 var dests = state.pipes;
11325 var len = state.pipesCount;
11326 state.pipes = null;
11327 state.pipesCount = 0;
11328 state.flowing = false;
11329
11330 for (var i = 0; i < len; i++) {
11331 dests[i].emit('unpipe', this, unpipeInfo);
11332 }return this;
11333 }
11334
11335 // try to find the right one.
11336 var index = indexOf(state.pipes, dest);
11337 if (index === -1) return this;
11338
11339 state.pipes.splice(index, 1);
11340 state.pipesCount -= 1;
11341 if (state.pipesCount === 1) state.pipes = state.pipes[0];
11342
11343 dest.emit('unpipe', this, unpipeInfo);
11344
11345 return this;
11346 };
11347
11348 // set up data events if they are asked for
11349 // Ensure readable listeners eventually get something
11350 Readable.prototype.on = function (ev, fn) {
11351 var res = Stream.prototype.on.call(this, ev, fn);
11352
11353 if (ev === 'data') {
11354 // Start flowing on next tick if stream isn't explicitly paused
11355 if (this._readableState.flowing !== false) this.resume();
11356 } else if (ev === 'readable') {
11357 var state = this._readableState;
11358 if (!state.endEmitted && !state.readableListening) {
11359 state.readableListening = state.needReadable = true;
11360 state.emittedReadable = false;
11361 if (!state.reading) {
11362 processNextTick(nReadingNextTick, this);
11363 } else if (state.length) {
11364 emitReadable(this);
11365 }
11366 }
11367 }
11368
11369 return res;
11370 };
11371 Readable.prototype.addListener = Readable.prototype.on;
11372
11373 function nReadingNextTick(self) {
11374 debug('readable nexttick read 0');
11375 self.read(0);
11376 }
11377
11378 // pause() and resume() are remnants of the legacy readable stream API
11379 // If the user uses them, then switch into old mode.
11380 Readable.prototype.resume = function () {
11381 var state = this._readableState;
11382 if (!state.flowing) {
11383 debug('resume');
11384 state.flowing = true;
11385 resume(this, state);
11386 }
11387 return this;
11388 };
11389
11390 function resume(stream, state) {
11391 if (!state.resumeScheduled) {
11392 state.resumeScheduled = true;
11393 processNextTick(resume_, stream, state);
11394 }
11395 }
11396
11397 function resume_(stream, state) {
11398 if (!state.reading) {
11399 debug('resume read 0');
11400 stream.read(0);
11401 }
11402
11403 state.resumeScheduled = false;
11404 state.awaitDrain = 0;
11405 stream.emit('resume');
11406 flow(stream);
11407 if (state.flowing && !state.reading) stream.read(0);
11408 }
11409
11410 Readable.prototype.pause = function () {
11411 debug('call pause flowing=%j', this._readableState.flowing);
11412 if (false !== this._readableState.flowing) {
11413 debug('pause');
11414 this._readableState.flowing = false;
11415 this.emit('pause');
11416 }
11417 return this;
11418 };
11419
11420 function flow(stream) {
11421 var state = stream._readableState;
11422 debug('flow', state.flowing);
11423 while (state.flowing && stream.read() !== null) {}
11424 }
11425
11426 // wrap an old-style stream as the async data source.
11427 // This is *not* part of the readable stream interface.
11428 // It is an ugly unfortunate mess of history.
11429 Readable.prototype.wrap = function (stream) {
11430 var state = this._readableState;
11431 var paused = false;
11432
11433 var self = this;
11434 stream.on('end', function () {
11435 debug('wrapped end');
11436 if (state.decoder && !state.ended) {
11437 var chunk = state.decoder.end();
11438 if (chunk && chunk.length) self.push(chunk);
11439 }
11440
11441 self.push(null);
11442 });
11443
11444 stream.on('data', function (chunk) {
11445 debug('wrapped data');
11446 if (state.decoder) chunk = state.decoder.write(chunk);
11447
11448 // don't skip over falsy values in objectMode
11449 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11450
11451 var ret = self.push(chunk);
11452 if (!ret) {
11453 paused = true;
11454 stream.pause();
11455 }
11456 });
11457
11458 // proxy all the other methods.
11459 // important when wrapping filters and duplexes.
11460 for (var i in stream) {
11461 if (this[i] === undefined && typeof stream[i] === 'function') {
11462 this[i] = function (method) {
11463 return function () {
11464 return stream[method].apply(stream, arguments);
11465 };
11466 }(i);
11467 }
11468 }
11469
11470 // proxy certain important events.
11471 for (var n = 0; n < kProxyEvents.length; n++) {
11472 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11473 }
11474
11475 // when we try to consume some more bytes, simply unpause the
11476 // underlying stream.
11477 self._read = function (n) {
11478 debug('wrapped _read', n);
11479 if (paused) {
11480 paused = false;
11481 stream.resume();
11482 }
11483 };
11484
11485 return self;
11486 };
11487
11488 // exposed for testing purposes only.
11489 Readable._fromList = fromList;
11490
11491 // Pluck off n bytes from an array of buffers.
11492 // Length is the combined lengths of all the buffers in the list.
11493 // This function is designed to be inlinable, so please take care when making
11494 // changes to the function body.
11495 function fromList(n, state) {
11496 // nothing buffered
11497 if (state.length === 0) return null;
11498
11499 var ret;
11500 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11501 // read it all, truncate the list
11502 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);
11503 state.buffer.clear();
11504 } else {
11505 // read part of list
11506 ret = fromListPartial(n, state.buffer, state.decoder);
11507 }
11508
11509 return ret;
11510 }
11511
11512 // Extracts only enough buffered data to satisfy the amount requested.
11513 // This function is designed to be inlinable, so please take care when making
11514 // changes to the function body.
11515 function fromListPartial(n, list, hasStrings) {
11516 var ret;
11517 if (n < list.head.data.length) {
11518 // slice is the same for buffers and strings
11519 ret = list.head.data.slice(0, n);
11520 list.head.data = list.head.data.slice(n);
11521 } else if (n === list.head.data.length) {
11522 // first chunk is a perfect match
11523 ret = list.shift();
11524 } else {
11525 // result spans more than one buffer
11526 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11527 }
11528 return ret;
11529 }
11530
11531 // Copies a specified amount of characters from the list of buffered data
11532 // chunks.
11533 // This function is designed to be inlinable, so please take care when making
11534 // changes to the function body.
11535 function copyFromBufferString(n, list) {
11536 var p = list.head;
11537 var c = 1;
11538 var ret = p.data;
11539 n -= ret.length;
11540 while (p = p.next) {
11541 var str = p.data;
11542 var nb = n > str.length ? str.length : n;
11543 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11544 n -= nb;
11545 if (n === 0) {
11546 if (nb === str.length) {
11547 ++c;
11548 if (p.next) list.head = p.next;else list.head = list.tail = null;
11549 } else {
11550 list.head = p;
11551 p.data = str.slice(nb);
11552 }
11553 break;
11554 }
11555 ++c;
11556 }
11557 list.length -= c;
11558 return ret;
11559 }
11560
11561 // Copies a specified amount of bytes from the list of buffered data chunks.
11562 // This function is designed to be inlinable, so please take care when making
11563 // changes to the function body.
11564 function copyFromBuffer(n, list) {
11565 var ret = Buffer.allocUnsafe(n);
11566 var p = list.head;
11567 var c = 1;
11568 p.data.copy(ret);
11569 n -= p.data.length;
11570 while (p = p.next) {
11571 var buf = p.data;
11572 var nb = n > buf.length ? buf.length : n;
11573 buf.copy(ret, ret.length - n, 0, nb);
11574 n -= nb;
11575 if (n === 0) {
11576 if (nb === buf.length) {
11577 ++c;
11578 if (p.next) list.head = p.next;else list.head = list.tail = null;
11579 } else {
11580 list.head = p;
11581 p.data = buf.slice(nb);
11582 }
11583 break;
11584 }
11585 ++c;
11586 }
11587 list.length -= c;
11588 return ret;
11589 }
11590
11591 function endReadable(stream) {
11592 var state = stream._readableState;
11593
11594 // If we get here before consuming all the bytes, then that is a
11595 // bug in node. Should never happen.
11596 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
11597
11598 if (!state.endEmitted) {
11599 state.ended = true;
11600 processNextTick(endReadableNT, state, stream);
11601 }
11602 }
11603
11604 function endReadableNT(state, stream) {
11605 // Check that we didn't get one last unshift.
11606 if (!state.endEmitted && state.length === 0) {
11607 state.endEmitted = true;
11608 stream.readable = false;
11609 stream.emit('end');
11610 }
11611 }
11612
11613 function forEach(xs, f) {
11614 for (var i = 0, l = xs.length; i < l; i++) {
11615 f(xs[i], i);
11616 }
11617 }
11618
11619 function indexOf(xs, x) {
11620 for (var i = 0, l = xs.length; i < l; i++) {
11621 if (xs[i] === x) return i;
11622 }
11623 return -1;
11624 }
11625 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11626 },{"./_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){
11627 // Copyright Joyent, Inc. and other Node contributors.
11628 //
11629 // Permission is hereby granted, free of charge, to any person obtaining a
11630 // copy of this software and associated documentation files (the
11631 // "Software"), to deal in the Software without restriction, including
11632 // without limitation the rights to use, copy, modify, merge, publish,
11633 // distribute, sublicense, and/or sell copies of the Software, and to permit
11634 // persons to whom the Software is furnished to do so, subject to the
11635 // following conditions:
11636 //
11637 // The above copyright notice and this permission notice shall be included
11638 // in all copies or substantial portions of the Software.
11639 //
11640 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11641 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11642 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11643 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11644 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11645 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11646 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11647
11648 // a transform stream is a readable/writable stream where you do
11649 // something with the data. Sometimes it's called a "filter",
11650 // but that's not a great name for it, since that implies a thing where
11651 // some bits pass through, and others are simply ignored. (That would
11652 // be a valid example of a transform, of course.)
11653 //
11654 // While the output is causally related to the input, it's not a
11655 // necessarily symmetric or synchronous transformation. For example,
11656 // a zlib stream might take multiple plain-text writes(), and then
11657 // emit a single compressed chunk some time in the future.
11658 //
11659 // Here's how this works:
11660 //
11661 // The Transform stream has all the aspects of the readable and writable
11662 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11663 // internally, and returns false if there's a lot of pending writes
11664 // buffered up. When you call read(), that calls _read(n) until
11665 // there's enough pending readable data buffered up.
11666 //
11667 // In a transform stream, the written data is placed in a buffer. When
11668 // _read(n) is called, it transforms the queued up data, calling the
11669 // buffered _write cb's as it consumes chunks. If consuming a single
11670 // written chunk would result in multiple output chunks, then the first
11671 // outputted bit calls the readcb, and subsequent chunks just go into
11672 // the read buffer, and will cause it to emit 'readable' if necessary.
11673 //
11674 // This way, back-pressure is actually determined by the reading side,
11675 // since _read has to be called to start processing a new chunk. However,
11676 // a pathological inflate type of transform can cause excessive buffering
11677 // here. For example, imagine a stream where every byte of input is
11678 // interpreted as an integer from 0-255, and then results in that many
11679 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11680 // 1kb of data being output. In this case, you could write a very small
11681 // amount of input, and end up with a very large amount of output. In
11682 // such a pathological inflating mechanism, there'd be no way to tell
11683 // the system to stop doing the transform. A single 4MB write could
11684 // cause the system to run out of memory.
11685 //
11686 // However, even in such a pathological case, only a single written chunk
11687 // would be consumed, and then the rest would wait (un-transformed) until
11688 // the results of the previous transformed chunk were consumed.
11689
11690 'use strict';
11691
11692 module.exports = Transform;
11693
11694 var Duplex = require('./_stream_duplex');
11695
11696 /*<replacement>*/
11697 var util = require('core-util-is');
11698 util.inherits = require('inherits');
11699 /*</replacement>*/
11700
11701 util.inherits(Transform, Duplex);
11702
11703 function TransformState(stream) {
11704 this.afterTransform = function (er, data) {
11705 return afterTransform(stream, er, data);
11706 };
11707
11708 this.needTransform = false;
11709 this.transforming = false;
11710 this.writecb = null;
11711 this.writechunk = null;
11712 this.writeencoding = null;
11713 }
11714
11715 function afterTransform(stream, er, data) {
11716 var ts = stream._transformState;
11717 ts.transforming = false;
11718
11719 var cb = ts.writecb;
11720
11721 if (!cb) {
11722 return stream.emit('error', new Error('write callback called multiple times'));
11723 }
11724
11725 ts.writechunk = null;
11726 ts.writecb = null;
11727
11728 if (data !== null && data !== undefined) stream.push(data);
11729
11730 cb(er);
11731
11732 var rs = stream._readableState;
11733 rs.reading = false;
11734 if (rs.needReadable || rs.length < rs.highWaterMark) {
11735 stream._read(rs.highWaterMark);
11736 }
11737 }
11738
11739 function Transform(options) {
11740 if (!(this instanceof Transform)) return new Transform(options);
11741
11742 Duplex.call(this, options);
11743
11744 this._transformState = new TransformState(this);
11745
11746 var stream = this;
11747
11748 // start out asking for a readable event once data is transformed.
11749 this._readableState.needReadable = true;
11750
11751 // we have implemented the _read method, and done the other things
11752 // that Readable wants before the first _read call, so unset the
11753 // sync guard flag.
11754 this._readableState.sync = false;
11755
11756 if (options) {
11757 if (typeof options.transform === 'function') this._transform = options.transform;
11758
11759 if (typeof options.flush === 'function') this._flush = options.flush;
11760 }
11761
11762 // When the writable side finishes, then flush out anything remaining.
11763 this.once('prefinish', function () {
11764 if (typeof this._flush === 'function') this._flush(function (er, data) {
11765 done(stream, er, data);
11766 });else done(stream);
11767 });
11768 }
11769
11770 Transform.prototype.push = function (chunk, encoding) {
11771 this._transformState.needTransform = false;
11772 return Duplex.prototype.push.call(this, chunk, encoding);
11773 };
11774
11775 // This is the part where you do stuff!
11776 // override this function in implementation classes.
11777 // 'chunk' is an input chunk.
11778 //
11779 // Call `push(newChunk)` to pass along transformed output
11780 // to the readable side. You may call 'push' zero or more times.
11781 //
11782 // Call `cb(err)` when you are done with this chunk. If you pass
11783 // an error, then that'll put the hurt on the whole operation. If you
11784 // never call cb(), then you'll never get another chunk.
11785 Transform.prototype._transform = function (chunk, encoding, cb) {
11786 throw new Error('_transform() is not implemented');
11787 };
11788
11789 Transform.prototype._write = function (chunk, encoding, cb) {
11790 var ts = this._transformState;
11791 ts.writecb = cb;
11792 ts.writechunk = chunk;
11793 ts.writeencoding = encoding;
11794 if (!ts.transforming) {
11795 var rs = this._readableState;
11796 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11797 }
11798 };
11799
11800 // Doesn't matter what the args are here.
11801 // _transform does all the work.
11802 // That we got here means that the readable side wants more data.
11803 Transform.prototype._read = function (n) {
11804 var ts = this._transformState;
11805
11806 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11807 ts.transforming = true;
11808 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11809 } else {
11810 // mark that we need a transform, so that any data that comes in
11811 // will get processed, now that we've asked for it.
11812 ts.needTransform = true;
11813 }
11814 };
11815
11816 Transform.prototype._destroy = function (err, cb) {
11817 var _this = this;
11818
11819 Duplex.prototype._destroy.call(this, err, function (err2) {
11820 cb(err2);
11821 _this.emit('close');
11822 });
11823 };
11824
11825 function done(stream, er, data) {
11826 if (er) return stream.emit('error', er);
11827
11828 if (data !== null && data !== undefined) stream.push(data);
11829
11830 // if there's nothing in the write buffer, then that means
11831 // that nothing more will ever be provided
11832 var ws = stream._writableState;
11833 var ts = stream._transformState;
11834
11835 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
11836
11837 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11838
11839 return stream.push(null);
11840 }
11841 },{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11842 (function (process,global){
11843 // Copyright Joyent, Inc. and other Node contributors.
11844 //
11845 // Permission is hereby granted, free of charge, to any person obtaining a
11846 // copy of this software and associated documentation files (the
11847 // "Software"), to deal in the Software without restriction, including
11848 // without limitation the rights to use, copy, modify, merge, publish,
11849 // distribute, sublicense, and/or sell copies of the Software, and to permit
11850 // persons to whom the Software is furnished to do so, subject to the
11851 // following conditions:
11852 //
11853 // The above copyright notice and this permission notice shall be included
11854 // in all copies or substantial portions of the Software.
11855 //
11856 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11857 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11858 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11859 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11860 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11861 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11862 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11863
11864 // A bit simpler than readable streams.
11865 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11866 // the drain event emission and buffering.
11867
11868 'use strict';
11869
11870 /*<replacement>*/
11871
11872 var processNextTick = require('process-nextick-args');
11873 /*</replacement>*/
11874
11875 module.exports = Writable;
11876
11877 /* <replacement> */
11878 function WriteReq(chunk, encoding, cb) {
11879 this.chunk = chunk;
11880 this.encoding = encoding;
11881 this.callback = cb;
11882 this.next = null;
11883 }
11884
11885 // It seems a linked list but it is not
11886 // there will be only 2 of these for each stream
11887 function CorkedRequest(state) {
11888 var _this = this;
11889
11890 this.next = null;
11891 this.entry = null;
11892 this.finish = function () {
11893 onCorkedFinish(_this, state);
11894 };
11895 }
11896 /* </replacement> */
11897
11898 /*<replacement>*/
11899 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11900 /*</replacement>*/
11901
11902 /*<replacement>*/
11903 var Duplex;
11904 /*</replacement>*/
11905
11906 Writable.WritableState = WritableState;
11907
11908 /*<replacement>*/
11909 var util = require('core-util-is');
11910 util.inherits = require('inherits');
11911 /*</replacement>*/
11912
11913 /*<replacement>*/
11914 var internalUtil = {
11915 deprecate: require('util-deprecate')
11916 };
11917 /*</replacement>*/
11918
11919 /*<replacement>*/
11920 var Stream = require('./internal/streams/stream');
11921 /*</replacement>*/
11922
11923 /*<replacement>*/
11924 var Buffer = require('safe-buffer').Buffer;
11925 var OurUint8Array = global.Uint8Array || function () {};
11926 function _uint8ArrayToBuffer(chunk) {
11927 return Buffer.from(chunk);
11928 }
11929 function _isUint8Array(obj) {
11930 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11931 }
11932 /*</replacement>*/
11933
11934 var destroyImpl = require('./internal/streams/destroy');
11935
11936 util.inherits(Writable, Stream);
11937
11938 function nop() {}
11939
11940 function WritableState(options, stream) {
11941 Duplex = Duplex || require('./_stream_duplex');
11942
11943 options = options || {};
11944
11945 // object stream flag to indicate whether or not this stream
11946 // contains buffers or objects.
11947 this.objectMode = !!options.objectMode;
11948
11949 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11950
11951 // the point at which write() starts returning false
11952 // Note: 0 is a valid value, means that we always return false if
11953 // the entire buffer is not flushed immediately on write()
11954 var hwm = options.highWaterMark;
11955 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11956 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
11957
11958 // cast to ints.
11959 this.highWaterMark = Math.floor(this.highWaterMark);
11960
11961 // if _final has been called
11962 this.finalCalled = false;
11963
11964 // drain event flag.
11965 this.needDrain = false;
11966 // at the start of calling end()
11967 this.ending = false;
11968 // when end() has been called, and returned
11969 this.ended = false;
11970 // when 'finish' is emitted
11971 this.finished = false;
11972
11973 // has it been destroyed
11974 this.destroyed = false;
11975
11976 // should we decode strings into buffers before passing to _write?
11977 // this is here so that some node-core streams can optimize string
11978 // handling at a lower level.
11979 var noDecode = options.decodeStrings === false;
11980 this.decodeStrings = !noDecode;
11981
11982 // Crypto is kind of old and crusty. Historically, its default string
11983 // encoding is 'binary' so we have to make this configurable.
11984 // Everything else in the universe uses 'utf8', though.
11985 this.defaultEncoding = options.defaultEncoding || 'utf8';
11986
11987 // not an actual buffer we keep track of, but a measurement
11988 // of how much we're waiting to get pushed to some underlying
11989 // socket or file.
11990 this.length = 0;
11991
11992 // a flag to see when we're in the middle of a write.
11993 this.writing = false;
11994
11995 // when true all writes will be buffered until .uncork() call
11996 this.corked = 0;
11997
11998 // a flag to be able to tell if the onwrite cb is called immediately,
11999 // or on a later tick. We set this to true at first, because any
12000 // actions that shouldn't happen until "later" should generally also
12001 // not happen before the first write call.
12002 this.sync = true;
12003
12004 // a flag to know if we're processing previously buffered items, which
12005 // may call the _write() callback in the same tick, so that we don't
12006 // end up in an overlapped onwrite situation.
12007 this.bufferProcessing = false;
12008
12009 // the callback that's passed to _write(chunk,cb)
12010 this.onwrite = function (er) {
12011 onwrite(stream, er);
12012 };
12013
12014 // the callback that the user supplies to write(chunk,encoding,cb)
12015 this.writecb = null;
12016
12017 // the amount that is being written when _write is called.
12018 this.writelen = 0;
12019
12020 this.bufferedRequest = null;
12021 this.lastBufferedRequest = null;
12022
12023 // number of pending user-supplied write callbacks
12024 // this must be 0 before 'finish' can be emitted
12025 this.pendingcb = 0;
12026
12027 // emit prefinish if the only thing we're waiting for is _write cbs
12028 // This is relevant for synchronous Transform streams
12029 this.prefinished = false;
12030
12031 // True if the error was already emitted and should not be thrown again
12032 this.errorEmitted = false;
12033
12034 // count buffered requests
12035 this.bufferedRequestCount = 0;
12036
12037 // allocate the first CorkedRequest, there is always
12038 // one allocated and free to use, and we maintain at most two
12039 this.corkedRequestsFree = new CorkedRequest(this);
12040 }
12041
12042 WritableState.prototype.getBuffer = function getBuffer() {
12043 var current = this.bufferedRequest;
12044 var out = [];
12045 while (current) {
12046 out.push(current);
12047 current = current.next;
12048 }
12049 return out;
12050 };
12051
12052 (function () {
12053 try {
12054 Object.defineProperty(WritableState.prototype, 'buffer', {
12055 get: internalUtil.deprecate(function () {
12056 return this.getBuffer();
12057 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12058 });
12059 } catch (_) {}
12060 })();
12061
12062 // Test _writableState for inheritance to account for Duplex streams,
12063 // whose prototype chain only points to Readable.
12064 var realHasInstance;
12065 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12066 realHasInstance = Function.prototype[Symbol.hasInstance];
12067 Object.defineProperty(Writable, Symbol.hasInstance, {
12068 value: function (object) {
12069 if (realHasInstance.call(this, object)) return true;
12070
12071 return object && object._writableState instanceof WritableState;
12072 }
12073 });
12074 } else {
12075 realHasInstance = function (object) {
12076 return object instanceof this;
12077 };
12078 }
12079
12080 function Writable(options) {
12081 Duplex = Duplex || require('./_stream_duplex');
12082
12083 // Writable ctor is applied to Duplexes, too.
12084 // `realHasInstance` is necessary because using plain `instanceof`
12085 // would return false, as no `_writableState` property is attached.
12086
12087 // Trying to use the custom `instanceof` for Writable here will also break the
12088 // Node.js LazyTransform implementation, which has a non-trivial getter for
12089 // `_writableState` that would lead to infinite recursion.
12090 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12091 return new Writable(options);
12092 }
12093
12094 this._writableState = new WritableState(options, this);
12095
12096 // legacy.
12097 this.writable = true;
12098
12099 if (options) {
12100 if (typeof options.write === 'function') this._write = options.write;
12101
12102 if (typeof options.writev === 'function') this._writev = options.writev;
12103
12104 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12105
12106 if (typeof options.final === 'function') this._final = options.final;
12107 }
12108
12109 Stream.call(this);
12110 }
12111
12112 // Otherwise people can pipe Writable streams, which is just wrong.
12113 Writable.prototype.pipe = function () {
12114 this.emit('error', new Error('Cannot pipe, not readable'));
12115 };
12116
12117 function writeAfterEnd(stream, cb) {
12118 var er = new Error('write after end');
12119 // TODO: defer error events consistently everywhere, not just the cb
12120 stream.emit('error', er);
12121 processNextTick(cb, er);
12122 }
12123
12124 // Checks that a user-supplied chunk is valid, especially for the particular
12125 // mode the stream is in. Currently this means that `null` is never accepted
12126 // and undefined/non-string values are only allowed in object mode.
12127 function validChunk(stream, state, chunk, cb) {
12128 var valid = true;
12129 var er = false;
12130
12131 if (chunk === null) {
12132 er = new TypeError('May not write null values to stream');
12133 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12134 er = new TypeError('Invalid non-string/buffer chunk');
12135 }
12136 if (er) {
12137 stream.emit('error', er);
12138 processNextTick(cb, er);
12139 valid = false;
12140 }
12141 return valid;
12142 }
12143
12144 Writable.prototype.write = function (chunk, encoding, cb) {
12145 var state = this._writableState;
12146 var ret = false;
12147 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12148
12149 if (isBuf && !Buffer.isBuffer(chunk)) {
12150 chunk = _uint8ArrayToBuffer(chunk);
12151 }
12152
12153 if (typeof encoding === 'function') {
12154 cb = encoding;
12155 encoding = null;
12156 }
12157
12158 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12159
12160 if (typeof cb !== 'function') cb = nop;
12161
12162 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12163 state.pendingcb++;
12164 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12165 }
12166
12167 return ret;
12168 };
12169
12170 Writable.prototype.cork = function () {
12171 var state = this._writableState;
12172
12173 state.corked++;
12174 };
12175
12176 Writable.prototype.uncork = function () {
12177 var state = this._writableState;
12178
12179 if (state.corked) {
12180 state.corked--;
12181
12182 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12183 }
12184 };
12185
12186 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12187 // node::ParseEncoding() requires lower case.
12188 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12189 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);
12190 this._writableState.defaultEncoding = encoding;
12191 return this;
12192 };
12193
12194 function decodeChunk(state, chunk, encoding) {
12195 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12196 chunk = Buffer.from(chunk, encoding);
12197 }
12198 return chunk;
12199 }
12200
12201 // if we're already writing something, then just put this
12202 // in the queue, and wait our turn. Otherwise, call _write
12203 // If we return false, then we need a drain event, so set that flag.
12204 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12205 if (!isBuf) {
12206 var newChunk = decodeChunk(state, chunk, encoding);
12207 if (chunk !== newChunk) {
12208 isBuf = true;
12209 encoding = 'buffer';
12210 chunk = newChunk;
12211 }
12212 }
12213 var len = state.objectMode ? 1 : chunk.length;
12214
12215 state.length += len;
12216
12217 var ret = state.length < state.highWaterMark;
12218 // we must ensure that previous needDrain will not be reset to false.
12219 if (!ret) state.needDrain = true;
12220
12221 if (state.writing || state.corked) {
12222 var last = state.lastBufferedRequest;
12223 state.lastBufferedRequest = {
12224 chunk: chunk,
12225 encoding: encoding,
12226 isBuf: isBuf,
12227 callback: cb,
12228 next: null
12229 };
12230 if (last) {
12231 last.next = state.lastBufferedRequest;
12232 } else {
12233 state.bufferedRequest = state.lastBufferedRequest;
12234 }
12235 state.bufferedRequestCount += 1;
12236 } else {
12237 doWrite(stream, state, false, len, chunk, encoding, cb);
12238 }
12239
12240 return ret;
12241 }
12242
12243 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12244 state.writelen = len;
12245 state.writecb = cb;
12246 state.writing = true;
12247 state.sync = true;
12248 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12249 state.sync = false;
12250 }
12251
12252 function onwriteError(stream, state, sync, er, cb) {
12253 --state.pendingcb;
12254
12255 if (sync) {
12256 // defer the callback if we are being called synchronously
12257 // to avoid piling up things on the stack
12258 processNextTick(cb, er);
12259 // this can emit finish, and it will always happen
12260 // after error
12261 processNextTick(finishMaybe, stream, state);
12262 stream._writableState.errorEmitted = true;
12263 stream.emit('error', er);
12264 } else {
12265 // the caller expect this to happen before if
12266 // it is async
12267 cb(er);
12268 stream._writableState.errorEmitted = true;
12269 stream.emit('error', er);
12270 // this can emit finish, but finish must
12271 // always follow error
12272 finishMaybe(stream, state);
12273 }
12274 }
12275
12276 function onwriteStateUpdate(state) {
12277 state.writing = false;
12278 state.writecb = null;
12279 state.length -= state.writelen;
12280 state.writelen = 0;
12281 }
12282
12283 function onwrite(stream, er) {
12284 var state = stream._writableState;
12285 var sync = state.sync;
12286 var cb = state.writecb;
12287
12288 onwriteStateUpdate(state);
12289
12290 if (er) onwriteError(stream, state, sync, er, cb);else {
12291 // Check if we're actually ready to finish, but don't emit yet
12292 var finished = needFinish(state);
12293
12294 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12295 clearBuffer(stream, state);
12296 }
12297
12298 if (sync) {
12299 /*<replacement>*/
12300 asyncWrite(afterWrite, stream, state, finished, cb);
12301 /*</replacement>*/
12302 } else {
12303 afterWrite(stream, state, finished, cb);
12304 }
12305 }
12306 }
12307
12308 function afterWrite(stream, state, finished, cb) {
12309 if (!finished) onwriteDrain(stream, state);
12310 state.pendingcb--;
12311 cb();
12312 finishMaybe(stream, state);
12313 }
12314
12315 // Must force callback to be called on nextTick, so that we don't
12316 // emit 'drain' before the write() consumer gets the 'false' return
12317 // value, and has a chance to attach a 'drain' listener.
12318 function onwriteDrain(stream, state) {
12319 if (state.length === 0 && state.needDrain) {
12320 state.needDrain = false;
12321 stream.emit('drain');
12322 }
12323 }
12324
12325 // if there's something in the buffer waiting, then process it
12326 function clearBuffer(stream, state) {
12327 state.bufferProcessing = true;
12328 var entry = state.bufferedRequest;
12329
12330 if (stream._writev && entry && entry.next) {
12331 // Fast case, write everything using _writev()
12332 var l = state.bufferedRequestCount;
12333 var buffer = new Array(l);
12334 var holder = state.corkedRequestsFree;
12335 holder.entry = entry;
12336
12337 var count = 0;
12338 var allBuffers = true;
12339 while (entry) {
12340 buffer[count] = entry;
12341 if (!entry.isBuf) allBuffers = false;
12342 entry = entry.next;
12343 count += 1;
12344 }
12345 buffer.allBuffers = allBuffers;
12346
12347 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12348
12349 // doWrite is almost always async, defer these to save a bit of time
12350 // as the hot path ends with doWrite
12351 state.pendingcb++;
12352 state.lastBufferedRequest = null;
12353 if (holder.next) {
12354 state.corkedRequestsFree = holder.next;
12355 holder.next = null;
12356 } else {
12357 state.corkedRequestsFree = new CorkedRequest(state);
12358 }
12359 } else {
12360 // Slow case, write chunks one-by-one
12361 while (entry) {
12362 var chunk = entry.chunk;
12363 var encoding = entry.encoding;
12364 var cb = entry.callback;
12365 var len = state.objectMode ? 1 : chunk.length;
12366
12367 doWrite(stream, state, false, len, chunk, encoding, cb);
12368 entry = entry.next;
12369 // if we didn't call the onwrite immediately, then
12370 // it means that we need to wait until it does.
12371 // also, that means that the chunk and cb are currently
12372 // being processed, so move the buffer counter past them.
12373 if (state.writing) {
12374 break;
12375 }
12376 }
12377
12378 if (entry === null) state.lastBufferedRequest = null;
12379 }
12380
12381 state.bufferedRequestCount = 0;
12382 state.bufferedRequest = entry;
12383 state.bufferProcessing = false;
12384 }
12385
12386 Writable.prototype._write = function (chunk, encoding, cb) {
12387 cb(new Error('_write() is not implemented'));
12388 };
12389
12390 Writable.prototype._writev = null;
12391
12392 Writable.prototype.end = function (chunk, encoding, cb) {
12393 var state = this._writableState;
12394
12395 if (typeof chunk === 'function') {
12396 cb = chunk;
12397 chunk = null;
12398 encoding = null;
12399 } else if (typeof encoding === 'function') {
12400 cb = encoding;
12401 encoding = null;
12402 }
12403
12404 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12405
12406 // .end() fully uncorks
12407 if (state.corked) {
12408 state.corked = 1;
12409 this.uncork();
12410 }
12411
12412 // ignore unnecessary end() calls.
12413 if (!state.ending && !state.finished) endWritable(this, state, cb);
12414 };
12415
12416 function needFinish(state) {
12417 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12418 }
12419 function callFinal(stream, state) {
12420 stream._final(function (err) {
12421 state.pendingcb--;
12422 if (err) {
12423 stream.emit('error', err);
12424 }
12425 state.prefinished = true;
12426 stream.emit('prefinish');
12427 finishMaybe(stream, state);
12428 });
12429 }
12430 function prefinish(stream, state) {
12431 if (!state.prefinished && !state.finalCalled) {
12432 if (typeof stream._final === 'function') {
12433 state.pendingcb++;
12434 state.finalCalled = true;
12435 processNextTick(callFinal, stream, state);
12436 } else {
12437 state.prefinished = true;
12438 stream.emit('prefinish');
12439 }
12440 }
12441 }
12442
12443 function finishMaybe(stream, state) {
12444 var need = needFinish(state);
12445 if (need) {
12446 prefinish(stream, state);
12447 if (state.pendingcb === 0) {
12448 state.finished = true;
12449 stream.emit('finish');
12450 }
12451 }
12452 return need;
12453 }
12454
12455 function endWritable(stream, state, cb) {
12456 state.ending = true;
12457 finishMaybe(stream, state);
12458 if (cb) {
12459 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12460 }
12461 state.ended = true;
12462 stream.writable = false;
12463 }
12464
12465 function onCorkedFinish(corkReq, state, err) {
12466 var entry = corkReq.entry;
12467 corkReq.entry = null;
12468 while (entry) {
12469 var cb = entry.callback;
12470 state.pendingcb--;
12471 cb(err);
12472 entry = entry.next;
12473 }
12474 if (state.corkedRequestsFree) {
12475 state.corkedRequestsFree.next = corkReq;
12476 } else {
12477 state.corkedRequestsFree = corkReq;
12478 }
12479 }
12480
12481 Object.defineProperty(Writable.prototype, 'destroyed', {
12482 get: function () {
12483 if (this._writableState === undefined) {
12484 return false;
12485 }
12486 return this._writableState.destroyed;
12487 },
12488 set: function (value) {
12489 // we ignore the value if the stream
12490 // has not been initialized yet
12491 if (!this._writableState) {
12492 return;
12493 }
12494
12495 // backward compatibility, the user is explicitly
12496 // managing destroyed
12497 this._writableState.destroyed = value;
12498 }
12499 });
12500
12501 Writable.prototype.destroy = destroyImpl.destroy;
12502 Writable.prototype._undestroy = destroyImpl.undestroy;
12503 Writable.prototype._destroy = function (err, cb) {
12504 this.end();
12505 cb(err);
12506 };
12507 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12508 },{"./_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){
12509 'use strict';
12510
12511 /*<replacement>*/
12512
12513 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12514
12515 var Buffer = require('safe-buffer').Buffer;
12516 /*</replacement>*/
12517
12518 function copyBuffer(src, target, offset) {
12519 src.copy(target, offset);
12520 }
12521
12522 module.exports = function () {
12523 function BufferList() {
12524 _classCallCheck(this, BufferList);
12525
12526 this.head = null;
12527 this.tail = null;
12528 this.length = 0;
12529 }
12530
12531 BufferList.prototype.push = function push(v) {
12532 var entry = { data: v, next: null };
12533 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12534 this.tail = entry;
12535 ++this.length;
12536 };
12537
12538 BufferList.prototype.unshift = function unshift(v) {
12539 var entry = { data: v, next: this.head };
12540 if (this.length === 0) this.tail = entry;
12541 this.head = entry;
12542 ++this.length;
12543 };
12544
12545 BufferList.prototype.shift = function shift() {
12546 if (this.length === 0) return;
12547 var ret = this.head.data;
12548 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12549 --this.length;
12550 return ret;
12551 };
12552
12553 BufferList.prototype.clear = function clear() {
12554 this.head = this.tail = null;
12555 this.length = 0;
12556 };
12557
12558 BufferList.prototype.join = function join(s) {
12559 if (this.length === 0) return '';
12560 var p = this.head;
12561 var ret = '' + p.data;
12562 while (p = p.next) {
12563 ret += s + p.data;
12564 }return ret;
12565 };
12566
12567 BufferList.prototype.concat = function concat(n) {
12568 if (this.length === 0) return Buffer.alloc(0);
12569 if (this.length === 1) return this.head.data;
12570 var ret = Buffer.allocUnsafe(n >>> 0);
12571 var p = this.head;
12572 var i = 0;
12573 while (p) {
12574 copyBuffer(p.data, ret, i);
12575 i += p.data.length;
12576 p = p.next;
12577 }
12578 return ret;
12579 };
12580
12581 return BufferList;
12582 }();
12583 },{"safe-buffer":26}],20:[function(require,module,exports){
12584 'use strict';
12585
12586 /*<replacement>*/
12587
12588 var processNextTick = require('process-nextick-args');
12589 /*</replacement>*/
12590
12591 // undocumented cb() API, needed for core, not for public API
12592 function destroy(err, cb) {
12593 var _this = this;
12594
12595 var readableDestroyed = this._readableState && this._readableState.destroyed;
12596 var writableDestroyed = this._writableState && this._writableState.destroyed;
12597
12598 if (readableDestroyed || writableDestroyed) {
12599 if (cb) {
12600 cb(err);
12601 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12602 processNextTick(emitErrorNT, this, err);
12603 }
12604 return;
12605 }
12606
12607 // we set destroyed to true before firing error callbacks in order
12608 // to make it re-entrance safe in case destroy() is called within callbacks
12609
12610 if (this._readableState) {
12611 this._readableState.destroyed = true;
12612 }
12613
12614 // if this is a duplex stream mark the writable part as destroyed as well
12615 if (this._writableState) {
12616 this._writableState.destroyed = true;
12617 }
12618
12619 this._destroy(err || null, function (err) {
12620 if (!cb && err) {
12621 processNextTick(emitErrorNT, _this, err);
12622 if (_this._writableState) {
12623 _this._writableState.errorEmitted = true;
12624 }
12625 } else if (cb) {
12626 cb(err);
12627 }
12628 });
12629 }
12630
12631 function undestroy() {
12632 if (this._readableState) {
12633 this._readableState.destroyed = false;
12634 this._readableState.reading = false;
12635 this._readableState.ended = false;
12636 this._readableState.endEmitted = false;
12637 }
12638
12639 if (this._writableState) {
12640 this._writableState.destroyed = false;
12641 this._writableState.ended = false;
12642 this._writableState.ending = false;
12643 this._writableState.finished = false;
12644 this._writableState.errorEmitted = false;
12645 }
12646 }
12647
12648 function emitErrorNT(self, err) {
12649 self.emit('error', err);
12650 }
12651
12652 module.exports = {
12653 destroy: destroy,
12654 undestroy: undestroy
12655 };
12656 },{"process-nextick-args":11}],21:[function(require,module,exports){
12657 module.exports = require('events').EventEmitter;
12658
12659 },{"events":6}],22:[function(require,module,exports){
12660 module.exports = require('./readable').PassThrough
12661
12662 },{"./readable":23}],23:[function(require,module,exports){
12663 exports = module.exports = require('./lib/_stream_readable.js');
12664 exports.Stream = exports;
12665 exports.Readable = exports;
12666 exports.Writable = require('./lib/_stream_writable.js');
12667 exports.Duplex = require('./lib/_stream_duplex.js');
12668 exports.Transform = require('./lib/_stream_transform.js');
12669 exports.PassThrough = require('./lib/_stream_passthrough.js');
12670
12671 },{"./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){
12672 module.exports = require('./readable').Transform
12673
12674 },{"./readable":23}],25:[function(require,module,exports){
12675 module.exports = require('./lib/_stream_writable.js');
12676
12677 },{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12678 /* eslint-disable node/no-deprecated-api */
12679 var buffer = require('buffer')
12680 var Buffer = buffer.Buffer
12681
12682 // alternative to using Object.keys for old browsers
12683 function copyProps (src, dst) {
12684 for (var key in src) {
12685 dst[key] = src[key]
12686 }
12687 }
12688 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12689 module.exports = buffer
12690 } else {
12691 // Copy properties from require('buffer')
12692 copyProps(buffer, exports)
12693 exports.Buffer = SafeBuffer
12694 }
12695
12696 function SafeBuffer (arg, encodingOrOffset, length) {
12697 return Buffer(arg, encodingOrOffset, length)
12698 }
12699
12700 // Copy static methods from Buffer
12701 copyProps(Buffer, SafeBuffer)
12702
12703 SafeBuffer.from = function (arg, encodingOrOffset, length) {
12704 if (typeof arg === 'number') {
12705 throw new TypeError('Argument must not be a number')
12706 }
12707 return Buffer(arg, encodingOrOffset, length)
12708 }
12709
12710 SafeBuffer.alloc = function (size, fill, encoding) {
12711 if (typeof size !== 'number') {
12712 throw new TypeError('Argument must be a number')
12713 }
12714 var buf = Buffer(size)
12715 if (fill !== undefined) {
12716 if (typeof encoding === 'string') {
12717 buf.fill(fill, encoding)
12718 } else {
12719 buf.fill(fill)
12720 }
12721 } else {
12722 buf.fill(0)
12723 }
12724 return buf
12725 }
12726
12727 SafeBuffer.allocUnsafe = function (size) {
12728 if (typeof size !== 'number') {
12729 throw new TypeError('Argument must be a number')
12730 }
12731 return Buffer(size)
12732 }
12733
12734 SafeBuffer.allocUnsafeSlow = function (size) {
12735 if (typeof size !== 'number') {
12736 throw new TypeError('Argument must be a number')
12737 }
12738 return buffer.SlowBuffer(size)
12739 }
12740
12741 },{"buffer":4}],27:[function(require,module,exports){
12742 // Copyright Joyent, Inc. and other Node contributors.
12743 //
12744 // Permission is hereby granted, free of charge, to any person obtaining a
12745 // copy of this software and associated documentation files (the
12746 // "Software"), to deal in the Software without restriction, including
12747 // without limitation the rights to use, copy, modify, merge, publish,
12748 // distribute, sublicense, and/or sell copies of the Software, and to permit
12749 // persons to whom the Software is furnished to do so, subject to the
12750 // following conditions:
12751 //
12752 // The above copyright notice and this permission notice shall be included
12753 // in all copies or substantial portions of the Software.
12754 //
12755 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12756 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12757 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12758 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12759 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12760 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12761 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12762
12763 module.exports = Stream;
12764
12765 var EE = require('events').EventEmitter;
12766 var inherits = require('inherits');
12767
12768 inherits(Stream, EE);
12769 Stream.Readable = require('readable-stream/readable.js');
12770 Stream.Writable = require('readable-stream/writable.js');
12771 Stream.Duplex = require('readable-stream/duplex.js');
12772 Stream.Transform = require('readable-stream/transform.js');
12773 Stream.PassThrough = require('readable-stream/passthrough.js');
12774
12775 // Backwards-compat with node 0.4.x
12776 Stream.Stream = Stream;
12777
12778
12779
12780 // old-style streams. Note that the pipe method (the only relevant
12781 // part of this class) is overridden in the Readable class.
12782
12783 function Stream() {
12784 EE.call(this);
12785 }
12786
12787 Stream.prototype.pipe = function(dest, options) {
12788 var source = this;
12789
12790 function ondata(chunk) {
12791 if (dest.writable) {
12792 if (false === dest.write(chunk) && source.pause) {
12793 source.pause();
12794 }
12795 }
12796 }
12797
12798 source.on('data', ondata);
12799
12800 function ondrain() {
12801 if (source.readable && source.resume) {
12802 source.resume();
12803 }
12804 }
12805
12806 dest.on('drain', ondrain);
12807
12808 // If the 'end' option is not supplied, dest.end() will be called when
12809 // source gets the 'end' or 'close' events. Only dest.end() once.
12810 if (!dest._isStdio && (!options || options.end !== false)) {
12811 source.on('end', onend);
12812 source.on('close', onclose);
12813 }
12814
12815 var didOnEnd = false;
12816 function onend() {
12817 if (didOnEnd) return;
12818 didOnEnd = true;
12819
12820 dest.end();
12821 }
12822
12823
12824 function onclose() {
12825 if (didOnEnd) return;
12826 didOnEnd = true;
12827
12828 if (typeof dest.destroy === 'function') dest.destroy();
12829 }
12830
12831 // don't leave dangling pipes when there are errors.
12832 function onerror(er) {
12833 cleanup();
12834 if (EE.listenerCount(this, 'error') === 0) {
12835 throw er; // Unhandled stream error in pipe.
12836 }
12837 }
12838
12839 source.on('error', onerror);
12840 dest.on('error', onerror);
12841
12842 // remove all the event listeners that were added.
12843 function cleanup() {
12844 source.removeListener('data', ondata);
12845 dest.removeListener('drain', ondrain);
12846
12847 source.removeListener('end', onend);
12848 source.removeListener('close', onclose);
12849
12850 source.removeListener('error', onerror);
12851 dest.removeListener('error', onerror);
12852
12853 source.removeListener('end', cleanup);
12854 source.removeListener('close', cleanup);
12855
12856 dest.removeListener('close', cleanup);
12857 }
12858
12859 source.on('end', cleanup);
12860 source.on('close', cleanup);
12861
12862 dest.on('close', cleanup);
12863
12864 dest.emit('pipe', source);
12865
12866 // Allow for unix-like usage: A.pipe(B).pipe(C)
12867 return dest;
12868 };
12869
12870 },{"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){
12871 'use strict';
12872
12873 var Buffer = require('safe-buffer').Buffer;
12874
12875 var isEncoding = Buffer.isEncoding || function (encoding) {
12876 encoding = '' + encoding;
12877 switch (encoding && encoding.toLowerCase()) {
12878 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':
12879 return true;
12880 default:
12881 return false;
12882 }
12883 };
12884
12885 function _normalizeEncoding(enc) {
12886 if (!enc) return 'utf8';
12887 var retried;
12888 while (true) {
12889 switch (enc) {
12890 case 'utf8':
12891 case 'utf-8':
12892 return 'utf8';
12893 case 'ucs2':
12894 case 'ucs-2':
12895 case 'utf16le':
12896 case 'utf-16le':
12897 return 'utf16le';
12898 case 'latin1':
12899 case 'binary':
12900 return 'latin1';
12901 case 'base64':
12902 case 'ascii':
12903 case 'hex':
12904 return enc;
12905 default:
12906 if (retried) return; // undefined
12907 enc = ('' + enc).toLowerCase();
12908 retried = true;
12909 }
12910 }
12911 };
12912
12913 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12914 // modules monkey-patch it to support additional encodings
12915 function normalizeEncoding(enc) {
12916 var nenc = _normalizeEncoding(enc);
12917 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12918 return nenc || enc;
12919 }
12920
12921 // StringDecoder provides an interface for efficiently splitting a series of
12922 // buffers into a series of JS strings without breaking apart multi-byte
12923 // characters.
12924 exports.StringDecoder = StringDecoder;
12925 function StringDecoder(encoding) {
12926 this.encoding = normalizeEncoding(encoding);
12927 var nb;
12928 switch (this.encoding) {
12929 case 'utf16le':
12930 this.text = utf16Text;
12931 this.end = utf16End;
12932 nb = 4;
12933 break;
12934 case 'utf8':
12935 this.fillLast = utf8FillLast;
12936 nb = 4;
12937 break;
12938 case 'base64':
12939 this.text = base64Text;
12940 this.end = base64End;
12941 nb = 3;
12942 break;
12943 default:
12944 this.write = simpleWrite;
12945 this.end = simpleEnd;
12946 return;
12947 }
12948 this.lastNeed = 0;
12949 this.lastTotal = 0;
12950 this.lastChar = Buffer.allocUnsafe(nb);
12951 }
12952
12953 StringDecoder.prototype.write = function (buf) {
12954 if (buf.length === 0) return '';
12955 var r;
12956 var i;
12957 if (this.lastNeed) {
12958 r = this.fillLast(buf);
12959 if (r === undefined) return '';
12960 i = this.lastNeed;
12961 this.lastNeed = 0;
12962 } else {
12963 i = 0;
12964 }
12965 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12966 return r || '';
12967 };
12968
12969 StringDecoder.prototype.end = utf8End;
12970
12971 // Returns only complete characters in a Buffer
12972 StringDecoder.prototype.text = utf8Text;
12973
12974 // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12975 StringDecoder.prototype.fillLast = function (buf) {
12976 if (this.lastNeed <= buf.length) {
12977 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12978 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
12979 }
12980 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12981 this.lastNeed -= buf.length;
12982 };
12983
12984 // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12985 // continuation byte.
12986 function utf8CheckByte(byte) {
12987 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;
12988 return -1;
12989 }
12990
12991 // Checks at most 3 bytes at the end of a Buffer in order to detect an
12992 // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12993 // needed to complete the UTF-8 character (if applicable) are returned.
12994 function utf8CheckIncomplete(self, buf, i) {
12995 var j = buf.length - 1;
12996 if (j < i) return 0;
12997 var nb = utf8CheckByte(buf[j]);
12998 if (nb >= 0) {
12999 if (nb > 0) self.lastNeed = nb - 1;
13000 return nb;
13001 }
13002 if (--j < i) return 0;
13003 nb = utf8CheckByte(buf[j]);
13004 if (nb >= 0) {
13005 if (nb > 0) self.lastNeed = nb - 2;
13006 return nb;
13007 }
13008 if (--j < i) return 0;
13009 nb = utf8CheckByte(buf[j]);
13010 if (nb >= 0) {
13011 if (nb > 0) {
13012 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
13013 }
13014 return nb;
13015 }
13016 return 0;
13017 }
13018
13019 // Validates as many continuation bytes for a multi-byte UTF-8 character as
13020 // needed or are available. If we see a non-continuation byte where we expect
13021 // one, we "replace" the validated continuation bytes we've seen so far with
13022 // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
13023 // behavior. The continuation byte check is included three times in the case
13024 // where all of the continuation bytes for a character exist in the same buffer.
13025 // It is also done this way as a slight performance increase instead of using a
13026 // loop.
13027 function utf8CheckExtraBytes(self, buf, p) {
13028 if ((buf[0] & 0xC0) !== 0x80) {
13029 self.lastNeed = 0;
13030 return '\ufffd'.repeat(p);
13031 }
13032 if (self.lastNeed > 1 && buf.length > 1) {
13033 if ((buf[1] & 0xC0) !== 0x80) {
13034 self.lastNeed = 1;
13035 return '\ufffd'.repeat(p + 1);
13036 }
13037 if (self.lastNeed > 2 && buf.length > 2) {
13038 if ((buf[2] & 0xC0) !== 0x80) {
13039 self.lastNeed = 2;
13040 return '\ufffd'.repeat(p + 2);
13041 }
13042 }
13043 }
13044 }
13045
13046 // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
13047 function utf8FillLast(buf) {
13048 var p = this.lastTotal - this.lastNeed;
13049 var r = utf8CheckExtraBytes(this, buf, p);
13050 if (r !== undefined) return r;
13051 if (this.lastNeed <= buf.length) {
13052 buf.copy(this.lastChar, p, 0, this.lastNeed);
13053 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
13054 }
13055 buf.copy(this.lastChar, p, 0, buf.length);
13056 this.lastNeed -= buf.length;
13057 }
13058
13059 // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13060 // partial character, the character's bytes are buffered until the required
13061 // number of bytes are available.
13062 function utf8Text(buf, i) {
13063 var total = utf8CheckIncomplete(this, buf, i);
13064 if (!this.lastNeed) return buf.toString('utf8', i);
13065 this.lastTotal = total;
13066 var end = buf.length - (total - this.lastNeed);
13067 buf.copy(this.lastChar, 0, end);
13068 return buf.toString('utf8', i, end);
13069 }
13070
13071 // For UTF-8, a replacement character for each buffered byte of a (partial)
13072 // character needs to be added to the output.
13073 function utf8End(buf) {
13074 var r = buf && buf.length ? this.write(buf) : '';
13075 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13076 return r;
13077 }
13078
13079 // UTF-16LE typically needs two bytes per character, but even if we have an even
13080 // number of bytes available, we need to check if we end on a leading/high
13081 // surrogate. In that case, we need to wait for the next two bytes in order to
13082 // decode the last character properly.
13083 function utf16Text(buf, i) {
13084 if ((buf.length - i) % 2 === 0) {
13085 var r = buf.toString('utf16le', i);
13086 if (r) {
13087 var c = r.charCodeAt(r.length - 1);
13088 if (c >= 0xD800 && c <= 0xDBFF) {
13089 this.lastNeed = 2;
13090 this.lastTotal = 4;
13091 this.lastChar[0] = buf[buf.length - 2];
13092 this.lastChar[1] = buf[buf.length - 1];
13093 return r.slice(0, -1);
13094 }
13095 }
13096 return r;
13097 }
13098 this.lastNeed = 1;
13099 this.lastTotal = 2;
13100 this.lastChar[0] = buf[buf.length - 1];
13101 return buf.toString('utf16le', i, buf.length - 1);
13102 }
13103
13104 // For UTF-16LE we do not explicitly append special replacement characters if we
13105 // end on a partial character, we simply let v8 handle that.
13106 function utf16End(buf) {
13107 var r = buf && buf.length ? this.write(buf) : '';
13108 if (this.lastNeed) {
13109 var end = this.lastTotal - this.lastNeed;
13110 return r + this.lastChar.toString('utf16le', 0, end);
13111 }
13112 return r;
13113 }
13114
13115 function base64Text(buf, i) {
13116 var n = (buf.length - i) % 3;
13117 if (n === 0) return buf.toString('base64', i);
13118 this.lastNeed = 3 - n;
13119 this.lastTotal = 3;
13120 if (n === 1) {
13121 this.lastChar[0] = buf[buf.length - 1];
13122 } else {
13123 this.lastChar[0] = buf[buf.length - 2];
13124 this.lastChar[1] = buf[buf.length - 1];
13125 }
13126 return buf.toString('base64', i, buf.length - n);
13127 }
13128
13129 function base64End(buf) {
13130 var r = buf && buf.length ? this.write(buf) : '';
13131 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13132 return r;
13133 }
13134
13135 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13136 function simpleWrite(buf) {
13137 return buf.toString(this.encoding);
13138 }
13139
13140 function simpleEnd(buf) {
13141 return buf && buf.length ? this.write(buf) : '';
13142 }
13143 },{"safe-buffer":26}],29:[function(require,module,exports){
13144 (function (global){
13145
13146 /**
13147 * Module exports.
13148 */
13149
13150 module.exports = deprecate;
13151
13152 /**
13153 * Mark that a method should not be used.
13154 * Returns a modified function which warns once by default.
13155 *
13156 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13157 *
13158 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13159 * will throw an Error when invoked.
13160 *
13161 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13162 * will invoke `console.trace()` instead of `console.error()`.
13163 *
13164 * @param {Function} fn - the function to deprecate
13165 * @param {String} msg - the string to print to the console when `fn` is invoked
13166 * @returns {Function} a new "deprecated" version of `fn`
13167 * @api public
13168 */
13169
13170 function deprecate (fn, msg) {
13171 if (config('noDeprecation')) {
13172 return fn;
13173 }
13174
13175 var warned = false;
13176 function deprecated() {
13177 if (!warned) {
13178 if (config('throwDeprecation')) {
13179 throw new Error(msg);
13180 } else if (config('traceDeprecation')) {
13181 console.trace(msg);
13182 } else {
13183 console.warn(msg);
13184 }
13185 warned = true;
13186 }
13187 return fn.apply(this, arguments);
13188 }
13189
13190 return deprecated;
13191 }
13192
13193 /**
13194 * Checks `localStorage` for boolean values for the given `name`.
13195 *
13196 * @param {String} name
13197 * @returns {Boolean}
13198 * @api private
13199 */
13200
13201 function config (name) {
13202 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13203 try {
13204 if (!global.localStorage) return false;
13205 } catch (_) {
13206 return false;
13207 }
13208 var val = global.localStorage[name];
13209 if (null == val) return false;
13210 return String(val).toLowerCase() === 'true';
13211 }
13212
13213 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13214 },{}],30:[function(require,module,exports){
13215 arguments[4][8][0].apply(exports,arguments)
13216 },{"dup":8}],31:[function(require,module,exports){
13217 module.exports = function isBuffer(arg) {
13218 return arg && typeof arg === 'object'
13219 && typeof arg.copy === 'function'
13220 && typeof arg.fill === 'function'
13221 && typeof arg.readUInt8 === 'function';
13222 }
13223 },{}],32:[function(require,module,exports){
13224 (function (process,global){
13225 // Copyright Joyent, Inc. and other Node contributors.
13226 //
13227 // Permission is hereby granted, free of charge, to any person obtaining a
13228 // copy of this software and associated documentation files (the
13229 // "Software"), to deal in the Software without restriction, including
13230 // without limitation the rights to use, copy, modify, merge, publish,
13231 // distribute, sublicense, and/or sell copies of the Software, and to permit
13232 // persons to whom the Software is furnished to do so, subject to the
13233 // following conditions:
13234 //
13235 // The above copyright notice and this permission notice shall be included
13236 // in all copies or substantial portions of the Software.
13237 //
13238 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13239 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13240 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13241 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13242 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13243 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13244 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13245
13246 var formatRegExp = /%[sdj%]/g;
13247 exports.format = function(f) {
13248 if (!isString(f)) {
13249 var objects = [];
13250 for (var i = 0; i < arguments.length; i++) {
13251 objects.push(inspect(arguments[i]));
13252 }
13253 return objects.join(' ');
13254 }
13255
13256 var i = 1;
13257 var args = arguments;
13258 var len = args.length;
13259 var str = String(f).replace(formatRegExp, function(x) {
13260 if (x === '%%') return '%';
13261 if (i >= len) return x;
13262 switch (x) {
13263 case '%s': return String(args[i++]);
13264 case '%d': return Number(args[i++]);
13265 case '%j':
13266 try {
13267 return JSON.stringify(args[i++]);
13268 } catch (_) {
13269 return '[Circular]';
13270 }
13271 default:
13272 return x;
13273 }
13274 });
13275 for (var x = args[i]; i < len; x = args[++i]) {
13276 if (isNull(x) || !isObject(x)) {
13277 str += ' ' + x;
13278 } else {
13279 str += ' ' + inspect(x);
13280 }
13281 }
13282 return str;
13283 };
13284
13285
13286 // Mark that a method should not be used.
13287 // Returns a modified function which warns once by default.
13288 // If --no-deprecation is set, then it is a no-op.
13289 exports.deprecate = function(fn, msg) {
13290 // Allow for deprecating things in the process of starting up.
13291 if (isUndefined(global.process)) {
13292 return function() {
13293 return exports.deprecate(fn, msg).apply(this, arguments);
13294 };
13295 }
13296
13297 if (process.noDeprecation === true) {
13298 return fn;
13299 }
13300
13301 var warned = false;
13302 function deprecated() {
13303 if (!warned) {
13304 if (process.throwDeprecation) {
13305 throw new Error(msg);
13306 } else if (process.traceDeprecation) {
13307 console.trace(msg);
13308 } else {
13309 console.error(msg);
13310 }
13311 warned = true;
13312 }
13313 return fn.apply(this, arguments);
13314 }
13315
13316 return deprecated;
13317 };
13318
13319
13320 var debugs = {};
13321 var debugEnviron;
13322 exports.debuglog = function(set) {
13323 if (isUndefined(debugEnviron))
13324 debugEnviron = process.env.NODE_DEBUG || '';
13325 set = set.toUpperCase();
13326 if (!debugs[set]) {
13327 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13328 var pid = process.pid;
13329 debugs[set] = function() {
13330 var msg = exports.format.apply(exports, arguments);
13331 console.error('%s %d: %s', set, pid, msg);
13332 };
13333 } else {
13334 debugs[set] = function() {};
13335 }
13336 }
13337 return debugs[set];
13338 };
13339
13340
13341 /**
13342 * Echos the value of a value. Trys to print the value out
13343 * in the best way possible given the different types.
13344 *
13345 * @param {Object} obj The object to print out.
13346 * @param {Object} opts Optional options object that alters the output.
13347 */
13348 /* legacy: obj, showHidden, depth, colors*/
13349 function inspect(obj, opts) {
13350 // default options
13351 var ctx = {
13352 seen: [],
13353 stylize: stylizeNoColor
13354 };
13355 // legacy...
13356 if (arguments.length >= 3) ctx.depth = arguments[2];
13357 if (arguments.length >= 4) ctx.colors = arguments[3];
13358 if (isBoolean(opts)) {
13359 // legacy...
13360 ctx.showHidden = opts;
13361 } else if (opts) {
13362 // got an "options" object
13363 exports._extend(ctx, opts);
13364 }
13365 // set default options
13366 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13367 if (isUndefined(ctx.depth)) ctx.depth = 2;
13368 if (isUndefined(ctx.colors)) ctx.colors = false;
13369 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13370 if (ctx.colors) ctx.stylize = stylizeWithColor;
13371 return formatValue(ctx, obj, ctx.depth);
13372 }
13373 exports.inspect = inspect;
13374
13375
13376 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13377 inspect.colors = {
13378 'bold' : [1, 22],
13379 'italic' : [3, 23],
13380 'underline' : [4, 24],
13381 'inverse' : [7, 27],
13382 'white' : [37, 39],
13383 'grey' : [90, 39],
13384 'black' : [30, 39],
13385 'blue' : [34, 39],
13386 'cyan' : [36, 39],
13387 'green' : [32, 39],
13388 'magenta' : [35, 39],
13389 'red' : [31, 39],
13390 'yellow' : [33, 39]
13391 };
13392
13393 // Don't use 'blue' not visible on cmd.exe
13394 inspect.styles = {
13395 'special': 'cyan',
13396 'number': 'yellow',
13397 'boolean': 'yellow',
13398 'undefined': 'grey',
13399 'null': 'bold',
13400 'string': 'green',
13401 'date': 'magenta',
13402 // "name": intentionally not styling
13403 'regexp': 'red'
13404 };
13405
13406
13407 function stylizeWithColor(str, styleType) {
13408 var style = inspect.styles[styleType];
13409
13410 if (style) {
13411 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13412 '\u001b[' + inspect.colors[style][1] + 'm';
13413 } else {
13414 return str;
13415 }
13416 }
13417
13418
13419 function stylizeNoColor(str, styleType) {
13420 return str;
13421 }
13422
13423
13424 function arrayToHash(array) {
13425 var hash = {};
13426
13427 array.forEach(function(val, idx) {
13428 hash[val] = true;
13429 });
13430
13431 return hash;
13432 }
13433
13434
13435 function formatValue(ctx, value, recurseTimes) {
13436 // Provide a hook for user-specified inspect functions.
13437 // Check that value is an object with an inspect function on it
13438 if (ctx.customInspect &&
13439 value &&
13440 isFunction(value.inspect) &&
13441 // Filter out the util module, it's inspect function is special
13442 value.inspect !== exports.inspect &&
13443 // Also filter out any prototype objects using the circular check.
13444 !(value.constructor && value.constructor.prototype === value)) {
13445 var ret = value.inspect(recurseTimes, ctx);
13446 if (!isString(ret)) {
13447 ret = formatValue(ctx, ret, recurseTimes);
13448 }
13449 return ret;
13450 }
13451
13452 // Primitive types cannot have properties
13453 var primitive = formatPrimitive(ctx, value);
13454 if (primitive) {
13455 return primitive;
13456 }
13457
13458 // Look up the keys of the object.
13459 var keys = Object.keys(value);
13460 var visibleKeys = arrayToHash(keys);
13461
13462 if (ctx.showHidden) {
13463 keys = Object.getOwnPropertyNames(value);
13464 }
13465
13466 // IE doesn't make error fields non-enumerable
13467 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13468 if (isError(value)
13469 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13470 return formatError(value);
13471 }
13472
13473 // Some type of object without properties can be shortcutted.
13474 if (keys.length === 0) {
13475 if (isFunction(value)) {
13476 var name = value.name ? ': ' + value.name : '';
13477 return ctx.stylize('[Function' + name + ']', 'special');
13478 }
13479 if (isRegExp(value)) {
13480 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13481 }
13482 if (isDate(value)) {
13483 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13484 }
13485 if (isError(value)) {
13486 return formatError(value);
13487 }
13488 }
13489
13490 var base = '', array = false, braces = ['{', '}'];
13491
13492 // Make Array say that they are Array
13493 if (isArray(value)) {
13494 array = true;
13495 braces = ['[', ']'];
13496 }
13497
13498 // Make functions say that they are functions
13499 if (isFunction(value)) {
13500 var n = value.name ? ': ' + value.name : '';
13501 base = ' [Function' + n + ']';
13502 }
13503
13504 // Make RegExps say that they are RegExps
13505 if (isRegExp(value)) {
13506 base = ' ' + RegExp.prototype.toString.call(value);
13507 }
13508
13509 // Make dates with properties first say the date
13510 if (isDate(value)) {
13511 base = ' ' + Date.prototype.toUTCString.call(value);
13512 }
13513
13514 // Make error with message first say the error
13515 if (isError(value)) {
13516 base = ' ' + formatError(value);
13517 }
13518
13519 if (keys.length === 0 && (!array || value.length == 0)) {
13520 return braces[0] + base + braces[1];
13521 }
13522
13523 if (recurseTimes < 0) {
13524 if (isRegExp(value)) {
13525 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13526 } else {
13527 return ctx.stylize('[Object]', 'special');
13528 }
13529 }
13530
13531 ctx.seen.push(value);
13532
13533 var output;
13534 if (array) {
13535 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13536 } else {
13537 output = keys.map(function(key) {
13538 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13539 });
13540 }
13541
13542 ctx.seen.pop();
13543
13544 return reduceToSingleString(output, base, braces);
13545 }
13546
13547
13548 function formatPrimitive(ctx, value) {
13549 if (isUndefined(value))
13550 return ctx.stylize('undefined', 'undefined');
13551 if (isString(value)) {
13552 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13553 .replace(/'/g, "\\'")
13554 .replace(/\\"/g, '"') + '\'';
13555 return ctx.stylize(simple, 'string');
13556 }
13557 if (isNumber(value))
13558 return ctx.stylize('' + value, 'number');
13559 if (isBoolean(value))
13560 return ctx.stylize('' + value, 'boolean');
13561 // For some reason typeof null is "object", so special case here.
13562 if (isNull(value))
13563 return ctx.stylize('null', 'null');
13564 }
13565
13566
13567 function formatError(value) {
13568 return '[' + Error.prototype.toString.call(value) + ']';
13569 }
13570
13571
13572 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13573 var output = [];
13574 for (var i = 0, l = value.length; i < l; ++i) {
13575 if (hasOwnProperty(value, String(i))) {
13576 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13577 String(i), true));
13578 } else {
13579 output.push('');
13580 }
13581 }
13582 keys.forEach(function(key) {
13583 if (!key.match(/^\d+$/)) {
13584 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13585 key, true));
13586 }
13587 });
13588 return output;
13589 }
13590
13591
13592 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13593 var name, str, desc;
13594 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13595 if (desc.get) {
13596 if (desc.set) {
13597 str = ctx.stylize('[Getter/Setter]', 'special');
13598 } else {
13599 str = ctx.stylize('[Getter]', 'special');
13600 }
13601 } else {
13602 if (desc.set) {
13603 str = ctx.stylize('[Setter]', 'special');
13604 }
13605 }
13606 if (!hasOwnProperty(visibleKeys, key)) {
13607 name = '[' + key + ']';
13608 }
13609 if (!str) {
13610 if (ctx.seen.indexOf(desc.value) < 0) {
13611 if (isNull(recurseTimes)) {
13612 str = formatValue(ctx, desc.value, null);
13613 } else {
13614 str = formatValue(ctx, desc.value, recurseTimes - 1);
13615 }
13616 if (str.indexOf('\n') > -1) {
13617 if (array) {
13618 str = str.split('\n').map(function(line) {
13619 return ' ' + line;
13620 }).join('\n').substr(2);
13621 } else {
13622 str = '\n' + str.split('\n').map(function(line) {
13623 return ' ' + line;
13624 }).join('\n');
13625 }
13626 }
13627 } else {
13628 str = ctx.stylize('[Circular]', 'special');
13629 }
13630 }
13631 if (isUndefined(name)) {
13632 if (array && key.match(/^\d+$/)) {
13633 return str;
13634 }
13635 name = JSON.stringify('' + key);
13636 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13637 name = name.substr(1, name.length - 2);
13638 name = ctx.stylize(name, 'name');
13639 } else {
13640 name = name.replace(/'/g, "\\'")
13641 .replace(/\\"/g, '"')
13642 .replace(/(^"|"$)/g, "'");
13643 name = ctx.stylize(name, 'string');
13644 }
13645 }
13646
13647 return name + ': ' + str;
13648 }
13649
13650
13651 function reduceToSingleString(output, base, braces) {
13652 var numLinesEst = 0;
13653 var length = output.reduce(function(prev, cur) {
13654 numLinesEst++;
13655 if (cur.indexOf('\n') >= 0) numLinesEst++;
13656 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13657 }, 0);
13658
13659 if (length > 60) {
13660 return braces[0] +
13661 (base === '' ? '' : base + '\n ') +
13662 ' ' +
13663 output.join(',\n ') +
13664 ' ' +
13665 braces[1];
13666 }
13667
13668 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13669 }
13670
13671
13672 // NOTE: These type checking functions intentionally don't use `instanceof`
13673 // because it is fragile and can be easily faked with `Object.create()`.
13674 function isArray(ar) {
13675 return Array.isArray(ar);
13676 }
13677 exports.isArray = isArray;
13678
13679 function isBoolean(arg) {
13680 return typeof arg === 'boolean';
13681 }
13682 exports.isBoolean = isBoolean;
13683
13684 function isNull(arg) {
13685 return arg === null;
13686 }
13687 exports.isNull = isNull;
13688
13689 function isNullOrUndefined(arg) {
13690 return arg == null;
13691 }
13692 exports.isNullOrUndefined = isNullOrUndefined;
13693
13694 function isNumber(arg) {
13695 return typeof arg === 'number';
13696 }
13697 exports.isNumber = isNumber;
13698
13699 function isString(arg) {
13700 return typeof arg === 'string';
13701 }
13702 exports.isString = isString;
13703
13704 function isSymbol(arg) {
13705 return typeof arg === 'symbol';
13706 }
13707 exports.isSymbol = isSymbol;
13708
13709 function isUndefined(arg) {
13710 return arg === void 0;
13711 }
13712 exports.isUndefined = isUndefined;
13713
13714 function isRegExp(re) {
13715 return isObject(re) && objectToString(re) === '[object RegExp]';
13716 }
13717 exports.isRegExp = isRegExp;
13718
13719 function isObject(arg) {
13720 return typeof arg === 'object' && arg !== null;
13721 }
13722 exports.isObject = isObject;
13723
13724 function isDate(d) {
13725 return isObject(d) && objectToString(d) === '[object Date]';
13726 }
13727 exports.isDate = isDate;
13728
13729 function isError(e) {
13730 return isObject(e) &&
13731 (objectToString(e) === '[object Error]' || e instanceof Error);
13732 }
13733 exports.isError = isError;
13734
13735 function isFunction(arg) {
13736 return typeof arg === 'function';
13737 }
13738 exports.isFunction = isFunction;
13739
13740 function isPrimitive(arg) {
13741 return arg === null ||
13742 typeof arg === 'boolean' ||
13743 typeof arg === 'number' ||
13744 typeof arg === 'string' ||
13745 typeof arg === 'symbol' || // ES6 symbol
13746 typeof arg === 'undefined';
13747 }
13748 exports.isPrimitive = isPrimitive;
13749
13750 exports.isBuffer = require('./support/isBuffer');
13751
13752 function objectToString(o) {
13753 return Object.prototype.toString.call(o);
13754 }
13755
13756
13757 function pad(n) {
13758 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13759 }
13760
13761
13762 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13763 'Oct', 'Nov', 'Dec'];
13764
13765 // 26 Feb 16:19:34
13766 function timestamp() {
13767 var d = new Date();
13768 var time = [pad(d.getHours()),
13769 pad(d.getMinutes()),
13770 pad(d.getSeconds())].join(':');
13771 return [d.getDate(), months[d.getMonth()], time].join(' ');
13772 }
13773
13774
13775 // log is just a thin wrapper to console.log that prepends a timestamp
13776 exports.log = function() {
13777 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13778 };
13779
13780
13781 /**
13782 * Inherit the prototype methods from one constructor into another.
13783 *
13784 * The Function.prototype.inherits from lang.js rewritten as a standalone
13785 * function (not on Function.prototype). NOTE: If this file is to be loaded
13786 * during bootstrapping this function needs to be rewritten using some native
13787 * functions as prototype setup using normal JavaScript does not work as
13788 * expected during bootstrapping (see mirror.js in r114903).
13789 *
13790 * @param {function} ctor Constructor function which needs to inherit the
13791 * prototype.
13792 * @param {function} superCtor Constructor function to inherit prototype from.
13793 */
13794 exports.inherits = require('inherits');
13795
13796 exports._extend = function(origin, add) {
13797 // Don't do anything if add isn't an object
13798 if (!add || !isObject(add)) return origin;
13799
13800 var keys = Object.keys(add);
13801 var i = keys.length;
13802 while (i--) {
13803 origin[keys[i]] = add[keys[i]];
13804 }
13805 return origin;
13806 };
13807
13808 function hasOwnProperty(obj, prop) {
13809 return Object.prototype.hasOwnProperty.call(obj, prop);
13810 }
13811
13812 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13813 },{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13814 module.exports = {
13815 base58: require('bs58'),
13816 bitcoin: require('bitcoinjs-lib'),
13817 ecurve: require('ecurve'),
13818 BigInteger: require('bigi')
13819 }
13820
13821 },{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13822 // base-x encoding
13823 // Forked from https://github.com/cryptocoinjs/bs58
13824 // Originally written by Mike Hearn for BitcoinJ
13825 // Copyright (c) 2011 Google Inc
13826 // Ported to JavaScript by Stefan Thomas
13827 // Merged Buffer refactorings from base58-native by Stephen Pair
13828 // Copyright (c) 2013 BitPay Inc
13829
13830 var Buffer = require('safe-buffer').Buffer
13831
13832 module.exports = function base (ALPHABET) {
13833 var ALPHABET_MAP = {}
13834 var BASE = ALPHABET.length
13835 var LEADER = ALPHABET.charAt(0)
13836
13837 // pre-compute lookup table
13838 for (var z = 0; z < ALPHABET.length; z++) {
13839 var x = ALPHABET.charAt(z)
13840
13841 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13842 ALPHABET_MAP[x] = z
13843 }
13844
13845 function encode (source) {
13846 if (source.length === 0) return ''
13847
13848 var digits = [0]
13849 for (var i = 0; i < source.length; ++i) {
13850 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13851 carry += digits[j] << 8
13852 digits[j] = carry % BASE
13853 carry = (carry / BASE) | 0
13854 }
13855
13856 while (carry > 0) {
13857 digits.push(carry % BASE)
13858 carry = (carry / BASE) | 0
13859 }
13860 }
13861
13862 var string = ''
13863
13864 // deal with leading zeros
13865 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13866 // convert digits to a string
13867 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
13868
13869 return string
13870 }
13871
13872 function decodeUnsafe (string) {
13873 if (string.length === 0) return Buffer.allocUnsafe(0)
13874
13875 var bytes = [0]
13876 for (var i = 0; i < string.length; i++) {
13877 var value = ALPHABET_MAP[string[i]]
13878 if (value === undefined) return
13879
13880 for (var j = 0, carry = value; j < bytes.length; ++j) {
13881 carry += bytes[j] * BASE
13882 bytes[j] = carry & 0xff
13883 carry >>= 8
13884 }
13885
13886 while (carry > 0) {
13887 bytes.push(carry & 0xff)
13888 carry >>= 8
13889 }
13890 }
13891
13892 // deal with leading zeros
13893 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13894 bytes.push(0)
13895 }
13896
13897 return Buffer.from(bytes.reverse())
13898 }
13899
13900 function decode (string) {
13901 var buffer = decodeUnsafe(string)
13902 if (buffer) return buffer
13903
13904 throw new Error('Non-base' + BASE + ' character')
13905 }
13906
13907 return {
13908 encode: encode,
13909 decodeUnsafe: decodeUnsafe,
13910 decode: decode
13911 }
13912 }
13913
13914 },{"safe-buffer":98}],35:[function(require,module,exports){
13915 // (public) Constructor
13916 function BigInteger(a, b, c) {
13917 if (!(this instanceof BigInteger))
13918 return new BigInteger(a, b, c)
13919
13920 if (a != null) {
13921 if ("number" == typeof a) this.fromNumber(a, b, c)
13922 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13923 else this.fromString(a, b)
13924 }
13925 }
13926
13927 var proto = BigInteger.prototype
13928
13929 // duck-typed isBigInteger
13930 proto.__bigi = require('../package.json').version
13931 BigInteger.isBigInteger = function (obj, check_ver) {
13932 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13933 }
13934
13935 // Bits per digit
13936 var dbits
13937
13938 // am: Compute w_j += (x*this_i), propagate carries,
13939 // c is initial carry, returns final carry.
13940 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13941 // We need to select the fastest one that works in this environment.
13942
13943 // am1: use a single mult and divide to get the high bits,
13944 // max digit bits should be 26 because
13945 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13946 function am1(i, x, w, j, c, n) {
13947 while (--n >= 0) {
13948 var v = x * this[i++] + w[j] + c
13949 c = Math.floor(v / 0x4000000)
13950 w[j++] = v & 0x3ffffff
13951 }
13952 return c
13953 }
13954 // am2 avoids a big mult-and-extract completely.
13955 // Max digit bits should be <= 30 because we do bitwise ops
13956 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13957 function am2(i, x, w, j, c, n) {
13958 var xl = x & 0x7fff,
13959 xh = x >> 15
13960 while (--n >= 0) {
13961 var l = this[i] & 0x7fff
13962 var h = this[i++] >> 15
13963 var m = xh * l + h * xl
13964 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13965 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13966 w[j++] = l & 0x3fffffff
13967 }
13968 return c
13969 }
13970 // Alternately, set max digit bits to 28 since some
13971 // browsers slow down when dealing with 32-bit numbers.
13972 function am3(i, x, w, j, c, n) {
13973 var xl = x & 0x3fff,
13974 xh = x >> 14
13975 while (--n >= 0) {
13976 var l = this[i] & 0x3fff
13977 var h = this[i++] >> 14
13978 var m = xh * l + h * xl
13979 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13980 c = (l >> 28) + (m >> 14) + xh * h
13981 w[j++] = l & 0xfffffff
13982 }
13983 return c
13984 }
13985
13986 // wtf?
13987 BigInteger.prototype.am = am1
13988 dbits = 26
13989
13990 BigInteger.prototype.DB = dbits
13991 BigInteger.prototype.DM = ((1 << dbits) - 1)
13992 var DV = BigInteger.prototype.DV = (1 << dbits)
13993
13994 var BI_FP = 52
13995 BigInteger.prototype.FV = Math.pow(2, BI_FP)
13996 BigInteger.prototype.F1 = BI_FP - dbits
13997 BigInteger.prototype.F2 = 2 * dbits - BI_FP
13998
13999 // Digit conversions
14000 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
14001 var BI_RC = new Array()
14002 var rr, vv
14003 rr = "0".charCodeAt(0)
14004 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
14005 rr = "a".charCodeAt(0)
14006 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
14007 rr = "A".charCodeAt(0)
14008 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
14009
14010 function int2char(n) {
14011 return BI_RM.charAt(n)
14012 }
14013
14014 function intAt(s, i) {
14015 var c = BI_RC[s.charCodeAt(i)]
14016 return (c == null) ? -1 : c
14017 }
14018
14019 // (protected) copy this to r
14020 function bnpCopyTo(r) {
14021 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
14022 r.t = this.t
14023 r.s = this.s
14024 }
14025
14026 // (protected) set from integer value x, -DV <= x < DV
14027 function bnpFromInt(x) {
14028 this.t = 1
14029 this.s = (x < 0) ? -1 : 0
14030 if (x > 0) this[0] = x
14031 else if (x < -1) this[0] = x + DV
14032 else this.t = 0
14033 }
14034
14035 // return bigint initialized to value
14036 function nbv(i) {
14037 var r = new BigInteger()
14038 r.fromInt(i)
14039 return r
14040 }
14041
14042 // (protected) set from string and radix
14043 function bnpFromString(s, b) {
14044 var self = this
14045
14046 var k
14047 if (b == 16) k = 4
14048 else if (b == 8) k = 3
14049 else if (b == 256) k = 8; // byte array
14050 else if (b == 2) k = 1
14051 else if (b == 32) k = 5
14052 else if (b == 4) k = 2
14053 else {
14054 self.fromRadix(s, b)
14055 return
14056 }
14057 self.t = 0
14058 self.s = 0
14059 var i = s.length,
14060 mi = false,
14061 sh = 0
14062 while (--i >= 0) {
14063 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14064 if (x < 0) {
14065 if (s.charAt(i) == "-") mi = true
14066 continue
14067 }
14068 mi = false
14069 if (sh == 0)
14070 self[self.t++] = x
14071 else if (sh + k > self.DB) {
14072 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14073 self[self.t++] = (x >> (self.DB - sh))
14074 } else
14075 self[self.t - 1] |= x << sh
14076 sh += k
14077 if (sh >= self.DB) sh -= self.DB
14078 }
14079 if (k == 8 && (s[0] & 0x80) != 0) {
14080 self.s = -1
14081 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14082 }
14083 self.clamp()
14084 if (mi) BigInteger.ZERO.subTo(self, self)
14085 }
14086
14087 // (protected) clamp off excess high words
14088 function bnpClamp() {
14089 var c = this.s & this.DM
14090 while (this.t > 0 && this[this.t - 1] == c)--this.t
14091 }
14092
14093 // (public) return string representation in given radix
14094 function bnToString(b) {
14095 var self = this
14096 if (self.s < 0) return "-" + self.negate()
14097 .toString(b)
14098 var k
14099 if (b == 16) k = 4
14100 else if (b == 8) k = 3
14101 else if (b == 2) k = 1
14102 else if (b == 32) k = 5
14103 else if (b == 4) k = 2
14104 else return self.toRadix(b)
14105 var km = (1 << k) - 1,
14106 d, m = false,
14107 r = "",
14108 i = self.t
14109 var p = self.DB - (i * self.DB) % k
14110 if (i-- > 0) {
14111 if (p < self.DB && (d = self[i] >> p) > 0) {
14112 m = true
14113 r = int2char(d)
14114 }
14115 while (i >= 0) {
14116 if (p < k) {
14117 d = (self[i] & ((1 << p) - 1)) << (k - p)
14118 d |= self[--i] >> (p += self.DB - k)
14119 } else {
14120 d = (self[i] >> (p -= k)) & km
14121 if (p <= 0) {
14122 p += self.DB
14123 --i
14124 }
14125 }
14126 if (d > 0) m = true
14127 if (m) r += int2char(d)
14128 }
14129 }
14130 return m ? r : "0"
14131 }
14132
14133 // (public) -this
14134 function bnNegate() {
14135 var r = new BigInteger()
14136 BigInteger.ZERO.subTo(this, r)
14137 return r
14138 }
14139
14140 // (public) |this|
14141 function bnAbs() {
14142 return (this.s < 0) ? this.negate() : this
14143 }
14144
14145 // (public) return + if this > a, - if this < a, 0 if equal
14146 function bnCompareTo(a) {
14147 var r = this.s - a.s
14148 if (r != 0) return r
14149 var i = this.t
14150 r = i - a.t
14151 if (r != 0) return (this.s < 0) ? -r : r
14152 while (--i >= 0)
14153 if ((r = this[i] - a[i]) != 0) return r
14154 return 0
14155 }
14156
14157 // returns bit length of the integer x
14158 function nbits(x) {
14159 var r = 1,
14160 t
14161 if ((t = x >>> 16) != 0) {
14162 x = t
14163 r += 16
14164 }
14165 if ((t = x >> 8) != 0) {
14166 x = t
14167 r += 8
14168 }
14169 if ((t = x >> 4) != 0) {
14170 x = t
14171 r += 4
14172 }
14173 if ((t = x >> 2) != 0) {
14174 x = t
14175 r += 2
14176 }
14177 if ((t = x >> 1) != 0) {
14178 x = t
14179 r += 1
14180 }
14181 return r
14182 }
14183
14184 // (public) return the number of bits in "this"
14185 function bnBitLength() {
14186 if (this.t <= 0) return 0
14187 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14188 }
14189
14190 // (public) return the number of bytes in "this"
14191 function bnByteLength() {
14192 return this.bitLength() >> 3
14193 }
14194
14195 // (protected) r = this << n*DB
14196 function bnpDLShiftTo(n, r) {
14197 var i
14198 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14199 for (i = n - 1; i >= 0; --i) r[i] = 0
14200 r.t = this.t + n
14201 r.s = this.s
14202 }
14203
14204 // (protected) r = this >> n*DB
14205 function bnpDRShiftTo(n, r) {
14206 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14207 r.t = Math.max(this.t - n, 0)
14208 r.s = this.s
14209 }
14210
14211 // (protected) r = this << n
14212 function bnpLShiftTo(n, r) {
14213 var self = this
14214 var bs = n % self.DB
14215 var cbs = self.DB - bs
14216 var bm = (1 << cbs) - 1
14217 var ds = Math.floor(n / self.DB),
14218 c = (self.s << bs) & self.DM,
14219 i
14220 for (i = self.t - 1; i >= 0; --i) {
14221 r[i + ds + 1] = (self[i] >> cbs) | c
14222 c = (self[i] & bm) << bs
14223 }
14224 for (i = ds - 1; i >= 0; --i) r[i] = 0
14225 r[ds] = c
14226 r.t = self.t + ds + 1
14227 r.s = self.s
14228 r.clamp()
14229 }
14230
14231 // (protected) r = this >> n
14232 function bnpRShiftTo(n, r) {
14233 var self = this
14234 r.s = self.s
14235 var ds = Math.floor(n / self.DB)
14236 if (ds >= self.t) {
14237 r.t = 0
14238 return
14239 }
14240 var bs = n % self.DB
14241 var cbs = self.DB - bs
14242 var bm = (1 << bs) - 1
14243 r[0] = self[ds] >> bs
14244 for (var i = ds + 1; i < self.t; ++i) {
14245 r[i - ds - 1] |= (self[i] & bm) << cbs
14246 r[i - ds] = self[i] >> bs
14247 }
14248 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14249 r.t = self.t - ds
14250 r.clamp()
14251 }
14252
14253 // (protected) r = this - a
14254 function bnpSubTo(a, r) {
14255 var self = this
14256 var i = 0,
14257 c = 0,
14258 m = Math.min(a.t, self.t)
14259 while (i < m) {
14260 c += self[i] - a[i]
14261 r[i++] = c & self.DM
14262 c >>= self.DB
14263 }
14264 if (a.t < self.t) {
14265 c -= a.s
14266 while (i < self.t) {
14267 c += self[i]
14268 r[i++] = c & self.DM
14269 c >>= self.DB
14270 }
14271 c += self.s
14272 } else {
14273 c += self.s
14274 while (i < a.t) {
14275 c -= a[i]
14276 r[i++] = c & self.DM
14277 c >>= self.DB
14278 }
14279 c -= a.s
14280 }
14281 r.s = (c < 0) ? -1 : 0
14282 if (c < -1) r[i++] = self.DV + c
14283 else if (c > 0) r[i++] = c
14284 r.t = i
14285 r.clamp()
14286 }
14287
14288 // (protected) r = this * a, r != this,a (HAC 14.12)
14289 // "this" should be the larger one if appropriate.
14290 function bnpMultiplyTo(a, r) {
14291 var x = this.abs(),
14292 y = a.abs()
14293 var i = x.t
14294 r.t = i + y.t
14295 while (--i >= 0) r[i] = 0
14296 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14297 r.s = 0
14298 r.clamp()
14299 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14300 }
14301
14302 // (protected) r = this^2, r != this (HAC 14.16)
14303 function bnpSquareTo(r) {
14304 var x = this.abs()
14305 var i = r.t = 2 * x.t
14306 while (--i >= 0) r[i] = 0
14307 for (i = 0; i < x.t - 1; ++i) {
14308 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14309 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14310 r[i + x.t] -= x.DV
14311 r[i + x.t + 1] = 1
14312 }
14313 }
14314 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14315 r.s = 0
14316 r.clamp()
14317 }
14318
14319 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14320 // r != q, this != m. q or r may be null.
14321 function bnpDivRemTo(m, q, r) {
14322 var self = this
14323 var pm = m.abs()
14324 if (pm.t <= 0) return
14325 var pt = self.abs()
14326 if (pt.t < pm.t) {
14327 if (q != null) q.fromInt(0)
14328 if (r != null) self.copyTo(r)
14329 return
14330 }
14331 if (r == null) r = new BigInteger()
14332 var y = new BigInteger(),
14333 ts = self.s,
14334 ms = m.s
14335 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14336 if (nsh > 0) {
14337 pm.lShiftTo(nsh, y)
14338 pt.lShiftTo(nsh, r)
14339 } else {
14340 pm.copyTo(y)
14341 pt.copyTo(r)
14342 }
14343 var ys = y.t
14344 var y0 = y[ys - 1]
14345 if (y0 == 0) return
14346 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14347 var d1 = self.FV / yt,
14348 d2 = (1 << self.F1) / yt,
14349 e = 1 << self.F2
14350 var i = r.t,
14351 j = i - ys,
14352 t = (q == null) ? new BigInteger() : q
14353 y.dlShiftTo(j, t)
14354 if (r.compareTo(t) >= 0) {
14355 r[r.t++] = 1
14356 r.subTo(t, r)
14357 }
14358 BigInteger.ONE.dlShiftTo(ys, t)
14359 t.subTo(y, y); // "negative" y so we can replace sub with am later
14360 while (y.t < ys) y[y.t++] = 0
14361 while (--j >= 0) {
14362 // Estimate quotient digit
14363 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14364 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14365 y.dlShiftTo(j, t)
14366 r.subTo(t, r)
14367 while (r[i] < --qd) r.subTo(t, r)
14368 }
14369 }
14370 if (q != null) {
14371 r.drShiftTo(ys, q)
14372 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14373 }
14374 r.t = ys
14375 r.clamp()
14376 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14377 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14378 }
14379
14380 // (public) this mod a
14381 function bnMod(a) {
14382 var r = new BigInteger()
14383 this.abs()
14384 .divRemTo(a, null, r)
14385 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14386 return r
14387 }
14388
14389 // Modular reduction using "classic" algorithm
14390 function Classic(m) {
14391 this.m = m
14392 }
14393
14394 function cConvert(x) {
14395 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14396 else return x
14397 }
14398
14399 function cRevert(x) {
14400 return x
14401 }
14402
14403 function cReduce(x) {
14404 x.divRemTo(this.m, null, x)
14405 }
14406
14407 function cMulTo(x, y, r) {
14408 x.multiplyTo(y, r)
14409 this.reduce(r)
14410 }
14411
14412 function cSqrTo(x, r) {
14413 x.squareTo(r)
14414 this.reduce(r)
14415 }
14416
14417 Classic.prototype.convert = cConvert
14418 Classic.prototype.revert = cRevert
14419 Classic.prototype.reduce = cReduce
14420 Classic.prototype.mulTo = cMulTo
14421 Classic.prototype.sqrTo = cSqrTo
14422
14423 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14424 // justification:
14425 // xy == 1 (mod m)
14426 // xy = 1+km
14427 // xy(2-xy) = (1+km)(1-km)
14428 // x[y(2-xy)] = 1-k^2m^2
14429 // x[y(2-xy)] == 1 (mod m^2)
14430 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14431 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14432 // JS multiply "overflows" differently from C/C++, so care is needed here.
14433 function bnpInvDigit() {
14434 if (this.t < 1) return 0
14435 var x = this[0]
14436 if ((x & 1) == 0) return 0
14437 var y = x & 3; // y == 1/x mod 2^2
14438 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14439 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14440 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14441 // last step - calculate inverse mod DV directly
14442 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14443 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14444 // we really want the negative inverse, and -DV < y < DV
14445 return (y > 0) ? this.DV - y : -y
14446 }
14447
14448 // Montgomery reduction
14449 function Montgomery(m) {
14450 this.m = m
14451 this.mp = m.invDigit()
14452 this.mpl = this.mp & 0x7fff
14453 this.mph = this.mp >> 15
14454 this.um = (1 << (m.DB - 15)) - 1
14455 this.mt2 = 2 * m.t
14456 }
14457
14458 // xR mod m
14459 function montConvert(x) {
14460 var r = new BigInteger()
14461 x.abs()
14462 .dlShiftTo(this.m.t, r)
14463 r.divRemTo(this.m, null, r)
14464 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14465 return r
14466 }
14467
14468 // x/R mod m
14469 function montRevert(x) {
14470 var r = new BigInteger()
14471 x.copyTo(r)
14472 this.reduce(r)
14473 return r
14474 }
14475
14476 // x = x/R mod m (HAC 14.32)
14477 function montReduce(x) {
14478 while (x.t <= this.mt2) // pad x so am has enough room later
14479 x[x.t++] = 0
14480 for (var i = 0; i < this.m.t; ++i) {
14481 // faster way of calculating u0 = x[i]*mp mod DV
14482 var j = x[i] & 0x7fff
14483 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14484 // use am to combine the multiply-shift-add into one call
14485 j = i + this.m.t
14486 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14487 // propagate carry
14488 while (x[j] >= x.DV) {
14489 x[j] -= x.DV
14490 x[++j]++
14491 }
14492 }
14493 x.clamp()
14494 x.drShiftTo(this.m.t, x)
14495 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
14496 }
14497
14498 // r = "x^2/R mod m"; x != r
14499 function montSqrTo(x, r) {
14500 x.squareTo(r)
14501 this.reduce(r)
14502 }
14503
14504 // r = "xy/R mod m"; x,y != r
14505 function montMulTo(x, y, r) {
14506 x.multiplyTo(y, r)
14507 this.reduce(r)
14508 }
14509
14510 Montgomery.prototype.convert = montConvert
14511 Montgomery.prototype.revert = montRevert
14512 Montgomery.prototype.reduce = montReduce
14513 Montgomery.prototype.mulTo = montMulTo
14514 Montgomery.prototype.sqrTo = montSqrTo
14515
14516 // (protected) true iff this is even
14517 function bnpIsEven() {
14518 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14519 }
14520
14521 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14522 function bnpExp(e, z) {
14523 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14524 var r = new BigInteger(),
14525 r2 = new BigInteger(),
14526 g = z.convert(this),
14527 i = nbits(e) - 1
14528 g.copyTo(r)
14529 while (--i >= 0) {
14530 z.sqrTo(r, r2)
14531 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14532 else {
14533 var t = r
14534 r = r2
14535 r2 = t
14536 }
14537 }
14538 return z.revert(r)
14539 }
14540
14541 // (public) this^e % m, 0 <= e < 2^32
14542 function bnModPowInt(e, m) {
14543 var z
14544 if (e < 256 || m.isEven()) z = new Classic(m)
14545 else z = new Montgomery(m)
14546 return this.exp(e, z)
14547 }
14548
14549 // protected
14550 proto.copyTo = bnpCopyTo
14551 proto.fromInt = bnpFromInt
14552 proto.fromString = bnpFromString
14553 proto.clamp = bnpClamp
14554 proto.dlShiftTo = bnpDLShiftTo
14555 proto.drShiftTo = bnpDRShiftTo
14556 proto.lShiftTo = bnpLShiftTo
14557 proto.rShiftTo = bnpRShiftTo
14558 proto.subTo = bnpSubTo
14559 proto.multiplyTo = bnpMultiplyTo
14560 proto.squareTo = bnpSquareTo
14561 proto.divRemTo = bnpDivRemTo
14562 proto.invDigit = bnpInvDigit
14563 proto.isEven = bnpIsEven
14564 proto.exp = bnpExp
14565
14566 // public
14567 proto.toString = bnToString
14568 proto.negate = bnNegate
14569 proto.abs = bnAbs
14570 proto.compareTo = bnCompareTo
14571 proto.bitLength = bnBitLength
14572 proto.byteLength = bnByteLength
14573 proto.mod = bnMod
14574 proto.modPowInt = bnModPowInt
14575
14576 // (public)
14577 function bnClone() {
14578 var r = new BigInteger()
14579 this.copyTo(r)
14580 return r
14581 }
14582
14583 // (public) return value as integer
14584 function bnIntValue() {
14585 if (this.s < 0) {
14586 if (this.t == 1) return this[0] - this.DV
14587 else if (this.t == 0) return -1
14588 } else if (this.t == 1) return this[0]
14589 else if (this.t == 0) return 0
14590 // assumes 16 < DB < 32
14591 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14592 }
14593
14594 // (public) return value as byte
14595 function bnByteValue() {
14596 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14597 }
14598
14599 // (public) return value as short (assumes DB>=16)
14600 function bnShortValue() {
14601 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14602 }
14603
14604 // (protected) return x s.t. r^x < DV
14605 function bnpChunkSize(r) {
14606 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14607 }
14608
14609 // (public) 0 if this == 0, 1 if this > 0
14610 function bnSigNum() {
14611 if (this.s < 0) return -1
14612 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14613 else return 1
14614 }
14615
14616 // (protected) convert to radix string
14617 function bnpToRadix(b) {
14618 if (b == null) b = 10
14619 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14620 var cs = this.chunkSize(b)
14621 var a = Math.pow(b, cs)
14622 var d = nbv(a),
14623 y = new BigInteger(),
14624 z = new BigInteger(),
14625 r = ""
14626 this.divRemTo(d, y, z)
14627 while (y.signum() > 0) {
14628 r = (a + z.intValue())
14629 .toString(b)
14630 .substr(1) + r
14631 y.divRemTo(d, y, z)
14632 }
14633 return z.intValue()
14634 .toString(b) + r
14635 }
14636
14637 // (protected) convert from radix string
14638 function bnpFromRadix(s, b) {
14639 var self = this
14640 self.fromInt(0)
14641 if (b == null) b = 10
14642 var cs = self.chunkSize(b)
14643 var d = Math.pow(b, cs),
14644 mi = false,
14645 j = 0,
14646 w = 0
14647 for (var i = 0; i < s.length; ++i) {
14648 var x = intAt(s, i)
14649 if (x < 0) {
14650 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14651 continue
14652 }
14653 w = b * w + x
14654 if (++j >= cs) {
14655 self.dMultiply(d)
14656 self.dAddOffset(w, 0)
14657 j = 0
14658 w = 0
14659 }
14660 }
14661 if (j > 0) {
14662 self.dMultiply(Math.pow(b, j))
14663 self.dAddOffset(w, 0)
14664 }
14665 if (mi) BigInteger.ZERO.subTo(self, self)
14666 }
14667
14668 // (protected) alternate constructor
14669 function bnpFromNumber(a, b, c) {
14670 var self = this
14671 if ("number" == typeof b) {
14672 // new BigInteger(int,int,RNG)
14673 if (a < 2) self.fromInt(1)
14674 else {
14675 self.fromNumber(a, c)
14676 if (!self.testBit(a - 1)) // force MSB set
14677 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14678 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14679 while (!self.isProbablePrime(b)) {
14680 self.dAddOffset(2, 0)
14681 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14682 }
14683 }
14684 } else {
14685 // new BigInteger(int,RNG)
14686 var x = new Array(),
14687 t = a & 7
14688 x.length = (a >> 3) + 1
14689 b.nextBytes(x)
14690 if (t > 0) x[0] &= ((1 << t) - 1)
14691 else x[0] = 0
14692 self.fromString(x, 256)
14693 }
14694 }
14695
14696 // (public) convert to bigendian byte array
14697 function bnToByteArray() {
14698 var self = this
14699 var i = self.t,
14700 r = new Array()
14701 r[0] = self.s
14702 var p = self.DB - (i * self.DB) % 8,
14703 d, k = 0
14704 if (i-- > 0) {
14705 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14706 r[k++] = d | (self.s << (self.DB - p))
14707 while (i >= 0) {
14708 if (p < 8) {
14709 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14710 d |= self[--i] >> (p += self.DB - 8)
14711 } else {
14712 d = (self[i] >> (p -= 8)) & 0xff
14713 if (p <= 0) {
14714 p += self.DB
14715 --i
14716 }
14717 }
14718 if ((d & 0x80) != 0) d |= -256
14719 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14720 if (k > 0 || d != self.s) r[k++] = d
14721 }
14722 }
14723 return r
14724 }
14725
14726 function bnEquals(a) {
14727 return (this.compareTo(a) == 0)
14728 }
14729
14730 function bnMin(a) {
14731 return (this.compareTo(a) < 0) ? this : a
14732 }
14733
14734 function bnMax(a) {
14735 return (this.compareTo(a) > 0) ? this : a
14736 }
14737
14738 // (protected) r = this op a (bitwise)
14739 function bnpBitwiseTo(a, op, r) {
14740 var self = this
14741 var i, f, m = Math.min(a.t, self.t)
14742 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14743 if (a.t < self.t) {
14744 f = a.s & self.DM
14745 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14746 r.t = self.t
14747 } else {
14748 f = self.s & self.DM
14749 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14750 r.t = a.t
14751 }
14752 r.s = op(self.s, a.s)
14753 r.clamp()
14754 }
14755
14756 // (public) this & a
14757 function op_and(x, y) {
14758 return x & y
14759 }
14760
14761 function bnAnd(a) {
14762 var r = new BigInteger()
14763 this.bitwiseTo(a, op_and, r)
14764 return r
14765 }
14766
14767 // (public) this | a
14768 function op_or(x, y) {
14769 return x | y
14770 }
14771
14772 function bnOr(a) {
14773 var r = new BigInteger()
14774 this.bitwiseTo(a, op_or, r)
14775 return r
14776 }
14777
14778 // (public) this ^ a
14779 function op_xor(x, y) {
14780 return x ^ y
14781 }
14782
14783 function bnXor(a) {
14784 var r = new BigInteger()
14785 this.bitwiseTo(a, op_xor, r)
14786 return r
14787 }
14788
14789 // (public) this & ~a
14790 function op_andnot(x, y) {
14791 return x & ~y
14792 }
14793
14794 function bnAndNot(a) {
14795 var r = new BigInteger()
14796 this.bitwiseTo(a, op_andnot, r)
14797 return r
14798 }
14799
14800 // (public) ~this
14801 function bnNot() {
14802 var r = new BigInteger()
14803 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14804 r.t = this.t
14805 r.s = ~this.s
14806 return r
14807 }
14808
14809 // (public) this << n
14810 function bnShiftLeft(n) {
14811 var r = new BigInteger()
14812 if (n < 0) this.rShiftTo(-n, r)
14813 else this.lShiftTo(n, r)
14814 return r
14815 }
14816
14817 // (public) this >> n
14818 function bnShiftRight(n) {
14819 var r = new BigInteger()
14820 if (n < 0) this.lShiftTo(-n, r)
14821 else this.rShiftTo(n, r)
14822 return r
14823 }
14824
14825 // return index of lowest 1-bit in x, x < 2^31
14826 function lbit(x) {
14827 if (x == 0) return -1
14828 var r = 0
14829 if ((x & 0xffff) == 0) {
14830 x >>= 16
14831 r += 16
14832 }
14833 if ((x & 0xff) == 0) {
14834 x >>= 8
14835 r += 8
14836 }
14837 if ((x & 0xf) == 0) {
14838 x >>= 4
14839 r += 4
14840 }
14841 if ((x & 3) == 0) {
14842 x >>= 2
14843 r += 2
14844 }
14845 if ((x & 1) == 0)++r
14846 return r
14847 }
14848
14849 // (public) returns index of lowest 1-bit (or -1 if none)
14850 function bnGetLowestSetBit() {
14851 for (var i = 0; i < this.t; ++i)
14852 if (this[i] != 0) return i * this.DB + lbit(this[i])
14853 if (this.s < 0) return this.t * this.DB
14854 return -1
14855 }
14856
14857 // return number of 1 bits in x
14858 function cbit(x) {
14859 var r = 0
14860 while (x != 0) {
14861 x &= x - 1
14862 ++r
14863 }
14864 return r
14865 }
14866
14867 // (public) return number of set bits
14868 function bnBitCount() {
14869 var r = 0,
14870 x = this.s & this.DM
14871 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14872 return r
14873 }
14874
14875 // (public) true iff nth bit is set
14876 function bnTestBit(n) {
14877 var j = Math.floor(n / this.DB)
14878 if (j >= this.t) return (this.s != 0)
14879 return ((this[j] & (1 << (n % this.DB))) != 0)
14880 }
14881
14882 // (protected) this op (1<<n)
14883 function bnpChangeBit(n, op) {
14884 var r = BigInteger.ONE.shiftLeft(n)
14885 this.bitwiseTo(r, op, r)
14886 return r
14887 }
14888
14889 // (public) this | (1<<n)
14890 function bnSetBit(n) {
14891 return this.changeBit(n, op_or)
14892 }
14893
14894 // (public) this & ~(1<<n)
14895 function bnClearBit(n) {
14896 return this.changeBit(n, op_andnot)
14897 }
14898
14899 // (public) this ^ (1<<n)
14900 function bnFlipBit(n) {
14901 return this.changeBit(n, op_xor)
14902 }
14903
14904 // (protected) r = this + a
14905 function bnpAddTo(a, r) {
14906 var self = this
14907
14908 var i = 0,
14909 c = 0,
14910 m = Math.min(a.t, self.t)
14911 while (i < m) {
14912 c += self[i] + a[i]
14913 r[i++] = c & self.DM
14914 c >>= self.DB
14915 }
14916 if (a.t < self.t) {
14917 c += a.s
14918 while (i < self.t) {
14919 c += self[i]
14920 r[i++] = c & self.DM
14921 c >>= self.DB
14922 }
14923 c += self.s
14924 } else {
14925 c += self.s
14926 while (i < a.t) {
14927 c += a[i]
14928 r[i++] = c & self.DM
14929 c >>= self.DB
14930 }
14931 c += a.s
14932 }
14933 r.s = (c < 0) ? -1 : 0
14934 if (c > 0) r[i++] = c
14935 else if (c < -1) r[i++] = self.DV + c
14936 r.t = i
14937 r.clamp()
14938 }
14939
14940 // (public) this + a
14941 function bnAdd(a) {
14942 var r = new BigInteger()
14943 this.addTo(a, r)
14944 return r
14945 }
14946
14947 // (public) this - a
14948 function bnSubtract(a) {
14949 var r = new BigInteger()
14950 this.subTo(a, r)
14951 return r
14952 }
14953
14954 // (public) this * a
14955 function bnMultiply(a) {
14956 var r = new BigInteger()
14957 this.multiplyTo(a, r)
14958 return r
14959 }
14960
14961 // (public) this^2
14962 function bnSquare() {
14963 var r = new BigInteger()
14964 this.squareTo(r)
14965 return r
14966 }
14967
14968 // (public) this / a
14969 function bnDivide(a) {
14970 var r = new BigInteger()
14971 this.divRemTo(a, r, null)
14972 return r
14973 }
14974
14975 // (public) this % a
14976 function bnRemainder(a) {
14977 var r = new BigInteger()
14978 this.divRemTo(a, null, r)
14979 return r
14980 }
14981
14982 // (public) [this/a,this%a]
14983 function bnDivideAndRemainder(a) {
14984 var q = new BigInteger(),
14985 r = new BigInteger()
14986 this.divRemTo(a, q, r)
14987 return new Array(q, r)
14988 }
14989
14990 // (protected) this *= n, this >= 0, 1 < n < DV
14991 function bnpDMultiply(n) {
14992 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14993 ++this.t
14994 this.clamp()
14995 }
14996
14997 // (protected) this += n << w words, this >= 0
14998 function bnpDAddOffset(n, w) {
14999 if (n == 0) return
15000 while (this.t <= w) this[this.t++] = 0
15001 this[w] += n
15002 while (this[w] >= this.DV) {
15003 this[w] -= this.DV
15004 if (++w >= this.t) this[this.t++] = 0
15005 ++this[w]
15006 }
15007 }
15008
15009 // A "null" reducer
15010 function NullExp() {}
15011
15012 function nNop(x) {
15013 return x
15014 }
15015
15016 function nMulTo(x, y, r) {
15017 x.multiplyTo(y, r)
15018 }
15019
15020 function nSqrTo(x, r) {
15021 x.squareTo(r)
15022 }
15023
15024 NullExp.prototype.convert = nNop
15025 NullExp.prototype.revert = nNop
15026 NullExp.prototype.mulTo = nMulTo
15027 NullExp.prototype.sqrTo = nSqrTo
15028
15029 // (public) this^e
15030 function bnPow(e) {
15031 return this.exp(e, new NullExp())
15032 }
15033
15034 // (protected) r = lower n words of "this * a", a.t <= n
15035 // "this" should be the larger one if appropriate.
15036 function bnpMultiplyLowerTo(a, n, r) {
15037 var i = Math.min(this.t + a.t, n)
15038 r.s = 0; // assumes a,this >= 0
15039 r.t = i
15040 while (i > 0) r[--i] = 0
15041 var j
15042 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
15043 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
15044 r.clamp()
15045 }
15046
15047 // (protected) r = "this * a" without lower n words, n > 0
15048 // "this" should be the larger one if appropriate.
15049 function bnpMultiplyUpperTo(a, n, r) {
15050 --n
15051 var i = r.t = this.t + a.t - n
15052 r.s = 0; // assumes a,this >= 0
15053 while (--i >= 0) r[i] = 0
15054 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15055 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15056 r.clamp()
15057 r.drShiftTo(1, r)
15058 }
15059
15060 // Barrett modular reduction
15061 function Barrett(m) {
15062 // setup Barrett
15063 this.r2 = new BigInteger()
15064 this.q3 = new BigInteger()
15065 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15066 this.mu = this.r2.divide(m)
15067 this.m = m
15068 }
15069
15070 function barrettConvert(x) {
15071 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15072 else if (x.compareTo(this.m) < 0) return x
15073 else {
15074 var r = new BigInteger()
15075 x.copyTo(r)
15076 this.reduce(r)
15077 return r
15078 }
15079 }
15080
15081 function barrettRevert(x) {
15082 return x
15083 }
15084
15085 // x = x mod m (HAC 14.42)
15086 function barrettReduce(x) {
15087 var self = this
15088 x.drShiftTo(self.m.t - 1, self.r2)
15089 if (x.t > self.m.t + 1) {
15090 x.t = self.m.t + 1
15091 x.clamp()
15092 }
15093 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15094 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15095 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15096 x.subTo(self.r2, x)
15097 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15098 }
15099
15100 // r = x^2 mod m; x != r
15101 function barrettSqrTo(x, r) {
15102 x.squareTo(r)
15103 this.reduce(r)
15104 }
15105
15106 // r = x*y mod m; x,y != r
15107 function barrettMulTo(x, y, r) {
15108 x.multiplyTo(y, r)
15109 this.reduce(r)
15110 }
15111
15112 Barrett.prototype.convert = barrettConvert
15113 Barrett.prototype.revert = barrettRevert
15114 Barrett.prototype.reduce = barrettReduce
15115 Barrett.prototype.mulTo = barrettMulTo
15116 Barrett.prototype.sqrTo = barrettSqrTo
15117
15118 // (public) this^e % m (HAC 14.85)
15119 function bnModPow(e, m) {
15120 var i = e.bitLength(),
15121 k, r = nbv(1),
15122 z
15123 if (i <= 0) return r
15124 else if (i < 18) k = 1
15125 else if (i < 48) k = 3
15126 else if (i < 144) k = 4
15127 else if (i < 768) k = 5
15128 else k = 6
15129 if (i < 8)
15130 z = new Classic(m)
15131 else if (m.isEven())
15132 z = new Barrett(m)
15133 else
15134 z = new Montgomery(m)
15135
15136 // precomputation
15137 var g = new Array(),
15138 n = 3,
15139 k1 = k - 1,
15140 km = (1 << k) - 1
15141 g[1] = z.convert(this)
15142 if (k > 1) {
15143 var g2 = new BigInteger()
15144 z.sqrTo(g[1], g2)
15145 while (n <= km) {
15146 g[n] = new BigInteger()
15147 z.mulTo(g2, g[n - 2], g[n])
15148 n += 2
15149 }
15150 }
15151
15152 var j = e.t - 1,
15153 w, is1 = true,
15154 r2 = new BigInteger(),
15155 t
15156 i = nbits(e[j]) - 1
15157 while (j >= 0) {
15158 if (i >= k1) w = (e[j] >> (i - k1)) & km
15159 else {
15160 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15161 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
15162 }
15163
15164 n = k
15165 while ((w & 1) == 0) {
15166 w >>= 1
15167 --n
15168 }
15169 if ((i -= n) < 0) {
15170 i += this.DB
15171 --j
15172 }
15173 if (is1) { // ret == 1, don't bother squaring or multiplying it
15174 g[w].copyTo(r)
15175 is1 = false
15176 } else {
15177 while (n > 1) {
15178 z.sqrTo(r, r2)
15179 z.sqrTo(r2, r)
15180 n -= 2
15181 }
15182 if (n > 0) z.sqrTo(r, r2)
15183 else {
15184 t = r
15185 r = r2
15186 r2 = t
15187 }
15188 z.mulTo(r2, g[w], r)
15189 }
15190
15191 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15192 z.sqrTo(r, r2)
15193 t = r
15194 r = r2
15195 r2 = t
15196 if (--i < 0) {
15197 i = this.DB - 1
15198 --j
15199 }
15200 }
15201 }
15202 return z.revert(r)
15203 }
15204
15205 // (public) gcd(this,a) (HAC 14.54)
15206 function bnGCD(a) {
15207 var x = (this.s < 0) ? this.negate() : this.clone()
15208 var y = (a.s < 0) ? a.negate() : a.clone()
15209 if (x.compareTo(y) < 0) {
15210 var t = x
15211 x = y
15212 y = t
15213 }
15214 var i = x.getLowestSetBit(),
15215 g = y.getLowestSetBit()
15216 if (g < 0) return x
15217 if (i < g) g = i
15218 if (g > 0) {
15219 x.rShiftTo(g, x)
15220 y.rShiftTo(g, y)
15221 }
15222 while (x.signum() > 0) {
15223 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15224 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15225 if (x.compareTo(y) >= 0) {
15226 x.subTo(y, x)
15227 x.rShiftTo(1, x)
15228 } else {
15229 y.subTo(x, y)
15230 y.rShiftTo(1, y)
15231 }
15232 }
15233 if (g > 0) y.lShiftTo(g, y)
15234 return y
15235 }
15236
15237 // (protected) this % n, n < 2^26
15238 function bnpModInt(n) {
15239 if (n <= 0) return 0
15240 var d = this.DV % n,
15241 r = (this.s < 0) ? n - 1 : 0
15242 if (this.t > 0)
15243 if (d == 0) r = this[0] % n
15244 else
15245 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15246 return r
15247 }
15248
15249 // (public) 1/this % m (HAC 14.61)
15250 function bnModInverse(m) {
15251 var ac = m.isEven()
15252 if (this.signum() === 0) throw new Error('division by zero')
15253 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15254 var u = m.clone(),
15255 v = this.clone()
15256 var a = nbv(1),
15257 b = nbv(0),
15258 c = nbv(0),
15259 d = nbv(1)
15260 while (u.signum() != 0) {
15261 while (u.isEven()) {
15262 u.rShiftTo(1, u)
15263 if (ac) {
15264 if (!a.isEven() || !b.isEven()) {
15265 a.addTo(this, a)
15266 b.subTo(m, b)
15267 }
15268 a.rShiftTo(1, a)
15269 } else if (!b.isEven()) b.subTo(m, b)
15270 b.rShiftTo(1, b)
15271 }
15272 while (v.isEven()) {
15273 v.rShiftTo(1, v)
15274 if (ac) {
15275 if (!c.isEven() || !d.isEven()) {
15276 c.addTo(this, c)
15277 d.subTo(m, d)
15278 }
15279 c.rShiftTo(1, c)
15280 } else if (!d.isEven()) d.subTo(m, d)
15281 d.rShiftTo(1, d)
15282 }
15283 if (u.compareTo(v) >= 0) {
15284 u.subTo(v, u)
15285 if (ac) a.subTo(c, a)
15286 b.subTo(d, b)
15287 } else {
15288 v.subTo(u, v)
15289 if (ac) c.subTo(a, c)
15290 d.subTo(b, d)
15291 }
15292 }
15293 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15294 while (d.compareTo(m) >= 0) d.subTo(m, d)
15295 while (d.signum() < 0) d.addTo(m, d)
15296 return d
15297 }
15298
15299 var lowprimes = [
15300 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15301 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15302 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15303 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15304 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15305 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15306 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15307 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15308 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15309 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15310 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15311 ]
15312
15313 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
15314
15315 // (public) test primality with certainty >= 1-.5^t
15316 function bnIsProbablePrime(t) {
15317 var i, x = this.abs()
15318 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15319 for (i = 0; i < lowprimes.length; ++i)
15320 if (x[0] == lowprimes[i]) return true
15321 return false
15322 }
15323 if (x.isEven()) return false
15324 i = 1
15325 while (i < lowprimes.length) {
15326 var m = lowprimes[i],
15327 j = i + 1
15328 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15329 m = x.modInt(m)
15330 while (i < j) if (m % lowprimes[i++] == 0) return false
15331 }
15332 return x.millerRabin(t)
15333 }
15334
15335 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15336 function bnpMillerRabin(t) {
15337 var n1 = this.subtract(BigInteger.ONE)
15338 var k = n1.getLowestSetBit()
15339 if (k <= 0) return false
15340 var r = n1.shiftRight(k)
15341 t = (t + 1) >> 1
15342 if (t > lowprimes.length) t = lowprimes.length
15343 var a = new BigInteger(null)
15344 var j, bases = []
15345 for (var i = 0; i < t; ++i) {
15346 for (;;) {
15347 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15348 if (bases.indexOf(j) == -1) break
15349 }
15350 bases.push(j)
15351 a.fromInt(j)
15352 var y = a.modPow(r, this)
15353 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15354 var j = 1
15355 while (j++ < k && y.compareTo(n1) != 0) {
15356 y = y.modPowInt(2, this)
15357 if (y.compareTo(BigInteger.ONE) == 0) return false
15358 }
15359 if (y.compareTo(n1) != 0) return false
15360 }
15361 }
15362 return true
15363 }
15364
15365 // protected
15366 proto.chunkSize = bnpChunkSize
15367 proto.toRadix = bnpToRadix
15368 proto.fromRadix = bnpFromRadix
15369 proto.fromNumber = bnpFromNumber
15370 proto.bitwiseTo = bnpBitwiseTo
15371 proto.changeBit = bnpChangeBit
15372 proto.addTo = bnpAddTo
15373 proto.dMultiply = bnpDMultiply
15374 proto.dAddOffset = bnpDAddOffset
15375 proto.multiplyLowerTo = bnpMultiplyLowerTo
15376 proto.multiplyUpperTo = bnpMultiplyUpperTo
15377 proto.modInt = bnpModInt
15378 proto.millerRabin = bnpMillerRabin
15379
15380 // public
15381 proto.clone = bnClone
15382 proto.intValue = bnIntValue
15383 proto.byteValue = bnByteValue
15384 proto.shortValue = bnShortValue
15385 proto.signum = bnSigNum
15386 proto.toByteArray = bnToByteArray
15387 proto.equals = bnEquals
15388 proto.min = bnMin
15389 proto.max = bnMax
15390 proto.and = bnAnd
15391 proto.or = bnOr
15392 proto.xor = bnXor
15393 proto.andNot = bnAndNot
15394 proto.not = bnNot
15395 proto.shiftLeft = bnShiftLeft
15396 proto.shiftRight = bnShiftRight
15397 proto.getLowestSetBit = bnGetLowestSetBit
15398 proto.bitCount = bnBitCount
15399 proto.testBit = bnTestBit
15400 proto.setBit = bnSetBit
15401 proto.clearBit = bnClearBit
15402 proto.flipBit = bnFlipBit
15403 proto.add = bnAdd
15404 proto.subtract = bnSubtract
15405 proto.multiply = bnMultiply
15406 proto.divide = bnDivide
15407 proto.remainder = bnRemainder
15408 proto.divideAndRemainder = bnDivideAndRemainder
15409 proto.modPow = bnModPow
15410 proto.modInverse = bnModInverse
15411 proto.pow = bnPow
15412 proto.gcd = bnGCD
15413 proto.isProbablePrime = bnIsProbablePrime
15414
15415 // JSBN-specific extension
15416 proto.square = bnSquare
15417
15418 // constants
15419 BigInteger.ZERO = nbv(0)
15420 BigInteger.ONE = nbv(1)
15421 BigInteger.valueOf = nbv
15422
15423 module.exports = BigInteger
15424
15425 },{"../package.json":38}],36:[function(require,module,exports){
15426 (function (Buffer){
15427 // FIXME: Kind of a weird way to throw exceptions, consider removing
15428 var assert = require('assert')
15429 var BigInteger = require('./bigi')
15430
15431 /**
15432 * Turns a byte array into a big integer.
15433 *
15434 * This function will interpret a byte array as a big integer in big
15435 * endian notation.
15436 */
15437 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15438 // BigInteger expects a DER integer conformant byte array
15439 if (byteArray[0] & 0x80) {
15440 return new BigInteger([0].concat(byteArray))
15441 }
15442
15443 return new BigInteger(byteArray)
15444 }
15445
15446 /**
15447 * Returns a byte array representation of the big integer.
15448 *
15449 * This returns the absolute of the contained value in big endian
15450 * form. A value of zero results in an empty array.
15451 */
15452 BigInteger.prototype.toByteArrayUnsigned = function() {
15453 var byteArray = this.toByteArray()
15454 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15455 }
15456
15457 BigInteger.fromDERInteger = function(byteArray) {
15458 return new BigInteger(byteArray)
15459 }
15460
15461 /*
15462 * Converts BigInteger to a DER integer representation.
15463 *
15464 * The format for this value uses the most significant bit as a sign
15465 * bit. If the most significant bit is already set and the integer is
15466 * positive, a 0x00 is prepended.
15467 *
15468 * Examples:
15469 *
15470 * 0 => 0x00
15471 * 1 => 0x01
15472 * -1 => 0xff
15473 * 127 => 0x7f
15474 * -127 => 0x81
15475 * 128 => 0x0080
15476 * -128 => 0x80
15477 * 255 => 0x00ff
15478 * -255 => 0xff01
15479 * 16300 => 0x3fac
15480 * -16300 => 0xc054
15481 * 62300 => 0x00f35c
15482 * -62300 => 0xff0ca4
15483 */
15484 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15485
15486 BigInteger.fromBuffer = function(buffer) {
15487 // BigInteger expects a DER integer conformant byte array
15488 if (buffer[0] & 0x80) {
15489 var byteArray = Array.prototype.slice.call(buffer)
15490
15491 return new BigInteger([0].concat(byteArray))
15492 }
15493
15494 return new BigInteger(buffer)
15495 }
15496
15497 BigInteger.fromHex = function(hex) {
15498 if (hex === '') return BigInteger.ZERO
15499
15500 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15501 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15502 return new BigInteger(hex, 16)
15503 }
15504
15505 BigInteger.prototype.toBuffer = function(size) {
15506 var byteArray = this.toByteArrayUnsigned()
15507 var zeros = []
15508
15509 var padding = size - byteArray.length
15510 while (zeros.length < padding) zeros.push(0)
15511
15512 return new Buffer(zeros.concat(byteArray))
15513 }
15514
15515 BigInteger.prototype.toHex = function(size) {
15516 return this.toBuffer(size).toString('hex')
15517 }
15518
15519 }).call(this,require("buffer").Buffer)
15520 },{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15521 var BigInteger = require('./bigi')
15522
15523 //addons
15524 require('./convert')
15525
15526 module.exports = BigInteger
15527 },{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15528 module.exports={
15529 "_args": [
15530 [
15531 "bigi",
15532 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15533 ]
15534 ],
15535 "_from": "bigi@latest",
15536 "_id": "bigi@1.4.2",
15537 "_inCache": true,
15538 "_installable": true,
15539 "_location": "/bigi",
15540 "_nodeVersion": "6.1.0",
15541 "_npmOperationalInternal": {
15542 "host": "packages-12-west.internal.npmjs.com",
15543 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15544 },
15545 "_npmUser": {
15546 "email": "jprichardson@gmail.com",
15547 "name": "jprichardson"
15548 },
15549 "_npmVersion": "3.8.6",
15550 "_phantomChildren": {},
15551 "_requested": {
15552 "name": "bigi",
15553 "raw": "bigi",
15554 "rawSpec": "",
15555 "scope": null,
15556 "spec": "latest",
15557 "type": "tag"
15558 },
15559 "_requiredBy": [
15560 "#USER",
15561 "/bitcoinjs-lib",
15562 "/ecurve"
15563 ],
15564 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15565 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15566 "_shrinkwrap": null,
15567 "_spec": "bigi",
15568 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15569 "bugs": {
15570 "url": "https://github.com/cryptocoinjs/bigi/issues"
15571 },
15572 "dependencies": {},
15573 "description": "Big integers.",
15574 "devDependencies": {
15575 "coveralls": "^2.11.2",
15576 "istanbul": "^0.3.5",
15577 "jshint": "^2.5.1",
15578 "mocha": "^2.1.0",
15579 "mochify": "^2.1.0"
15580 },
15581 "directories": {},
15582 "dist": {
15583 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15584 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15585 },
15586 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15587 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15588 "keywords": [
15589 "cryptography",
15590 "math",
15591 "bitcoin",
15592 "arbitrary",
15593 "precision",
15594 "arithmetic",
15595 "big",
15596 "integer",
15597 "int",
15598 "number",
15599 "biginteger",
15600 "bigint",
15601 "bignumber",
15602 "decimal",
15603 "float"
15604 ],
15605 "main": "./lib/index.js",
15606 "maintainers": [
15607 {
15608 "email": "boydb@midnightdesign.ws",
15609 "name": "midnightlightning"
15610 },
15611 {
15612 "email": "sidazhang89@gmail.com",
15613 "name": "sidazhang"
15614 },
15615 {
15616 "email": "npm@shesek.info",
15617 "name": "nadav"
15618 },
15619 {
15620 "email": "jprichardson@gmail.com",
15621 "name": "jprichardson"
15622 }
15623 ],
15624 "name": "bigi",
15625 "optionalDependencies": {},
15626 "readme": "ERROR: No README data found!",
15627 "repository": {
15628 "type": "git",
15629 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15630 },
15631 "scripts": {
15632 "browser-test": "mochify --wd -R spec",
15633 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15634 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15635 "jshint": "jshint --config jshint.json lib/*.js ; true",
15636 "test": "_mocha -- test/*.js",
15637 "unit": "mocha"
15638 },
15639 "testling": {
15640 "browsers": [
15641 "ie/9..latest",
15642 "firefox/latest",
15643 "chrome/latest",
15644 "safari/6.0..latest",
15645 "iphone/6.0..latest",
15646 "android-browser/4.2..latest"
15647 ],
15648 "files": "test/*.js",
15649 "harness": "mocha"
15650 },
15651 "version": "1.4.2"
15652 }
15653
15654 },{}],39:[function(require,module,exports){
15655 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15656 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15657 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15658
15659 var Buffer = require('safe-buffer').Buffer
15660
15661 function check (buffer) {
15662 if (buffer.length < 8) return false
15663 if (buffer.length > 72) return false
15664 if (buffer[0] !== 0x30) return false
15665 if (buffer[1] !== buffer.length - 2) return false
15666 if (buffer[2] !== 0x02) return false
15667
15668 var lenR = buffer[3]
15669 if (lenR === 0) return false
15670 if (5 + lenR >= buffer.length) return false
15671 if (buffer[4 + lenR] !== 0x02) return false
15672
15673 var lenS = buffer[5 + lenR]
15674 if (lenS === 0) return false
15675 if ((6 + lenR + lenS) !== buffer.length) return false
15676
15677 if (buffer[4] & 0x80) return false
15678 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
15679
15680 if (buffer[lenR + 6] & 0x80) return false
15681 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15682 return true
15683 }
15684
15685 function decode (buffer) {
15686 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15687 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15688 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15689 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15690 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
15691
15692 var lenR = buffer[3]
15693 if (lenR === 0) throw new Error('R length is zero')
15694 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15695 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
15696
15697 var lenS = buffer[5 + lenR]
15698 if (lenS === 0) throw new Error('S length is zero')
15699 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15700
15701 if (buffer[4] & 0x80) throw new Error('R value is negative')
15702 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
15703
15704 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15705 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
15706
15707 // non-BIP66 - extract R, S values
15708 return {
15709 r: buffer.slice(4, 4 + lenR),
15710 s: buffer.slice(6 + lenR)
15711 }
15712 }
15713
15714 /*
15715 * Expects r and s to be positive DER integers.
15716 *
15717 * The DER format uses the most significant bit as a sign bit (& 0x80).
15718 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15719 *
15720 * Examples:
15721 *
15722 * 0 => 0x00
15723 * 1 => 0x01
15724 * -1 => 0xff
15725 * 127 => 0x7f
15726 * -127 => 0x81
15727 * 128 => 0x0080
15728 * -128 => 0x80
15729 * 255 => 0x00ff
15730 * -255 => 0xff01
15731 * 16300 => 0x3fac
15732 * -16300 => 0xc054
15733 * 62300 => 0x00f35c
15734 * -62300 => 0xff0ca4
15735 */
15736 function encode (r, s) {
15737 var lenR = r.length
15738 var lenS = s.length
15739 if (lenR === 0) throw new Error('R length is zero')
15740 if (lenS === 0) throw new Error('S length is zero')
15741 if (lenR > 33) throw new Error('R length is too long')
15742 if (lenS > 33) throw new Error('S length is too long')
15743 if (r[0] & 0x80) throw new Error('R value is negative')
15744 if (s[0] & 0x80) throw new Error('S value is negative')
15745 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15746 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
15747
15748 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
15749
15750 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15751 signature[0] = 0x30
15752 signature[1] = signature.length - 2
15753 signature[2] = 0x02
15754 signature[3] = r.length
15755 r.copy(signature, 4)
15756 signature[4 + lenR] = 0x02
15757 signature[5 + lenR] = s.length
15758 s.copy(signature, 6 + lenR)
15759
15760 return signature
15761 }
15762
15763 module.exports = {
15764 check: check,
15765 decode: decode,
15766 encode: encode
15767 }
15768
15769 },{"safe-buffer":98}],40:[function(require,module,exports){
15770 module.exports={
15771 "OP_FALSE": 0,
15772 "OP_0": 0,
15773 "OP_PUSHDATA1": 76,
15774 "OP_PUSHDATA2": 77,
15775 "OP_PUSHDATA4": 78,
15776 "OP_1NEGATE": 79,
15777 "OP_RESERVED": 80,
15778 "OP_1": 81,
15779 "OP_TRUE": 81,
15780 "OP_2": 82,
15781 "OP_3": 83,
15782 "OP_4": 84,
15783 "OP_5": 85,
15784 "OP_6": 86,
15785 "OP_7": 87,
15786 "OP_8": 88,
15787 "OP_9": 89,
15788 "OP_10": 90,
15789 "OP_11": 91,
15790 "OP_12": 92,
15791 "OP_13": 93,
15792 "OP_14": 94,
15793 "OP_15": 95,
15794 "OP_16": 96,
15795
15796 "OP_NOP": 97,
15797 "OP_VER": 98,
15798 "OP_IF": 99,
15799 "OP_NOTIF": 100,
15800 "OP_VERIF": 101,
15801 "OP_VERNOTIF": 102,
15802 "OP_ELSE": 103,
15803 "OP_ENDIF": 104,
15804 "OP_VERIFY": 105,
15805 "OP_RETURN": 106,
15806
15807 "OP_TOALTSTACK": 107,
15808 "OP_FROMALTSTACK": 108,
15809 "OP_2DROP": 109,
15810 "OP_2DUP": 110,
15811 "OP_3DUP": 111,
15812 "OP_2OVER": 112,
15813 "OP_2ROT": 113,
15814 "OP_2SWAP": 114,
15815 "OP_IFDUP": 115,
15816 "OP_DEPTH": 116,
15817 "OP_DROP": 117,
15818 "OP_DUP": 118,
15819 "OP_NIP": 119,
15820 "OP_OVER": 120,
15821 "OP_PICK": 121,
15822 "OP_ROLL": 122,
15823 "OP_ROT": 123,
15824 "OP_SWAP": 124,
15825 "OP_TUCK": 125,
15826
15827 "OP_CAT": 126,
15828 "OP_SUBSTR": 127,
15829 "OP_LEFT": 128,
15830 "OP_RIGHT": 129,
15831 "OP_SIZE": 130,
15832
15833 "OP_INVERT": 131,
15834 "OP_AND": 132,
15835 "OP_OR": 133,
15836 "OP_XOR": 134,
15837 "OP_EQUAL": 135,
15838 "OP_EQUALVERIFY": 136,
15839 "OP_RESERVED1": 137,
15840 "OP_RESERVED2": 138,
15841
15842 "OP_1ADD": 139,
15843 "OP_1SUB": 140,
15844 "OP_2MUL": 141,
15845 "OP_2DIV": 142,
15846 "OP_NEGATE": 143,
15847 "OP_ABS": 144,
15848 "OP_NOT": 145,
15849 "OP_0NOTEQUAL": 146,
15850 "OP_ADD": 147,
15851 "OP_SUB": 148,
15852 "OP_MUL": 149,
15853 "OP_DIV": 150,
15854 "OP_MOD": 151,
15855 "OP_LSHIFT": 152,
15856 "OP_RSHIFT": 153,
15857
15858 "OP_BOOLAND": 154,
15859 "OP_BOOLOR": 155,
15860 "OP_NUMEQUAL": 156,
15861 "OP_NUMEQUALVERIFY": 157,
15862 "OP_NUMNOTEQUAL": 158,
15863 "OP_LESSTHAN": 159,
15864 "OP_GREATERTHAN": 160,
15865 "OP_LESSTHANOREQUAL": 161,
15866 "OP_GREATERTHANOREQUAL": 162,
15867 "OP_MIN": 163,
15868 "OP_MAX": 164,
15869
15870 "OP_WITHIN": 165,
15871
15872 "OP_RIPEMD160": 166,
15873 "OP_SHA1": 167,
15874 "OP_SHA256": 168,
15875 "OP_HASH160": 169,
15876 "OP_HASH256": 170,
15877 "OP_CODESEPARATOR": 171,
15878 "OP_CHECKSIG": 172,
15879 "OP_CHECKSIGVERIFY": 173,
15880 "OP_CHECKMULTISIG": 174,
15881 "OP_CHECKMULTISIGVERIFY": 175,
15882
15883 "OP_NOP1": 176,
15884 "OP_NOP2": 177,
15885 "OP_CHECKLOCKTIMEVERIFY": 177,
15886
15887 "OP_NOP3": 178,
15888 "OP_NOP4": 179,
15889 "OP_NOP5": 180,
15890 "OP_NOP6": 181,
15891 "OP_NOP7": 182,
15892 "OP_NOP8": 183,
15893 "OP_NOP9": 184,
15894 "OP_NOP10": 185,
15895
15896 "OP_PUBKEYHASH": 253,
15897 "OP_PUBKEY": 254,
15898 "OP_INVALIDOPCODE": 255
15899 }
15900
15901 },{}],41:[function(require,module,exports){
15902 var OPS = require('./index.json')
15903
15904 var map = {}
15905 for (var op in OPS) {
15906 var code = OPS[op]
15907 map[code] = op
15908 }
15909
15910 module.exports = map
15911
15912 },{"./index.json":40}],42:[function(require,module,exports){
15913 var Buffer = require('safe-buffer').Buffer
15914 var bs58check = require('bs58check')
15915 var bscript = require('./script')
15916 var networks = require('./networks')
15917 var typeforce = require('typeforce')
15918 var types = require('./types')
15919
15920 function fromBase58Check (address) {
15921 var payload = bs58check.decode(address)
15922 if (payload.length < 21) throw new TypeError(address + ' is too short')
15923 if (payload.length > 21) throw new TypeError(address + ' is too long')
15924
15925 var version = payload.readUInt8(0)
15926 var hash = payload.slice(1)
15927
15928 return { hash: hash, version: version }
15929 }
15930
15931 function toBase58Check (hash, version) {
15932 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
15933
15934 var payload = Buffer.allocUnsafe(21)
15935 payload.writeUInt8(version, 0)
15936 hash.copy(payload, 1)
15937
15938 return bs58check.encode(payload)
15939 }
15940
15941 function fromOutputScript (outputScript, network) {
15942 network = network || networks.bitcoin
15943
15944 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15945 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
15946
15947 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
15948 }
15949
15950 function toOutputScript (address, network) {
15951 network = network || networks.bitcoin
15952
15953 var decode = fromBase58Check(address)
15954 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15955 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
15956
15957 throw new Error(address + ' has no matching Script')
15958 }
15959
15960 module.exports = {
15961 fromBase58Check: fromBase58Check,
15962 fromOutputScript: fromOutputScript,
15963 toBase58Check: toBase58Check,
15964 toOutputScript: toOutputScript
15965 }
15966
15967 },{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15968 var Buffer = require('safe-buffer').Buffer
15969 var bcrypto = require('./crypto')
15970 var fastMerkleRoot = require('merkle-lib/fastRoot')
15971 var typeforce = require('typeforce')
15972 var types = require('./types')
15973 var varuint = require('varuint-bitcoin')
15974
15975 var Transaction = require('./transaction')
15976
15977 function Block () {
15978 this.version = 1
15979 this.prevHash = null
15980 this.merkleRoot = null
15981 this.timestamp = 0
15982 this.bits = 0
15983 this.nonce = 0
15984 }
15985
15986 Block.fromBuffer = function (buffer) {
15987 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
15988
15989 var offset = 0
15990 function readSlice (n) {
15991 offset += n
15992 return buffer.slice(offset - n, offset)
15993 }
15994
15995 function readUInt32 () {
15996 var i = buffer.readUInt32LE(offset)
15997 offset += 4
15998 return i
15999 }
16000
16001 function readInt32 () {
16002 var i = buffer.readInt32LE(offset)
16003 offset += 4
16004 return i
16005 }
16006
16007 var block = new Block()
16008 block.version = readInt32()
16009 block.prevHash = readSlice(32)
16010 block.merkleRoot = readSlice(32)
16011 block.timestamp = readUInt32()
16012 block.bits = readUInt32()
16013 block.nonce = readUInt32()
16014
16015 if (buffer.length === 80) return block
16016
16017 function readVarInt () {
16018 var vi = varuint.decode(buffer, offset)
16019 offset += varuint.decode.bytes
16020 return vi
16021 }
16022
16023 function readTransaction () {
16024 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16025 offset += tx.byteLength()
16026 return tx
16027 }
16028
16029 var nTransactions = readVarInt()
16030 block.transactions = []
16031
16032 for (var i = 0; i < nTransactions; ++i) {
16033 var tx = readTransaction()
16034 block.transactions.push(tx)
16035 }
16036
16037 return block
16038 }
16039
16040 Block.prototype.byteLength = function (headersOnly) {
16041 if (headersOnly || !this.transactions) return 80
16042
16043 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
16044 return a + x.byteLength()
16045 }, 0)
16046 }
16047
16048 Block.fromHex = function (hex) {
16049 return Block.fromBuffer(Buffer.from(hex, 'hex'))
16050 }
16051
16052 Block.prototype.getHash = function () {
16053 return bcrypto.hash256(this.toBuffer(true))
16054 }
16055
16056 Block.prototype.getId = function () {
16057 return this.getHash().reverse().toString('hex')
16058 }
16059
16060 Block.prototype.getUTCDate = function () {
16061 var date = new Date(0) // epoch
16062 date.setUTCSeconds(this.timestamp)
16063
16064 return date
16065 }
16066
16067 // TODO: buffer, offset compatibility
16068 Block.prototype.toBuffer = function (headersOnly) {
16069 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16070
16071 var offset = 0
16072 function writeSlice (slice) {
16073 slice.copy(buffer, offset)
16074 offset += slice.length
16075 }
16076
16077 function writeInt32 (i) {
16078 buffer.writeInt32LE(i, offset)
16079 offset += 4
16080 }
16081 function writeUInt32 (i) {
16082 buffer.writeUInt32LE(i, offset)
16083 offset += 4
16084 }
16085
16086 writeInt32(this.version)
16087 writeSlice(this.prevHash)
16088 writeSlice(this.merkleRoot)
16089 writeUInt32(this.timestamp)
16090 writeUInt32(this.bits)
16091 writeUInt32(this.nonce)
16092
16093 if (headersOnly || !this.transactions) return buffer
16094
16095 varuint.encode(this.transactions.length, buffer, offset)
16096 offset += varuint.encode.bytes
16097
16098 this.transactions.forEach(function (tx) {
16099 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16100 tx.toBuffer(buffer, offset)
16101 offset += txSize
16102 })
16103
16104 return buffer
16105 }
16106
16107 Block.prototype.toHex = function (headersOnly) {
16108 return this.toBuffer(headersOnly).toString('hex')
16109 }
16110
16111 Block.calculateTarget = function (bits) {
16112 var exponent = ((bits & 0xff000000) >> 24) - 3
16113 var mantissa = bits & 0x007fffff
16114 var target = Buffer.alloc(32, 0)
16115 target.writeUInt32BE(mantissa, 28 - exponent)
16116 return target
16117 }
16118
16119 Block.calculateMerkleRoot = function (transactions) {
16120 typeforce([{ getHash: types.Function }], transactions)
16121 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
16122
16123 var hashes = transactions.map(function (transaction) {
16124 return transaction.getHash()
16125 })
16126
16127 return fastMerkleRoot(hashes, bcrypto.hash256)
16128 }
16129
16130 Block.prototype.checkMerkleRoot = function () {
16131 if (!this.transactions) return false
16132
16133 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16134 return this.merkleRoot.compare(actualMerkleRoot) === 0
16135 }
16136
16137 Block.prototype.checkProofOfWork = function () {
16138 var hash = this.getHash().reverse()
16139 var target = Block.calculateTarget(this.bits)
16140
16141 return hash.compare(target) <= 0
16142 }
16143
16144 module.exports = Block
16145
16146 },{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16147 var pushdata = require('pushdata-bitcoin')
16148 var varuint = require('varuint-bitcoin')
16149
16150 // https://github.com/feross/buffer/blob/master/index.js#L1127
16151 function verifuint (value, max) {
16152 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16153 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16154 if (value > max) throw new Error('RangeError: value out of range')
16155 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16156 }
16157
16158 function readUInt64LE (buffer, offset) {
16159 var a = buffer.readUInt32LE(offset)
16160 var b = buffer.readUInt32LE(offset + 4)
16161 b *= 0x100000000
16162
16163 verifuint(b + a, 0x001fffffffffffff)
16164
16165 return b + a
16166 }
16167
16168 function writeUInt64LE (buffer, value, offset) {
16169 verifuint(value, 0x001fffffffffffff)
16170
16171 buffer.writeInt32LE(value & -1, offset)
16172 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16173 return offset + 8
16174 }
16175
16176 // TODO: remove in 4.0.0?
16177 function readVarInt (buffer, offset) {
16178 var result = varuint.decode(buffer, offset)
16179
16180 return {
16181 number: result,
16182 size: varuint.decode.bytes
16183 }
16184 }
16185
16186 // TODO: remove in 4.0.0?
16187 function writeVarInt (buffer, number, offset) {
16188 varuint.encode(number, buffer, offset)
16189 return varuint.encode.bytes
16190 }
16191
16192 module.exports = {
16193 pushDataSize: pushdata.encodingLength,
16194 readPushDataInt: pushdata.decode,
16195 readUInt64LE: readUInt64LE,
16196 readVarInt: readVarInt,
16197 varIntBuffer: varuint.encode,
16198 varIntSize: varuint.encodingLength,
16199 writePushDataInt: pushdata.encode,
16200 writeUInt64LE: writeUInt64LE,
16201 writeVarInt: writeVarInt
16202 }
16203
16204 },{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16205 var createHash = require('create-hash')
16206
16207 function ripemd160 (buffer) {
16208 return createHash('rmd160').update(buffer).digest()
16209 }
16210
16211 function sha1 (buffer) {
16212 return createHash('sha1').update(buffer).digest()
16213 }
16214
16215 function sha256 (buffer) {
16216 return createHash('sha256').update(buffer).digest()
16217 }
16218
16219 function hash160 (buffer) {
16220 return ripemd160(sha256(buffer))
16221 }
16222
16223 function hash256 (buffer) {
16224 return sha256(sha256(buffer))
16225 }
16226
16227 module.exports = {
16228 hash160: hash160,
16229 hash256: hash256,
16230 ripemd160: ripemd160,
16231 sha1: sha1,
16232 sha256: sha256
16233 }
16234
16235 },{"create-hash":82}],46:[function(require,module,exports){
16236 var Buffer = require('safe-buffer').Buffer
16237 var createHmac = require('create-hmac')
16238 var typeforce = require('typeforce')
16239 var types = require('./types')
16240
16241 var BigInteger = require('bigi')
16242 var ECSignature = require('./ecsignature')
16243
16244 var ZERO = Buffer.alloc(1, 0)
16245 var ONE = Buffer.alloc(1, 1)
16246
16247 var ecurve = require('ecurve')
16248 var secp256k1 = ecurve.getCurveByName('secp256k1')
16249
16250 // https://tools.ietf.org/html/rfc6979#section-3.2
16251 function deterministicGenerateK (hash, x, checkSig) {
16252 typeforce(types.tuple(
16253 types.Hash256bit,
16254 types.Buffer256bit,
16255 types.Function
16256 ), arguments)
16257
16258 // Step A, ignored as hash already provided
16259 // Step B
16260 // Step C
16261 var k = Buffer.alloc(32, 0)
16262 var v = Buffer.alloc(32, 1)
16263
16264 // Step D
16265 k = createHmac('sha256', k)
16266 .update(v)
16267 .update(ZERO)
16268 .update(x)
16269 .update(hash)
16270 .digest()
16271
16272 // Step E
16273 v = createHmac('sha256', k).update(v).digest()
16274
16275 // Step F
16276 k = createHmac('sha256', k)
16277 .update(v)
16278 .update(ONE)
16279 .update(x)
16280 .update(hash)
16281 .digest()
16282
16283 // Step G
16284 v = createHmac('sha256', k).update(v).digest()
16285
16286 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16287 // Step H2b
16288 v = createHmac('sha256', k).update(v).digest()
16289
16290 var T = BigInteger.fromBuffer(v)
16291
16292 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16293 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16294 k = createHmac('sha256', k)
16295 .update(v)
16296 .update(ZERO)
16297 .digest()
16298
16299 v = createHmac('sha256', k).update(v).digest()
16300
16301 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16302 // Step H2b again
16303 v = createHmac('sha256', k).update(v).digest()
16304 T = BigInteger.fromBuffer(v)
16305 }
16306
16307 return T
16308 }
16309
16310 var N_OVER_TWO = secp256k1.n.shiftRight(1)
16311
16312 function sign (hash, d) {
16313 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16314
16315 var x = d.toBuffer(32)
16316 var e = BigInteger.fromBuffer(hash)
16317 var n = secp256k1.n
16318 var G = secp256k1.G
16319
16320 var r, s
16321 deterministicGenerateK(hash, x, function (k) {
16322 var Q = G.multiply(k)
16323
16324 if (secp256k1.isInfinity(Q)) return false
16325
16326 r = Q.affineX.mod(n)
16327 if (r.signum() === 0) return false
16328
16329 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16330 if (s.signum() === 0) return false
16331
16332 return true
16333 })
16334
16335 // enforce low S values, see bip62: 'low s values in signatures'
16336 if (s.compareTo(N_OVER_TWO) > 0) {
16337 s = n.subtract(s)
16338 }
16339
16340 return new ECSignature(r, s)
16341 }
16342
16343 function verify (hash, signature, Q) {
16344 typeforce(types.tuple(
16345 types.Hash256bit,
16346 types.ECSignature,
16347 types.ECPoint
16348 ), arguments)
16349
16350 var n = secp256k1.n
16351 var G = secp256k1.G
16352
16353 var r = signature.r
16354 var s = signature.s
16355
16356 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16357 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16358 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
16359
16360 // 1.4.2 H = Hash(M), already done by the user
16361 // 1.4.3 e = H
16362 var e = BigInteger.fromBuffer(hash)
16363
16364 // Compute s^-1
16365 var sInv = s.modInverse(n)
16366
16367 // 1.4.4 Compute u1 = es^−1 mod n
16368 // u2 = rs^−1 mod n
16369 var u1 = e.multiply(sInv).mod(n)
16370 var u2 = r.multiply(sInv).mod(n)
16371
16372 // 1.4.5 Compute R = (xR, yR)
16373 // R = u1G + u2Q
16374 var R = G.multiplyTwo(u1, Q, u2)
16375
16376 // 1.4.5 (cont.) Enforce R is not at infinity
16377 if (secp256k1.isInfinity(R)) return false
16378
16379 // 1.4.6 Convert the field element R.x to an integer
16380 var xR = R.affineX
16381
16382 // 1.4.7 Set v = xR mod n
16383 var v = xR.mod(n)
16384
16385 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16386 return v.equals(r)
16387 }
16388
16389 module.exports = {
16390 deterministicGenerateK: deterministicGenerateK,
16391 sign: sign,
16392 verify: verify,
16393
16394 // TODO: remove
16395 __curve: secp256k1
16396 }
16397
16398 },{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16399 var baddress = require('./address')
16400 var bcrypto = require('./crypto')
16401 var ecdsa = require('./ecdsa')
16402 var randomBytes = require('randombytes')
16403 var typeforce = require('typeforce')
16404 var types = require('./types')
16405 var wif = require('wif')
16406
16407 var NETWORKS = require('./networks')
16408 var BigInteger = require('bigi')
16409
16410 var ecurve = require('ecurve')
16411 var secp256k1 = ecdsa.__curve
16412
16413 function ECPair (d, Q, options) {
16414 if (options) {
16415 typeforce({
16416 compressed: types.maybe(types.Boolean),
16417 network: types.maybe(types.Network)
16418 }, options)
16419 }
16420
16421 options = options || {}
16422
16423 if (d) {
16424 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16425 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16426 if (Q) throw new TypeError('Unexpected publicKey parameter')
16427
16428 this.d = d
16429 } else {
16430 typeforce(types.ECPoint, Q)
16431
16432 this.__Q = Q
16433 }
16434
16435 this.compressed = options.compressed === undefined ? true : options.compressed
16436 this.network = options.network || NETWORKS.bitcoin
16437 }
16438
16439 Object.defineProperty(ECPair.prototype, 'Q', {
16440 get: function () {
16441 if (!this.__Q && this.d) {
16442 this.__Q = secp256k1.G.multiply(this.d)
16443 }
16444
16445 return this.__Q
16446 }
16447 })
16448
16449 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16450 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16451
16452 return new ECPair(null, Q, {
16453 compressed: Q.compressed,
16454 network: network
16455 })
16456 }
16457
16458 ECPair.fromWIF = function (string, network) {
16459 var decoded = wif.decode(string)
16460 var version = decoded.version
16461
16462 // list of networks?
16463 if (types.Array(network)) {
16464 network = network.filter(function (x) {
16465 return version === x.wif
16466 }).pop()
16467
16468 if (!network) throw new Error('Unknown network version')
16469
16470 // otherwise, assume a network object (or default to bitcoin)
16471 } else {
16472 network = network || NETWORKS.bitcoin
16473
16474 if (version !== network.wif) throw new Error('Invalid network version')
16475 }
16476
16477 var d = BigInteger.fromBuffer(decoded.privateKey)
16478
16479 return new ECPair(d, null, {
16480 compressed: decoded.compressed,
16481 network: network
16482 })
16483 }
16484
16485 ECPair.makeRandom = function (options) {
16486 options = options || {}
16487
16488 var rng = options.rng || randomBytes
16489
16490 var d
16491 do {
16492 var buffer = rng(32)
16493 typeforce(types.Buffer256bit, buffer)
16494
16495 d = BigInteger.fromBuffer(buffer)
16496 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16497
16498 return new ECPair(d, null, options)
16499 }
16500
16501 ECPair.prototype.getAddress = function () {
16502 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16503 }
16504
16505 ECPair.prototype.getNetwork = function () {
16506 return this.network
16507 }
16508
16509 ECPair.prototype.getPublicKeyBuffer = function () {
16510 return this.Q.getEncoded(this.compressed)
16511 }
16512
16513 ECPair.prototype.sign = function (hash) {
16514 if (!this.d) throw new Error('Missing private key')
16515
16516 return ecdsa.sign(hash, this.d)
16517 }
16518
16519 ECPair.prototype.toWIF = function () {
16520 if (!this.d) throw new Error('Missing private key')
16521
16522 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
16523 }
16524
16525 ECPair.prototype.verify = function (hash, signature) {
16526 return ecdsa.verify(hash, signature, this.Q)
16527 }
16528
16529 module.exports = ECPair
16530
16531 },{"./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){
16532 (function (Buffer){
16533 var bip66 = require('bip66')
16534 var typeforce = require('typeforce')
16535 var types = require('./types')
16536
16537 var BigInteger = require('bigi')
16538
16539 function ECSignature (r, s) {
16540 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16541
16542 this.r = r
16543 this.s = s
16544 }
16545
16546 ECSignature.parseCompact = function (buffer) {
16547 if (buffer.length !== 65) throw new Error('Invalid signature length')
16548
16549 var flagByte = buffer.readUInt8(0) - 27
16550 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16551
16552 var compressed = !!(flagByte & 4)
16553 var recoveryParam = flagByte & 3
16554
16555 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16556 var s = BigInteger.fromBuffer(buffer.slice(33))
16557
16558 return {
16559 compressed: compressed,
16560 i: recoveryParam,
16561 signature: new ECSignature(r, s)
16562 }
16563 }
16564
16565 ECSignature.fromDER = function (buffer) {
16566 var decode = bip66.decode(buffer)
16567 var r = BigInteger.fromDERInteger(decode.r)
16568 var s = BigInteger.fromDERInteger(decode.s)
16569
16570 return new ECSignature(r, s)
16571 }
16572
16573 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16574 ECSignature.parseScriptSignature = function (buffer) {
16575 var hashType = buffer.readUInt8(buffer.length - 1)
16576 var hashTypeMod = hashType & ~0x80
16577
16578 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16579
16580 return {
16581 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16582 hashType: hashType
16583 }
16584 }
16585
16586 ECSignature.prototype.toCompact = function (i, compressed) {
16587 if (compressed) {
16588 i += 4
16589 }
16590
16591 i += 27
16592
16593 var buffer = Buffer.alloc(65)
16594 buffer.writeUInt8(i, 0)
16595 this.r.toBuffer(32).copy(buffer, 1)
16596 this.s.toBuffer(32).copy(buffer, 33)
16597
16598 return buffer
16599 }
16600
16601 ECSignature.prototype.toDER = function () {
16602 var r = Buffer.from(this.r.toDERInteger())
16603 var s = Buffer.from(this.s.toDERInteger())
16604
16605 return bip66.encode(r, s)
16606 }
16607
16608 ECSignature.prototype.toScriptSignature = function (hashType) {
16609 var hashTypeMod = hashType & ~0x80
16610 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16611
16612 var hashTypeBuffer = Buffer.alloc(1)
16613 hashTypeBuffer.writeUInt8(hashType, 0)
16614
16615 return Buffer.concat([this.toDER(), hashTypeBuffer])
16616 }
16617
16618 module.exports = ECSignature
16619
16620 }).call(this,require("buffer").Buffer)
16621 },{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16622 var Buffer = require('safe-buffer').Buffer
16623 var base58check = require('bs58check')
16624 var bcrypto = require('./crypto')
16625 var createHmac = require('create-hmac')
16626 var typeforce = require('typeforce')
16627 var types = require('./types')
16628 var NETWORKS = require('./networks')
16629
16630 var BigInteger = require('bigi')
16631 var ECPair = require('./ecpair')
16632
16633 var ecurve = require('ecurve')
16634 var curve = ecurve.getCurveByName('secp256k1')
16635
16636 function HDNode (keyPair, chainCode) {
16637 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16638
16639 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16640
16641 this.keyPair = keyPair
16642 this.chainCode = chainCode
16643 this.depth = 0
16644 this.index = 0
16645 this.parentFingerprint = 0x00000000
16646 }
16647
16648 HDNode.HIGHEST_BIT = 0x80000000
16649 HDNode.LENGTH = 78
16650 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16651
16652 HDNode.fromSeedBuffer = function (seed, network) {
16653 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16654
16655 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16656 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
16657
16658 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16659 var IL = I.slice(0, 32)
16660 var IR = I.slice(32)
16661
16662 // In case IL is 0 or >= n, the master key is invalid
16663 // This is handled by the ECPair constructor
16664 var pIL = BigInteger.fromBuffer(IL)
16665 var keyPair = new ECPair(pIL, null, {
16666 network: network
16667 })
16668
16669 return new HDNode(keyPair, IR)
16670 }
16671
16672 HDNode.fromSeedHex = function (hex, network) {
16673 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16674 }
16675
16676 HDNode.fromBase58 = function (string, networks) {
16677 var buffer = base58check.decode(string)
16678 if (buffer.length !== 78) throw new Error('Invalid buffer length')
16679
16680 // 4 bytes: version bytes
16681 var version = buffer.readUInt32BE(0)
16682 var network
16683
16684 // list of networks?
16685 if (Array.isArray(networks)) {
16686 network = networks.filter(function (x) {
16687 return version === x.bip32.private ||
16688 version === x.bip32.public
16689 }).pop()
16690
16691 if (!network) throw new Error('Unknown network version')
16692
16693 // otherwise, assume a network object (or default to bitcoin)
16694 } else {
16695 network = networks || NETWORKS.bitcoin
16696 }
16697
16698 if (version !== network.bip32.private &&
16699 version !== network.bip32.public) throw new Error('Invalid network version')
16700
16701 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16702 var depth = buffer[4]
16703
16704 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16705 var parentFingerprint = buffer.readUInt32BE(5)
16706 if (depth === 0) {
16707 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16708 }
16709
16710 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16711 // This is encoded in MSB order. (0x00000000 if master key)
16712 var index = buffer.readUInt32BE(9)
16713 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16714
16715 // 32 bytes: the chain code
16716 var chainCode = buffer.slice(13, 45)
16717 var keyPair
16718
16719 // 33 bytes: private key data (0x00 + k)
16720 if (version === network.bip32.private) {
16721 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16722
16723 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16724 keyPair = new ECPair(d, null, { network: network })
16725
16726 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16727 } else {
16728 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16729 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16730
16731 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16732 // If not, the extended public key is invalid.
16733 curve.validate(Q)
16734
16735 keyPair = new ECPair(null, Q, { network: network })
16736 }
16737
16738 var hd = new HDNode(keyPair, chainCode)
16739 hd.depth = depth
16740 hd.index = index
16741 hd.parentFingerprint = parentFingerprint
16742
16743 return hd
16744 }
16745
16746 HDNode.prototype.getAddress = function () {
16747 return this.keyPair.getAddress()
16748 }
16749
16750 HDNode.prototype.getIdentifier = function () {
16751 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16752 }
16753
16754 HDNode.prototype.getFingerprint = function () {
16755 return this.getIdentifier().slice(0, 4)
16756 }
16757
16758 HDNode.prototype.getNetwork = function () {
16759 return this.keyPair.getNetwork()
16760 }
16761
16762 HDNode.prototype.getPublicKeyBuffer = function () {
16763 return this.keyPair.getPublicKeyBuffer()
16764 }
16765
16766 HDNode.prototype.neutered = function () {
16767 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16768 network: this.keyPair.network
16769 })
16770
16771 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16772 neutered.depth = this.depth
16773 neutered.index = this.index
16774 neutered.parentFingerprint = this.parentFingerprint
16775
16776 return neutered
16777 }
16778
16779 HDNode.prototype.sign = function (hash) {
16780 return this.keyPair.sign(hash)
16781 }
16782
16783 HDNode.prototype.verify = function (hash, signature) {
16784 return this.keyPair.verify(hash, signature)
16785 }
16786
16787 HDNode.prototype.toBase58 = function (__isPrivate) {
16788 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
16789
16790 // Version
16791 var network = this.keyPair.network
16792 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16793 var buffer = Buffer.allocUnsafe(78)
16794
16795 // 4 bytes: version bytes
16796 buffer.writeUInt32BE(version, 0)
16797
16798 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16799 buffer.writeUInt8(this.depth, 4)
16800
16801 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16802 buffer.writeUInt32BE(this.parentFingerprint, 5)
16803
16804 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16805 // This is encoded in big endian. (0x00000000 if master key)
16806 buffer.writeUInt32BE(this.index, 9)
16807
16808 // 32 bytes: the chain code
16809 this.chainCode.copy(buffer, 13)
16810
16811 // 33 bytes: the public key or private key data
16812 if (!this.isNeutered()) {
16813 // 0x00 + k for private keys
16814 buffer.writeUInt8(0, 45)
16815 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16816
16817 // 33 bytes: the public key
16818 } else {
16819 // X9.62 encoding for public keys
16820 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16821 }
16822
16823 return base58check.encode(buffer)
16824 }
16825
16826 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16827 HDNode.prototype.derive = function (index) {
16828 typeforce(types.UInt32, index)
16829
16830 var isHardened = index >= HDNode.HIGHEST_BIT
16831 var data = Buffer.allocUnsafe(37)
16832
16833 // Hardened child
16834 if (isHardened) {
16835 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16836
16837 // data = 0x00 || ser256(kpar) || ser32(index)
16838 data[0] = 0x00
16839 this.keyPair.d.toBuffer(32).copy(data, 1)
16840 data.writeUInt32BE(index, 33)
16841
16842 // Normal child
16843 } else {
16844 // data = serP(point(kpar)) || ser32(index)
16845 // = serP(Kpar) || ser32(index)
16846 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16847 data.writeUInt32BE(index, 33)
16848 }
16849
16850 var I = createHmac('sha512', this.chainCode).update(data).digest()
16851 var IL = I.slice(0, 32)
16852 var IR = I.slice(32)
16853
16854 var pIL = BigInteger.fromBuffer(IL)
16855
16856 // In case parse256(IL) >= n, proceed with the next value for i
16857 if (pIL.compareTo(curve.n) >= 0) {
16858 return this.derive(index + 1)
16859 }
16860
16861 // Private parent key -> private child key
16862 var derivedKeyPair
16863 if (!this.isNeutered()) {
16864 // ki = parse256(IL) + kpar (mod n)
16865 var ki = pIL.add(this.keyPair.d).mod(curve.n)
16866
16867 // In case ki == 0, proceed with the next value for i
16868 if (ki.signum() === 0) {
16869 return this.derive(index + 1)
16870 }
16871
16872 derivedKeyPair = new ECPair(ki, null, {
16873 network: this.keyPair.network
16874 })
16875
16876 // Public parent key -> public child key
16877 } else {
16878 // Ki = point(parse256(IL)) + Kpar
16879 // = G*IL + Kpar
16880 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16881
16882 // In case Ki is the point at infinity, proceed with the next value for i
16883 if (curve.isInfinity(Ki)) {
16884 return this.derive(index + 1)
16885 }
16886
16887 derivedKeyPair = new ECPair(null, Ki, {
16888 network: this.keyPair.network
16889 })
16890 }
16891
16892 var hd = new HDNode(derivedKeyPair, IR)
16893 hd.depth = this.depth + 1
16894 hd.index = index
16895 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16896
16897 return hd
16898 }
16899
16900 HDNode.prototype.deriveHardened = function (index) {
16901 typeforce(types.UInt31, index)
16902
16903 // Only derives hardened private keys by default
16904 return this.derive(index + HDNode.HIGHEST_BIT)
16905 }
16906
16907 // Private === not neutered
16908 // Public === neutered
16909 HDNode.prototype.isNeutered = function () {
16910 return !(this.keyPair.d)
16911 }
16912
16913 HDNode.prototype.derivePath = function (path) {
16914 typeforce(types.BIP32Path, path)
16915
16916 var splitPath = path.split('/')
16917 if (splitPath[0] === 'm') {
16918 if (this.parentFingerprint) {
16919 throw new Error('Not a master node')
16920 }
16921
16922 splitPath = splitPath.slice(1)
16923 }
16924
16925 return splitPath.reduce(function (prevHd, indexStr) {
16926 var index
16927 if (indexStr.slice(-1) === "'") {
16928 index = parseInt(indexStr.slice(0, -1), 10)
16929 return prevHd.deriveHardened(index)
16930 } else {
16931 index = parseInt(indexStr, 10)
16932 return prevHd.derive(index)
16933 }
16934 }, this)
16935 }
16936
16937 module.exports = HDNode
16938
16939 },{"./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){
16940 module.exports = {
16941 Block: require('./block'),
16942 ECPair: require('./ecpair'),
16943 ECSignature: require('./ecsignature'),
16944 HDNode: require('./hdnode'),
16945 Transaction: require('./transaction'),
16946 TransactionBuilder: require('./transaction_builder'),
16947
16948 address: require('./address'),
16949 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16950 crypto: require('./crypto'),
16951 networks: require('./networks'),
16952 opcodes: require('bitcoin-ops'),
16953 script: require('./script')
16954 }
16955
16956 },{"./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){
16957 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16958 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
16959
16960 module.exports = {
16961 bitcoin: {
16962 messagePrefix: '\x18Bitcoin Signed Message:\n',
16963 bip32: {
16964 public: 0x0488b21e,
16965 private: 0x0488ade4
16966 },
16967 pubKeyHash: 0x00,
16968 scriptHash: 0x05,
16969 wif: 0x80
16970 },
16971 testnet: {
16972 messagePrefix: '\x18Bitcoin Signed Message:\n',
16973 bip32: {
16974 public: 0x043587cf,
16975 private: 0x04358394
16976 },
16977 pubKeyHash: 0x6f,
16978 scriptHash: 0xc4,
16979 wif: 0xef
16980 },
16981 litecoin: {
16982 messagePrefix: '\x19Litecoin Signed Message:\n',
16983 bip32: {
16984 public: 0x0488b21e,
16985 private: 0x0488ade4,
16986 },
16987 pubKeyHash: 0x30,
16988 scriptHash: 0x32,
16989 wif: 0xb0
16990 },
16991 litecoinLtub: {
16992 messagePrefix: '\x19Litecoin Signed Message:\n',
16993 bip32: {
16994 public: 0x019da462,
16995 private: 0x019d9cfe
16996 },
16997 pubKeyHash: 0x30,
16998 scriptHash: 0x32,
16999 wif: 0xb0
17000 }
17001 }
17002
17003 },{}],52:[function(require,module,exports){
17004 var Buffer = require('safe-buffer').Buffer
17005 var bip66 = require('bip66')
17006 var pushdata = require('pushdata-bitcoin')
17007 var typeforce = require('typeforce')
17008 var types = require('./types')
17009 var scriptNumber = require('./script_number')
17010
17011 var OPS = require('bitcoin-ops')
17012 var REVERSE_OPS = require('bitcoin-ops/map')
17013 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17014
17015 function isOPInt (value) {
17016 return types.Number(value) &&
17017 ((value === OPS.OP_0) ||
17018 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
17019 (value === OPS.OP_1NEGATE))
17020 }
17021
17022 function isPushOnlyChunk (value) {
17023 return types.Buffer(value) || isOPInt(value)
17024 }
17025
17026 function isPushOnly (value) {
17027 return types.Array(value) && value.every(isPushOnlyChunk)
17028 }
17029
17030 function compile (chunks) {
17031 // TODO: remove me
17032 if (Buffer.isBuffer(chunks)) return chunks
17033
17034 typeforce(types.Array, chunks)
17035
17036 var bufferSize = chunks.reduce(function (accum, chunk) {
17037 // data chunk
17038 if (Buffer.isBuffer(chunk)) {
17039 // adhere to BIP62.3, minimal push policy
17040 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
17041 return accum + 1
17042 }
17043
17044 return accum + pushdata.encodingLength(chunk.length) + chunk.length
17045 }
17046
17047 // opcode
17048 return accum + 1
17049 }, 0.0)
17050
17051 var buffer = Buffer.allocUnsafe(bufferSize)
17052 var offset = 0
17053
17054 chunks.forEach(function (chunk) {
17055 // data chunk
17056 if (Buffer.isBuffer(chunk)) {
17057 // adhere to BIP62.3, minimal push policy
17058 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
17059 var opcode = OP_INT_BASE + chunk[0]
17060 buffer.writeUInt8(opcode, offset)
17061 offset += 1
17062 return
17063 }
17064
17065 if (chunk.length === 1 && chunk[0] === 0x81) {
17066 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17067 offset += 1
17068 return
17069 }
17070
17071 offset += pushdata.encode(buffer, chunk.length, offset)
17072
17073 chunk.copy(buffer, offset)
17074 offset += chunk.length
17075
17076 // opcode
17077 } else {
17078 buffer.writeUInt8(chunk, offset)
17079 offset += 1
17080 }
17081 })
17082
17083 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17084 return buffer
17085 }
17086
17087 function decompile (buffer) {
17088 // TODO: remove me
17089 if (types.Array(buffer)) return buffer
17090
17091 typeforce(types.Buffer, buffer)
17092
17093 var chunks = []
17094 var i = 0
17095
17096 while (i < buffer.length) {
17097 var opcode = buffer[i]
17098
17099 // data chunk
17100 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17101 var d = pushdata.decode(buffer, i)
17102
17103 // did reading a pushDataInt fail? empty script
17104 if (d === null) return []
17105 i += d.size
17106
17107 // attempt to read too much data? empty script
17108 if (i + d.number > buffer.length) return []
17109
17110 var data = buffer.slice(i, i + d.number)
17111 i += d.number
17112
17113 chunks.push(data)
17114
17115 // opcode
17116 } else {
17117 chunks.push(opcode)
17118
17119 i += 1
17120 }
17121 }
17122
17123 return chunks
17124 }
17125
17126 function toASM (chunks) {
17127 if (Buffer.isBuffer(chunks)) {
17128 chunks = decompile(chunks)
17129 }
17130
17131 return chunks.map(function (chunk) {
17132 // data?
17133 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
17134
17135 // opcode!
17136 return REVERSE_OPS[chunk]
17137 }).join(' ')
17138 }
17139
17140 function fromASM (asm) {
17141 typeforce(types.String, asm)
17142
17143 return compile(asm.split(' ').map(function (chunkStr) {
17144 // opcode?
17145 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17146 typeforce(types.Hex, chunkStr)
17147
17148 // data!
17149 return Buffer.from(chunkStr, 'hex')
17150 }))
17151 }
17152
17153 function toStack (chunks) {
17154 chunks = decompile(chunks)
17155 typeforce(isPushOnly, chunks)
17156
17157 return chunks.map(function (op) {
17158 if (Buffer.isBuffer(op)) return op
17159 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17160
17161 return scriptNumber.encode(op - OP_INT_BASE)
17162 })
17163 }
17164
17165 function isCanonicalPubKey (buffer) {
17166 if (!Buffer.isBuffer(buffer)) return false
17167 if (buffer.length < 33) return false
17168
17169 switch (buffer[0]) {
17170 case 0x02:
17171 case 0x03:
17172 return buffer.length === 33
17173 case 0x04:
17174 return buffer.length === 65
17175 }
17176
17177 return false
17178 }
17179
17180 function isDefinedHashType (hashType) {
17181 var hashTypeMod = hashType & ~0x80
17182
17183 // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17184 return hashTypeMod > 0x00 && hashTypeMod < 0x04
17185 }
17186
17187 function isCanonicalSignature (buffer) {
17188 if (!Buffer.isBuffer(buffer)) return false
17189 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
17190
17191 return bip66.check(buffer.slice(0, -1))
17192 }
17193
17194 module.exports = {
17195 compile: compile,
17196 decompile: decompile,
17197 fromASM: fromASM,
17198 toASM: toASM,
17199 toStack: toStack,
17200
17201 number: require('./script_number'),
17202
17203 isCanonicalPubKey: isCanonicalPubKey,
17204 isCanonicalSignature: isCanonicalSignature,
17205 isPushOnly: isPushOnly,
17206 isDefinedHashType: isDefinedHashType
17207 }
17208
17209 var templates = require('./templates')
17210 for (var key in templates) {
17211 module.exports[key] = templates[key]
17212 }
17213
17214 },{"./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){
17215 var Buffer = require('safe-buffer').Buffer
17216
17217 function decode (buffer, maxLength, minimal) {
17218 maxLength = maxLength || 4
17219 minimal = minimal === undefined ? true : minimal
17220
17221 var length = buffer.length
17222 if (length === 0) return 0
17223 if (length > maxLength) throw new TypeError('Script number overflow')
17224 if (minimal) {
17225 if ((buffer[length - 1] & 0x7f) === 0) {
17226 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17227 }
17228 }
17229
17230 // 40-bit
17231 if (length === 5) {
17232 var a = buffer.readUInt32LE(0)
17233 var b = buffer.readUInt8(4)
17234
17235 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17236 return (b * 0x100000000) + a
17237 }
17238
17239 var result = 0
17240
17241 // 32-bit / 24-bit / 16-bit / 8-bit
17242 for (var i = 0; i < length; ++i) {
17243 result |= buffer[i] << (8 * i)
17244 }
17245
17246 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17247 return result
17248 }
17249
17250 function scriptNumSize (i) {
17251 return i > 0x7fffffff ? 5
17252 : i > 0x7fffff ? 4
17253 : i > 0x7fff ? 3
17254 : i > 0x7f ? 2
17255 : i > 0x00 ? 1
17256 : 0
17257 }
17258
17259 function encode (number) {
17260 var value = Math.abs(number)
17261 var size = scriptNumSize(value)
17262 var buffer = Buffer.allocUnsafe(size)
17263 var negative = number < 0
17264
17265 for (var i = 0; i < size; ++i) {
17266 buffer.writeUInt8(value & 0xff, i)
17267 value >>= 8
17268 }
17269
17270 if (buffer[size - 1] & 0x80) {
17271 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17272 } else if (negative) {
17273 buffer[size - 1] |= 0x80
17274 }
17275
17276 return buffer
17277 }
17278
17279 module.exports = {
17280 decode: decode,
17281 encode: encode
17282 }
17283
17284 },{"safe-buffer":98}],54:[function(require,module,exports){
17285 var decompile = require('../script').decompile
17286 var multisig = require('./multisig')
17287 var nullData = require('./nulldata')
17288 var pubKey = require('./pubkey')
17289 var pubKeyHash = require('./pubkeyhash')
17290 var scriptHash = require('./scripthash')
17291 var witnessPubKeyHash = require('./witnesspubkeyhash')
17292 var witnessScriptHash = require('./witnessscripthash')
17293 var witnessCommitment = require('./witnesscommitment')
17294
17295 var types = {
17296 MULTISIG: 'multisig',
17297 NONSTANDARD: 'nonstandard',
17298 NULLDATA: 'nulldata',
17299 P2PK: 'pubkey',
17300 P2PKH: 'pubkeyhash',
17301 P2SH: 'scripthash',
17302 P2WPKH: 'witnesspubkeyhash',
17303 P2WSH: 'witnessscripthash',
17304 WITNESS_COMMITMENT: 'witnesscommitment'
17305 }
17306
17307 function classifyOutput (script) {
17308 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17309 if (witnessScriptHash.output.check(script)) return types.P2WSH
17310 if (pubKeyHash.output.check(script)) return types.P2PKH
17311 if (scriptHash.output.check(script)) return types.P2SH
17312
17313 // XXX: optimization, below functions .decompile before use
17314 var chunks = decompile(script)
17315 if (multisig.output.check(chunks)) return types.MULTISIG
17316 if (pubKey.output.check(chunks)) return types.P2PK
17317 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17318 if (nullData.output.check(chunks)) return types.NULLDATA
17319
17320 return types.NONSTANDARD
17321 }
17322
17323 function classifyInput (script, allowIncomplete) {
17324 // XXX: optimization, below functions .decompile before use
17325 var chunks = decompile(script)
17326
17327 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17328 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17329 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17330 if (pubKey.input.check(chunks)) return types.P2PK
17331
17332 return types.NONSTANDARD
17333 }
17334
17335 function classifyWitness (script, allowIncomplete) {
17336 // XXX: optimization, below functions .decompile before use
17337 var chunks = decompile(script)
17338
17339 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17340 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17341
17342 return types.NONSTANDARD
17343 }
17344
17345 module.exports = {
17346 classifyInput: classifyInput,
17347 classifyOutput: classifyOutput,
17348 classifyWitness: classifyWitness,
17349 multisig: multisig,
17350 nullData: nullData,
17351 pubKey: pubKey,
17352 pubKeyHash: pubKeyHash,
17353 scriptHash: scriptHash,
17354 witnessPubKeyHash: witnessPubKeyHash,
17355 witnessScriptHash: witnessScriptHash,
17356 witnessCommitment: witnessCommitment,
17357 types: types
17358 }
17359
17360 },{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17361 module.exports = {
17362 input: require('./input'),
17363 output: require('./output')
17364 }
17365
17366 },{"./input":56,"./output":57}],56:[function(require,module,exports){
17367 // OP_0 [signatures ...]
17368
17369 var Buffer = require('safe-buffer').Buffer
17370 var bscript = require('../../script')
17371 var typeforce = require('typeforce')
17372 var OPS = require('bitcoin-ops')
17373
17374 function partialSignature (value) {
17375 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17376 }
17377
17378 function check (script, allowIncomplete) {
17379 var chunks = bscript.decompile(script)
17380 if (chunks.length < 2) return false
17381 if (chunks[0] !== OPS.OP_0) return false
17382
17383 if (allowIncomplete) {
17384 return chunks.slice(1).every(partialSignature)
17385 }
17386
17387 return chunks.slice(1).every(bscript.isCanonicalSignature)
17388 }
17389 check.toJSON = function () { return 'multisig input' }
17390
17391 var EMPTY_BUFFER = Buffer.allocUnsafe(0)
17392
17393 function encodeStack (signatures, scriptPubKey) {
17394 typeforce([partialSignature], signatures)
17395
17396 if (scriptPubKey) {
17397 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17398
17399 if (signatures.length < scriptData.m) {
17400 throw new TypeError('Not enough signatures provided')
17401 }
17402
17403 if (signatures.length > scriptData.pubKeys.length) {
17404 throw new TypeError('Too many signatures provided')
17405 }
17406 }
17407
17408 return [].concat(EMPTY_BUFFER, signatures)
17409 }
17410
17411 function encode (signatures, scriptPubKey) {
17412 return bscript.compile(encodeStack(signatures, scriptPubKey))
17413 }
17414
17415 function decodeStack (stack, allowIncomplete) {
17416 typeforce(check, stack, allowIncomplete)
17417 return stack.slice(1)
17418 }
17419
17420 function decode (buffer, allowIncomplete) {
17421 var stack = bscript.decompile(buffer)
17422 return decodeStack(stack, allowIncomplete)
17423 }
17424
17425 module.exports = {
17426 check: check,
17427 decode: decode,
17428 decodeStack: decodeStack,
17429 encode: encode,
17430 encodeStack: encodeStack
17431 }
17432
17433 },{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17434 // m [pubKeys ...] n OP_CHECKMULTISIG
17435
17436 var bscript = require('../../script')
17437 var types = require('../../types')
17438 var typeforce = require('typeforce')
17439 var OPS = require('bitcoin-ops')
17440 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17441
17442 function check (script, allowIncomplete) {
17443 var chunks = bscript.decompile(script)
17444
17445 if (chunks.length < 4) return false
17446 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17447 if (!types.Number(chunks[0])) return false
17448 if (!types.Number(chunks[chunks.length - 2])) return false
17449 var m = chunks[0] - OP_INT_BASE
17450 var n = chunks[chunks.length - 2] - OP_INT_BASE
17451
17452 if (m <= 0) return false
17453 if (n > 16) return false
17454 if (m > n) return false
17455 if (n !== chunks.length - 3) return false
17456 if (allowIncomplete) return true
17457
17458 var keys = chunks.slice(1, -2)
17459 return keys.every(bscript.isCanonicalPubKey)
17460 }
17461 check.toJSON = function () { return 'multi-sig output' }
17462
17463 function encode (m, pubKeys) {
17464 typeforce({
17465 m: types.Number,
17466 pubKeys: [bscript.isCanonicalPubKey]
17467 }, {
17468 m: m,
17469 pubKeys: pubKeys
17470 })
17471
17472 var n = pubKeys.length
17473 if (n < m) throw new TypeError('Not enough pubKeys provided')
17474
17475 return bscript.compile([].concat(
17476 OP_INT_BASE + m,
17477 pubKeys,
17478 OP_INT_BASE + n,
17479 OPS.OP_CHECKMULTISIG
17480 ))
17481 }
17482
17483 function decode (buffer, allowIncomplete) {
17484 var chunks = bscript.decompile(buffer)
17485 typeforce(check, chunks, allowIncomplete)
17486
17487 return {
17488 m: chunks[0] - OP_INT_BASE,
17489 pubKeys: chunks.slice(1, -2)
17490 }
17491 }
17492
17493 module.exports = {
17494 check: check,
17495 decode: decode,
17496 encode: encode
17497 }
17498
17499 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17500 // OP_RETURN {data}
17501
17502 var bscript = require('../script')
17503 var types = require('../types')
17504 var typeforce = require('typeforce')
17505 var OPS = require('bitcoin-ops')
17506
17507 function check (script) {
17508 var buffer = bscript.compile(script)
17509
17510 return buffer.length > 1 &&
17511 buffer[0] === OPS.OP_RETURN
17512 }
17513 check.toJSON = function () { return 'null data output' }
17514
17515 function encode (data) {
17516 typeforce(types.Buffer, data)
17517
17518 return bscript.compile([OPS.OP_RETURN, data])
17519 }
17520
17521 function decode (buffer) {
17522 typeforce(check, buffer)
17523
17524 return buffer.slice(2)
17525 }
17526
17527 module.exports = {
17528 output: {
17529 check: check,
17530 decode: decode,
17531 encode: encode
17532 }
17533 }
17534
17535 },{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17536 arguments[4][55][0].apply(exports,arguments)
17537 },{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17538 // {signature}
17539
17540 var bscript = require('../../script')
17541 var types = require('../../types')
17542 var typeforce = require('typeforce')
17543
17544 function check (script) {
17545 var chunks = bscript.decompile(script)
17546
17547 return chunks.length === 1 &&
17548 bscript.isCanonicalSignature(chunks[0])
17549 }
17550 check.toJSON = function () { return 'pubKey input' }
17551
17552 function encodeStack (signature) {
17553 typeforce(types.Buffer, signature)
17554 return [signature]
17555 }
17556
17557 function encode (signature) {
17558 return bscript.compile(encodeStack(signature))
17559 }
17560
17561 function decodeStack (stack) {
17562 typeforce(check, stack)
17563 return stack[0]
17564 }
17565
17566 function decode (buffer) {
17567 var stack = bscript.decompile(buffer)
17568 return decodeStack(stack)
17569 }
17570
17571 module.exports = {
17572 check: check,
17573 decode: decode,
17574 decodeStack: decodeStack,
17575 encode: encode,
17576 encodeStack: encodeStack
17577 }
17578
17579 },{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17580 // {pubKey} OP_CHECKSIG
17581
17582 var bscript = require('../../script')
17583 var typeforce = require('typeforce')
17584 var OPS = require('bitcoin-ops')
17585
17586 function check (script) {
17587 var chunks = bscript.decompile(script)
17588
17589 return chunks.length === 2 &&
17590 bscript.isCanonicalPubKey(chunks[0]) &&
17591 chunks[1] === OPS.OP_CHECKSIG
17592 }
17593 check.toJSON = function () { return 'pubKey output' }
17594
17595 function encode (pubKey) {
17596 typeforce(bscript.isCanonicalPubKey, pubKey)
17597
17598 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17599 }
17600
17601 function decode (buffer) {
17602 var chunks = bscript.decompile(buffer)
17603 typeforce(check, chunks)
17604
17605 return chunks[0]
17606 }
17607
17608 module.exports = {
17609 check: check,
17610 decode: decode,
17611 encode: encode
17612 }
17613
17614 },{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17615 arguments[4][55][0].apply(exports,arguments)
17616 },{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17617 // {signature} {pubKey}
17618
17619 var bscript = require('../../script')
17620 var types = require('../../types')
17621 var typeforce = require('typeforce')
17622
17623 function check (script) {
17624 var chunks = bscript.decompile(script)
17625
17626 return chunks.length === 2 &&
17627 bscript.isCanonicalSignature(chunks[0]) &&
17628 bscript.isCanonicalPubKey(chunks[1])
17629 }
17630 check.toJSON = function () { return 'pubKeyHash input' }
17631
17632 function encodeStack (signature, pubKey) {
17633 typeforce({
17634 signature: types.Buffer, pubKey: types.Buffer
17635 }, {
17636 signature: signature, pubKey: pubKey
17637 })
17638
17639 return [signature, pubKey]
17640 }
17641
17642 function encode (signature, pubKey) {
17643 return bscript.compile(encodeStack(signature, pubKey))
17644 }
17645
17646 function decodeStack (stack) {
17647 typeforce(check, stack)
17648
17649 return {
17650 signature: stack[0],
17651 pubKey: stack[1]
17652 }
17653 }
17654
17655 function decode (buffer) {
17656 var stack = bscript.decompile(buffer)
17657 return decodeStack(stack)
17658 }
17659
17660 module.exports = {
17661 check: check,
17662 decode: decode,
17663 decodeStack: decodeStack,
17664 encode: encode,
17665 encodeStack: encodeStack
17666 }
17667
17668 },{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17669 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17670
17671 var bscript = require('../../script')
17672 var types = require('../../types')
17673 var typeforce = require('typeforce')
17674 var OPS = require('bitcoin-ops')
17675
17676 function check (script) {
17677 var buffer = bscript.compile(script)
17678
17679 return buffer.length === 25 &&
17680 buffer[0] === OPS.OP_DUP &&
17681 buffer[1] === OPS.OP_HASH160 &&
17682 buffer[2] === 0x14 &&
17683 buffer[23] === OPS.OP_EQUALVERIFY &&
17684 buffer[24] === OPS.OP_CHECKSIG
17685 }
17686 check.toJSON = function () { return 'pubKeyHash output' }
17687
17688 function encode (pubKeyHash) {
17689 typeforce(types.Hash160bit, pubKeyHash)
17690
17691 return bscript.compile([
17692 OPS.OP_DUP,
17693 OPS.OP_HASH160,
17694 pubKeyHash,
17695 OPS.OP_EQUALVERIFY,
17696 OPS.OP_CHECKSIG
17697 ])
17698 }
17699
17700 function decode (buffer) {
17701 typeforce(check, buffer)
17702
17703 return buffer.slice(3, 23)
17704 }
17705
17706 module.exports = {
17707 check: check,
17708 decode: decode,
17709 encode: encode
17710 }
17711
17712 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17713 arguments[4][55][0].apply(exports,arguments)
17714 },{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17715 // <scriptSig> {serialized scriptPubKey script}
17716
17717 var Buffer = require('safe-buffer').Buffer
17718 var bscript = require('../../script')
17719 var typeforce = require('typeforce')
17720
17721 function check (script, allowIncomplete) {
17722 var chunks = bscript.decompile(script)
17723 if (chunks.length < 1) return false
17724
17725 var lastChunk = chunks[chunks.length - 1]
17726 if (!Buffer.isBuffer(lastChunk)) return false
17727
17728 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17729 var redeemScriptChunks = bscript.decompile(lastChunk)
17730
17731 // is redeemScript a valid script?
17732 if (redeemScriptChunks.length === 0) return false
17733
17734 // is redeemScriptSig push only?
17735 if (!bscript.isPushOnly(scriptSigChunks)) return false
17736
17737 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17738 var outputType = bscript.classifyOutput(redeemScriptChunks)
17739 if (chunks.length === 1) {
17740 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17741 }
17742 return inputType === outputType
17743 }
17744 check.toJSON = function () { return 'scriptHash input' }
17745
17746 function encodeStack (redeemScriptStack, redeemScript) {
17747 var serializedScriptPubKey = bscript.compile(redeemScript)
17748
17749 return [].concat(redeemScriptStack, serializedScriptPubKey)
17750 }
17751
17752 function encode (redeemScriptSig, redeemScript) {
17753 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17754
17755 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17756 }
17757
17758 function decodeStack (stack) {
17759 typeforce(check, stack)
17760
17761 return {
17762 redeemScriptStack: stack.slice(0, -1),
17763 redeemScript: stack[stack.length - 1]
17764 }
17765 }
17766
17767 function decode (buffer) {
17768 var stack = bscript.decompile(buffer)
17769 var result = decodeStack(stack)
17770 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17771 delete result.redeemScriptStack
17772 return result
17773 }
17774
17775 module.exports = {
17776 check: check,
17777 decode: decode,
17778 decodeStack: decodeStack,
17779 encode: encode,
17780 encodeStack: encodeStack
17781 }
17782
17783 },{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17784 // OP_HASH160 {scriptHash} OP_EQUAL
17785
17786 var bscript = require('../../script')
17787 var types = require('../../types')
17788 var typeforce = require('typeforce')
17789 var OPS = require('bitcoin-ops')
17790
17791 function check (script) {
17792 var buffer = bscript.compile(script)
17793
17794 return buffer.length === 23 &&
17795 buffer[0] === OPS.OP_HASH160 &&
17796 buffer[1] === 0x14 &&
17797 buffer[22] === OPS.OP_EQUAL
17798 }
17799 check.toJSON = function () { return 'scriptHash output' }
17800
17801 function encode (scriptHash) {
17802 typeforce(types.Hash160bit, scriptHash)
17803
17804 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17805 }
17806
17807 function decode (buffer) {
17808 typeforce(check, buffer)
17809
17810 return buffer.slice(2, 22)
17811 }
17812
17813 module.exports = {
17814 check: check,
17815 decode: decode,
17816 encode: encode
17817 }
17818
17819 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17820 module.exports = {
17821 output: require('./output')
17822 }
17823
17824 },{"./output":69}],69:[function(require,module,exports){
17825 // OP_RETURN {aa21a9ed} {commitment}
17826
17827 var Buffer = require('safe-buffer').Buffer
17828 var bscript = require('../../script')
17829 var types = require('../../types')
17830 var typeforce = require('typeforce')
17831 var OPS = require('bitcoin-ops')
17832
17833 var HEADER = Buffer.from('aa21a9ed', 'hex')
17834
17835 function check (script) {
17836 var buffer = bscript.compile(script)
17837
17838 return buffer.length > 37 &&
17839 buffer[0] === OPS.OP_RETURN &&
17840 buffer[1] === 0x24 &&
17841 buffer.slice(2, 6).equals(HEADER)
17842 }
17843
17844 check.toJSON = function () { return 'Witness commitment output' }
17845
17846 function encode (commitment) {
17847 typeforce(types.Hash256bit, commitment)
17848
17849 var buffer = Buffer.allocUnsafe(36)
17850 HEADER.copy(buffer, 0)
17851 commitment.copy(buffer, 4)
17852
17853 return bscript.compile([OPS.OP_RETURN, buffer])
17854 }
17855
17856 function decode (buffer) {
17857 typeforce(check, buffer)
17858
17859 return bscript.decompile(buffer)[1].slice(4, 36)
17860 }
17861
17862 module.exports = {
17863 check: check,
17864 decode: decode,
17865 encode: encode
17866 }
17867
17868 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17869 arguments[4][55][0].apply(exports,arguments)
17870 },{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17871 // {signature} {pubKey}
17872
17873 var pkh = require('../pubkeyhash/input')
17874
17875 module.exports = {
17876 check: pkh.check,
17877 decodeStack: pkh.decodeStack,
17878 encodeStack: pkh.encodeStack
17879 }
17880
17881 },{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17882 // OP_0 {pubKeyHash}
17883
17884 var bscript = require('../../script')
17885 var types = require('../../types')
17886 var typeforce = require('typeforce')
17887 var OPS = require('bitcoin-ops')
17888
17889 function check (script) {
17890 var buffer = bscript.compile(script)
17891
17892 return buffer.length === 22 &&
17893 buffer[0] === OPS.OP_0 &&
17894 buffer[1] === 0x14
17895 }
17896 check.toJSON = function () { return 'Witness pubKeyHash output' }
17897
17898 function encode (pubKeyHash) {
17899 typeforce(types.Hash160bit, pubKeyHash)
17900
17901 return bscript.compile([OPS.OP_0, pubKeyHash])
17902 }
17903
17904 function decode (buffer) {
17905 typeforce(check, buffer)
17906
17907 return buffer.slice(2)
17908 }
17909
17910 module.exports = {
17911 check: check,
17912 decode: decode,
17913 encode: encode
17914 }
17915
17916 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17917 arguments[4][55][0].apply(exports,arguments)
17918 },{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17919 // {signature} {pubKey}
17920
17921 var p2sh = require('../scripthash/input')
17922
17923 module.exports = {
17924 check: p2sh.check,
17925 decodeStack: p2sh.decodeStack,
17926 encodeStack: p2sh.encodeStack
17927 }
17928
17929 },{"../scripthash/input":66}],75:[function(require,module,exports){
17930 // OP_0 {scriptHash}
17931
17932 var bscript = require('../../script')
17933 var types = require('../../types')
17934 var typeforce = require('typeforce')
17935 var OPS = require('bitcoin-ops')
17936
17937 function check (script) {
17938 var buffer = bscript.compile(script)
17939
17940 return buffer.length === 34 &&
17941 buffer[0] === OPS.OP_0 &&
17942 buffer[1] === 0x20
17943 }
17944 check.toJSON = function () { return 'Witness scriptHash output' }
17945
17946 function encode (scriptHash) {
17947 typeforce(types.Hash256bit, scriptHash)
17948
17949 return bscript.compile([OPS.OP_0, scriptHash])
17950 }
17951
17952 function decode (buffer) {
17953 typeforce(check, buffer)
17954
17955 return buffer.slice(2)
17956 }
17957
17958 module.exports = {
17959 check: check,
17960 decode: decode,
17961 encode: encode
17962 }
17963
17964 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17965 var Buffer = require('safe-buffer').Buffer
17966 var bcrypto = require('./crypto')
17967 var bscript = require('./script')
17968 var bufferutils = require('./bufferutils')
17969 var opcodes = require('bitcoin-ops')
17970 var typeforce = require('typeforce')
17971 var types = require('./types')
17972 var varuint = require('varuint-bitcoin')
17973
17974 function varSliceSize (someScript) {
17975 var length = someScript.length
17976
17977 return varuint.encodingLength(length) + length
17978 }
17979
17980 function vectorSize (someVector) {
17981 var length = someVector.length
17982
17983 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17984 return sum + varSliceSize(witness)
17985 }, 0)
17986 }
17987
17988 function Transaction () {
17989 this.version = 1
17990 this.locktime = 0
17991 this.ins = []
17992 this.outs = []
17993 }
17994
17995 Transaction.DEFAULT_SEQUENCE = 0xffffffff
17996 Transaction.SIGHASH_ALL = 0x01
17997 Transaction.SIGHASH_NONE = 0x02
17998 Transaction.SIGHASH_SINGLE = 0x03
17999 Transaction.SIGHASH_ANYONECANPAY = 0x80
18000 Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
18001 Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
18002
18003 var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
18004 var EMPTY_WITNESS = []
18005 var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
18006 var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
18007 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
18008 var BLANK_OUTPUT = {
18009 script: EMPTY_SCRIPT,
18010 valueBuffer: VALUE_UINT64_MAX
18011 }
18012
18013 Transaction.fromBuffer = function (buffer, __noStrict) {
18014 var offset = 0
18015 function readSlice (n) {
18016 offset += n
18017 return buffer.slice(offset - n, offset)
18018 }
18019
18020 function readUInt32 () {
18021 var i = buffer.readUInt32LE(offset)
18022 offset += 4
18023 return i
18024 }
18025
18026 function readInt32 () {
18027 var i = buffer.readInt32LE(offset)
18028 offset += 4
18029 return i
18030 }
18031
18032 function readUInt64 () {
18033 var i = bufferutils.readUInt64LE(buffer, offset)
18034 offset += 8
18035 return i
18036 }
18037
18038 function readVarInt () {
18039 var vi = varuint.decode(buffer, offset)
18040 offset += varuint.decode.bytes
18041 return vi
18042 }
18043
18044 function readVarSlice () {
18045 return readSlice(readVarInt())
18046 }
18047
18048 function readVector () {
18049 var count = readVarInt()
18050 var vector = []
18051 for (var i = 0; i < count; i++) vector.push(readVarSlice())
18052 return vector
18053 }
18054
18055 var tx = new Transaction()
18056 tx.version = readInt32()
18057
18058 var marker = buffer.readUInt8(offset)
18059 var flag = buffer.readUInt8(offset + 1)
18060
18061 var hasWitnesses = false
18062 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18063 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18064 offset += 2
18065 hasWitnesses = true
18066 }
18067
18068 var vinLen = readVarInt()
18069 for (var i = 0; i < vinLen; ++i) {
18070 tx.ins.push({
18071 hash: readSlice(32),
18072 index: readUInt32(),
18073 script: readVarSlice(),
18074 sequence: readUInt32(),
18075 witness: EMPTY_WITNESS
18076 })
18077 }
18078
18079 var voutLen = readVarInt()
18080 for (i = 0; i < voutLen; ++i) {
18081 tx.outs.push({
18082 value: readUInt64(),
18083 script: readVarSlice()
18084 })
18085 }
18086
18087 if (hasWitnesses) {
18088 for (i = 0; i < vinLen; ++i) {
18089 tx.ins[i].witness = readVector()
18090 }
18091
18092 // was this pointless?
18093 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18094 }
18095
18096 tx.locktime = readUInt32()
18097
18098 if (__noStrict) return tx
18099 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18100
18101 return tx
18102 }
18103
18104 Transaction.fromHex = function (hex) {
18105 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18106 }
18107
18108 Transaction.isCoinbaseHash = function (buffer) {
18109 typeforce(types.Hash256bit, buffer)
18110 for (var i = 0; i < 32; ++i) {
18111 if (buffer[i] !== 0) return false
18112 }
18113 return true
18114 }
18115
18116 Transaction.prototype.isCoinbase = function () {
18117 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
18118 }
18119
18120 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18121 typeforce(types.tuple(
18122 types.Hash256bit,
18123 types.UInt32,
18124 types.maybe(types.UInt32),
18125 types.maybe(types.Buffer)
18126 ), arguments)
18127
18128 if (types.Null(sequence)) {
18129 sequence = Transaction.DEFAULT_SEQUENCE
18130 }
18131
18132 // Add the input and return the input's index
18133 return (this.ins.push({
18134 hash: hash,
18135 index: index,
18136 script: scriptSig || EMPTY_SCRIPT,
18137 sequence: sequence,
18138 witness: EMPTY_WITNESS
18139 }) - 1)
18140 }
18141
18142 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18143 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18144
18145 // Add the output and return the output's index
18146 return (this.outs.push({
18147 script: scriptPubKey,
18148 value: value
18149 }) - 1)
18150 }
18151
18152 Transaction.prototype.hasWitnesses = function () {
18153 return this.ins.some(function (x) {
18154 return x.witness.length !== 0
18155 })
18156 }
18157
18158 Transaction.prototype.weight = function () {
18159 var base = this.__byteLength(false)
18160 var total = this.__byteLength(true)
18161 return base * 3 + total
18162 }
18163
18164 Transaction.prototype.virtualSize = function () {
18165 return Math.ceil(this.weight() / 4)
18166 }
18167
18168 Transaction.prototype.byteLength = function () {
18169 return this.__byteLength(true)
18170 }
18171
18172 Transaction.prototype.__byteLength = function (__allowWitness) {
18173 var hasWitnesses = __allowWitness && this.hasWitnesses()
18174
18175 return (
18176 (hasWitnesses ? 10 : 8) +
18177 varuint.encodingLength(this.ins.length) +
18178 varuint.encodingLength(this.outs.length) +
18179 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18180 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18181 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18182 )
18183 }
18184
18185 Transaction.prototype.clone = function () {
18186 var newTx = new Transaction()
18187 newTx.version = this.version
18188 newTx.locktime = this.locktime
18189
18190 newTx.ins = this.ins.map(function (txIn) {
18191 return {
18192 hash: txIn.hash,
18193 index: txIn.index,
18194 script: txIn.script,
18195 sequence: txIn.sequence,
18196 witness: txIn.witness
18197 }
18198 })
18199
18200 newTx.outs = this.outs.map(function (txOut) {
18201 return {
18202 script: txOut.script,
18203 value: txOut.value
18204 }
18205 })
18206
18207 return newTx
18208 }
18209
18210 /**
18211 * Hash transaction for signing a specific input.
18212 *
18213 * Bitcoin uses a different hash for each signed transaction input.
18214 * This method copies the transaction, makes the necessary changes based on the
18215 * hashType, and then hashes the result.
18216 * This hash can then be used to sign the provided transaction input.
18217 */
18218 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18219 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18220
18221 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18222 if (inIndex >= this.ins.length) return ONE
18223
18224 // ignore OP_CODESEPARATOR
18225 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18226 return x !== opcodes.OP_CODESEPARATOR
18227 }))
18228
18229 var txTmp = this.clone()
18230
18231 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18232 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18233 txTmp.outs = []
18234
18235 // ignore sequence numbers (except at inIndex)
18236 txTmp.ins.forEach(function (input, i) {
18237 if (i === inIndex) return
18238
18239 input.sequence = 0
18240 })
18241
18242 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18243 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18244 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18245 if (inIndex >= this.outs.length) return ONE
18246
18247 // truncate outputs after
18248 txTmp.outs.length = inIndex + 1
18249
18250 // "blank" outputs before
18251 for (var i = 0; i < inIndex; i++) {
18252 txTmp.outs[i] = BLANK_OUTPUT
18253 }
18254
18255 // ignore sequence numbers (except at inIndex)
18256 txTmp.ins.forEach(function (input, y) {
18257 if (y === inIndex) return
18258
18259 input.sequence = 0
18260 })
18261 }
18262
18263 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18264 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18265 txTmp.ins = [txTmp.ins[inIndex]]
18266 txTmp.ins[0].script = ourScript
18267
18268 // SIGHASH_ALL: only ignore input scripts
18269 } else {
18270 // "blank" others input scripts
18271 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18272 txTmp.ins[inIndex].script = ourScript
18273 }
18274
18275 // serialize and hash
18276 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18277 buffer.writeInt32LE(hashType, buffer.length - 4)
18278 txTmp.__toBuffer(buffer, 0, false)
18279
18280 return bcrypto.hash256(buffer)
18281 }
18282
18283 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18284 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18285
18286 var tbuffer, toffset
18287 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18288 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18289 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18290 function writeVarInt (i) {
18291 varuint.encode(i, tbuffer, toffset)
18292 toffset += varuint.encode.bytes
18293 }
18294 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18295
18296 var hashOutputs = ZERO
18297 var hashPrevouts = ZERO
18298 var hashSequence = ZERO
18299
18300 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18301 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18302 toffset = 0
18303
18304 this.ins.forEach(function (txIn) {
18305 writeSlice(txIn.hash)
18306 writeUInt32(txIn.index)
18307 })
18308
18309 hashPrevouts = bcrypto.hash256(tbuffer)
18310 }
18311
18312 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18313 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18314 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18315 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18316 toffset = 0
18317
18318 this.ins.forEach(function (txIn) {
18319 writeUInt32(txIn.sequence)
18320 })
18321
18322 hashSequence = bcrypto.hash256(tbuffer)
18323 }
18324
18325 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18326 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18327 var txOutsSize = this.outs.reduce(function (sum, output) {
18328 return sum + 8 + varSliceSize(output.script)
18329 }, 0)
18330
18331 tbuffer = Buffer.allocUnsafe(txOutsSize)
18332 toffset = 0
18333
18334 this.outs.forEach(function (out) {
18335 writeUInt64(out.value)
18336 writeVarSlice(out.script)
18337 })
18338
18339 hashOutputs = bcrypto.hash256(tbuffer)
18340 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18341 var output = this.outs[inIndex]
18342
18343 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18344 toffset = 0
18345 writeUInt64(output.value)
18346 writeVarSlice(output.script)
18347
18348 hashOutputs = bcrypto.hash256(tbuffer)
18349 }
18350
18351 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18352 toffset = 0
18353
18354 var input = this.ins[inIndex]
18355 writeUInt32(this.version)
18356 writeSlice(hashPrevouts)
18357 writeSlice(hashSequence)
18358 writeSlice(input.hash)
18359 writeUInt32(input.index)
18360 writeVarSlice(prevOutScript)
18361 writeUInt64(value)
18362 writeUInt32(input.sequence)
18363 writeSlice(hashOutputs)
18364 writeUInt32(this.locktime)
18365 writeUInt32(hashType)
18366 return bcrypto.hash256(tbuffer)
18367 }
18368
18369 Transaction.prototype.getHash = function () {
18370 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18371 }
18372
18373 Transaction.prototype.getId = function () {
18374 // transaction hash's are displayed in reverse order
18375 return this.getHash().reverse().toString('hex')
18376 }
18377
18378 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18379 return this.__toBuffer(buffer, initialOffset, true)
18380 }
18381
18382 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18383 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18384
18385 var offset = initialOffset || 0
18386 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18387 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18388 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18389 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18390 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18391 function writeVarInt (i) {
18392 varuint.encode(i, buffer, offset)
18393 offset += varuint.encode.bytes
18394 }
18395 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18396 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18397
18398 writeInt32(this.version)
18399
18400 var hasWitnesses = __allowWitness && this.hasWitnesses()
18401
18402 if (hasWitnesses) {
18403 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18404 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18405 }
18406
18407 writeVarInt(this.ins.length)
18408
18409 this.ins.forEach(function (txIn) {
18410 writeSlice(txIn.hash)
18411 writeUInt32(txIn.index)
18412 writeVarSlice(txIn.script)
18413 writeUInt32(txIn.sequence)
18414 })
18415
18416 writeVarInt(this.outs.length)
18417 this.outs.forEach(function (txOut) {
18418 if (!txOut.valueBuffer) {
18419 writeUInt64(txOut.value)
18420 } else {
18421 writeSlice(txOut.valueBuffer)
18422 }
18423
18424 writeVarSlice(txOut.script)
18425 })
18426
18427 if (hasWitnesses) {
18428 this.ins.forEach(function (input) {
18429 writeVector(input.witness)
18430 })
18431 }
18432
18433 writeUInt32(this.locktime)
18434
18435 // avoid slicing unless necessary
18436 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18437 return buffer
18438 }
18439
18440 Transaction.prototype.toHex = function () {
18441 return this.toBuffer().toString('hex')
18442 }
18443
18444 Transaction.prototype.setInputScript = function (index, scriptSig) {
18445 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18446
18447 this.ins[index].script = scriptSig
18448 }
18449
18450 Transaction.prototype.setWitness = function (index, witness) {
18451 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18452
18453 this.ins[index].witness = witness
18454 }
18455
18456 module.exports = Transaction
18457
18458 },{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18459 var Buffer = require('safe-buffer').Buffer
18460 var baddress = require('./address')
18461 var bcrypto = require('./crypto')
18462 var bscript = require('./script')
18463 var networks = require('./networks')
18464 var ops = require('bitcoin-ops')
18465 var typeforce = require('typeforce')
18466 var types = require('./types')
18467 var scriptTypes = bscript.types
18468 var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18469 var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18470
18471 var ECPair = require('./ecpair')
18472 var ECSignature = require('./ecsignature')
18473 var Transaction = require('./transaction')
18474
18475 function extractChunks (type, chunks, script) {
18476 var pubKeys = []
18477 var signatures = []
18478 switch (type) {
18479 case scriptTypes.P2PKH:
18480 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18481 pubKeys = chunks.slice(1)
18482 signatures = chunks.slice(0, 1)
18483 break
18484
18485 case scriptTypes.P2PK:
18486 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18487 signatures = chunks.slice(0, 1)
18488 break
18489
18490 case scriptTypes.MULTISIG:
18491 if (script) {
18492 var multisig = bscript.multisig.output.decode(script)
18493 pubKeys = multisig.pubKeys
18494 }
18495
18496 signatures = chunks.slice(1).map(function (chunk) {
18497 return chunk.length === 0 ? undefined : chunk
18498 })
18499 break
18500 }
18501
18502 return {
18503 pubKeys: pubKeys,
18504 signatures: signatures
18505 }
18506 }
18507 function expandInput (scriptSig, witnessStack) {
18508 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18509
18510 var prevOutScript
18511 var prevOutType
18512 var scriptType
18513 var script
18514 var redeemScript
18515 var witnessScript
18516 var witnessScriptType
18517 var redeemScriptType
18518 var witness = false
18519 var p2wsh = false
18520 var p2sh = false
18521 var witnessProgram
18522 var chunks
18523
18524 var scriptSigChunks = bscript.decompile(scriptSig)
18525 var sigType = bscript.classifyInput(scriptSigChunks, true)
18526 if (sigType === scriptTypes.P2SH) {
18527 p2sh = true
18528 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18529 redeemScriptType = bscript.classifyOutput(redeemScript)
18530 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18531 prevOutType = scriptTypes.P2SH
18532 script = redeemScript
18533 }
18534
18535 var classifyWitness = bscript.classifyWitness(witnessStack)
18536 if (classifyWitness === scriptTypes.P2WSH) {
18537 witnessScript = witnessStack[witnessStack.length - 1]
18538 witnessScriptType = bscript.classifyOutput(witnessScript)
18539 p2wsh = true
18540 if (scriptSig.length === 0) {
18541 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18542 prevOutType = scriptTypes.P2WSH
18543 if (typeof redeemScript !== 'undefined') {
18544 throw new Error('Redeem script given when unnecessary')
18545 }
18546 // bare witness
18547 } else {
18548 if (!redeemScript) {
18549 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18550 }
18551 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18552 if (!redeemScript.equals(witnessProgram)) {
18553 throw new Error('Redeem script didn\'t match witnessScript')
18554 }
18555 }
18556
18557 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18558 throw new Error('unsupported witness script')
18559 }
18560 script = witnessScript
18561 scriptType = witnessScriptType
18562 chunks = witnessStack.slice(0, -1)
18563 } else if (classifyWitness === scriptTypes.P2WPKH) {
18564 var key = witnessStack[witnessStack.length - 1]
18565 var keyHash = bcrypto.hash160(key)
18566 if (scriptSig.length === 0) {
18567 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18568 prevOutType = scriptTypes.P2WPKH
18569 if (typeof redeemScript !== 'undefined') {
18570 throw new Error('Redeem script given when unnecessary')
18571 }
18572 } else {
18573 if (!redeemScript) {
18574 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18575 }
18576 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18577 if (!redeemScript.equals(witnessProgram)) {
18578 throw new Error('Redeem script did not have the right witness program')
18579 }
18580 }
18581
18582 scriptType = scriptTypes.P2PKH
18583 chunks = witnessStack
18584 } else if (redeemScript) {
18585 if (P2SH.indexOf(redeemScriptType) === -1) {
18586 throw new Error('Bad redeemscript!')
18587 }
18588
18589 script = redeemScript
18590 scriptType = redeemScriptType
18591 chunks = scriptSigChunks.slice(0, -1)
18592 } else {
18593 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18594 chunks = scriptSigChunks
18595 }
18596
18597 var expanded = extractChunks(scriptType, chunks, script)
18598
18599 var result = {
18600 pubKeys: expanded.pubKeys,
18601 signatures: expanded.signatures,
18602 prevOutScript: prevOutScript,
18603 prevOutType: prevOutType,
18604 signType: scriptType,
18605 signScript: script,
18606 witness: Boolean(witness)
18607 }
18608
18609 if (p2sh) {
18610 result.redeemScript = redeemScript
18611 result.redeemScriptType = redeemScriptType
18612 }
18613
18614 if (p2wsh) {
18615 result.witnessScript = witnessScript
18616 result.witnessScriptType = witnessScriptType
18617 }
18618
18619 return result
18620 }
18621
18622 // could be done in expandInput, but requires the original Transaction for hashForSignature
18623 function fixMultisigOrder (input, transaction, vin) {
18624 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18625 if (input.pubKeys.length === input.signatures.length) return
18626
18627 var unmatched = input.signatures.concat()
18628
18629 input.signatures = input.pubKeys.map(function (pubKey) {
18630 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18631 var match
18632
18633 // check for a signature
18634 unmatched.some(function (signature, i) {
18635 // skip if undefined || OP_0
18636 if (!signature) return false
18637
18638 // TODO: avoid O(n) hashForSignature
18639 var parsed = ECSignature.parseScriptSignature(signature)
18640 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18641
18642 // skip if signature does not match pubKey
18643 if (!keyPair.verify(hash, parsed.signature)) return false
18644
18645 // remove matched signature from unmatched
18646 unmatched[i] = undefined
18647 match = signature
18648
18649 return true
18650 })
18651
18652 return match
18653 })
18654 }
18655
18656 function expandOutput (script, scriptType, ourPubKey) {
18657 typeforce(types.Buffer, script)
18658
18659 var scriptChunks = bscript.decompile(script)
18660 if (!scriptType) {
18661 scriptType = bscript.classifyOutput(script)
18662 }
18663
18664 var pubKeys = []
18665
18666 switch (scriptType) {
18667 // does our hash160(pubKey) match the output scripts?
18668 case scriptTypes.P2PKH:
18669 if (!ourPubKey) break
18670
18671 var pkh1 = scriptChunks[2]
18672 var pkh2 = bcrypto.hash160(ourPubKey)
18673 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18674 break
18675
18676 // does our hash160(pubKey) match the output scripts?
18677 case scriptTypes.P2WPKH:
18678 if (!ourPubKey) break
18679
18680 var wpkh1 = scriptChunks[1]
18681 var wpkh2 = bcrypto.hash160(ourPubKey)
18682 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18683 break
18684
18685 case scriptTypes.P2PK:
18686 pubKeys = scriptChunks.slice(0, 1)
18687 break
18688
18689 case scriptTypes.MULTISIG:
18690 pubKeys = scriptChunks.slice(1, -2)
18691 break
18692
18693 default: return { scriptType: scriptType }
18694 }
18695
18696 return {
18697 pubKeys: pubKeys,
18698 scriptType: scriptType,
18699 signatures: pubKeys.map(function () { return undefined })
18700 }
18701 }
18702
18703 function checkP2shInput (input, redeemScriptHash) {
18704 if (input.prevOutType) {
18705 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18706
18707 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18708 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18709 }
18710 }
18711
18712 function checkP2WSHInput (input, witnessScriptHash) {
18713 if (input.prevOutType) {
18714 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18715
18716 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18717 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18718 }
18719 }
18720
18721 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18722 var expanded
18723 var prevOutType
18724 var prevOutScript
18725
18726 var p2sh = false
18727 var p2shType
18728 var redeemScriptHash
18729
18730 var witness = false
18731 var p2wsh = false
18732 var witnessType
18733 var witnessScriptHash
18734
18735 var signType
18736 var signScript
18737
18738 if (redeemScript && witnessScript) {
18739 redeemScriptHash = bcrypto.hash160(redeemScript)
18740 witnessScriptHash = bcrypto.sha256(witnessScript)
18741 checkP2shInput(input, redeemScriptHash)
18742
18743 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18744
18745 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18746 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18747 prevOutType = bscript.types.P2SH
18748 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18749 p2sh = witness = p2wsh = true
18750 p2shType = bscript.types.P2WSH
18751 signType = witnessType = expanded.scriptType
18752 signScript = witnessScript
18753 } else if (redeemScript) {
18754 redeemScriptHash = bcrypto.hash160(redeemScript)
18755 checkP2shInput(input, redeemScriptHash)
18756
18757 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18758 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18759
18760 prevOutType = bscript.types.P2SH
18761 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18762 p2sh = true
18763 signType = p2shType = expanded.scriptType
18764 signScript = redeemScript
18765 witness = signType === bscript.types.P2WPKH
18766 } else if (witnessScript) {
18767 witnessScriptHash = bcrypto.sha256(witnessScript)
18768 checkP2WSHInput(input, witnessScriptHash)
18769
18770 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18771 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18772
18773 prevOutType = bscript.types.P2WSH
18774 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18775 witness = p2wsh = true
18776 signType = witnessType = expanded.scriptType
18777 signScript = witnessScript
18778 } else if (input.prevOutType) {
18779 // embedded scripts are not possible without a redeemScript
18780 if (input.prevOutType === scriptTypes.P2SH ||
18781 input.prevOutType === scriptTypes.P2WSH) {
18782 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18783 }
18784
18785 prevOutType = input.prevOutType
18786 prevOutScript = input.prevOutScript
18787 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18788 if (!expanded.pubKeys) return
18789
18790 witness = (input.prevOutType === scriptTypes.P2WPKH)
18791 signType = prevOutType
18792 signScript = prevOutScript
18793 } else {
18794 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18795 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18796 prevOutType = scriptTypes.P2PKH
18797 witness = false
18798 signType = prevOutType
18799 signScript = prevOutScript
18800 }
18801
18802 if (witness && !types.Satoshi(witnessValue)) {
18803 throw new Error('Input was witness but not given witness value')
18804 }
18805
18806 if (signType === scriptTypes.P2WPKH) {
18807 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18808 }
18809
18810 if (p2sh) {
18811 input.redeemScript = redeemScript
18812 input.redeemScriptType = p2shType
18813 }
18814
18815 if (p2wsh) {
18816 input.witnessScript = witnessScript
18817 input.witnessScriptType = witnessType
18818 }
18819
18820 input.pubKeys = expanded.pubKeys
18821 input.signatures = expanded.signatures
18822 input.signScript = signScript
18823 input.signType = signType
18824 input.prevOutScript = prevOutScript
18825 input.prevOutType = prevOutType
18826 input.witness = witness
18827 }
18828
18829 function buildStack (type, signatures, pubKeys, allowIncomplete) {
18830 if (type === scriptTypes.P2PKH) {
18831 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18832 } else if (type === scriptTypes.P2PK) {
18833 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18834 } else if (type === scriptTypes.MULTISIG) {
18835 if (signatures.length > 0) {
18836 signatures = signatures.map(function (signature) {
18837 return signature || ops.OP_0
18838 })
18839 if (!allowIncomplete) {
18840 // remove blank signatures
18841 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18842 }
18843
18844 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18845 }
18846 } else {
18847 throw new Error('Not yet supported')
18848 }
18849
18850 if (!allowIncomplete) throw new Error('Not enough signatures provided')
18851
18852 return []
18853 }
18854
18855 function buildInput (input, allowIncomplete) {
18856 var scriptType = input.prevOutType
18857 var sig = []
18858 var witness = []
18859 if (SIGNABLE.indexOf(scriptType) !== -1) {
18860 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
18861 }
18862
18863 var p2sh = false
18864 if (scriptType === bscript.types.P2SH) {
18865 // We can remove this error later when we have a guarantee prepareInput
18866 // rejects unsignable scripts - it MUST be signable at this point.
18867 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18868 throw new Error('Impossible to sign this type')
18869 }
18870 p2sh = true
18871 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18872 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18873 }
18874 // If it wasn't SIGNABLE, it's witness, defer to that
18875 scriptType = input.redeemScriptType
18876 }
18877
18878 if (scriptType === bscript.types.P2WPKH) {
18879 // P2WPKH is a special case of P2PKH
18880 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18881 } else if (scriptType === bscript.types.P2WSH) {
18882 // We can remove this check later
18883 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18884 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18885 witness.push(input.witnessScript)
18886 } else {
18887 // We can remove this error later when we have a guarantee prepareInput
18888 // rejects unsignble scripts - it MUST be signable at this point.
18889 throw new Error()
18890 }
18891
18892 scriptType = input.witnessScriptType
18893 }
18894
18895 // append redeemScript if necessary
18896 if (p2sh) {
18897 sig.push(input.redeemScript)
18898 }
18899
18900 return {
18901 type: scriptType,
18902 script: bscript.compile(sig),
18903 witness: witness
18904 }
18905 }
18906
18907 function TransactionBuilder (network, maximumFeeRate) {
18908 this.prevTxMap = {}
18909 this.network = network || networks.bitcoin
18910
18911 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18912 this.maximumFeeRate = maximumFeeRate || 1000
18913
18914 this.inputs = []
18915 this.tx = new Transaction()
18916 }
18917
18918 TransactionBuilder.prototype.setLockTime = function (locktime) {
18919 typeforce(types.UInt32, locktime)
18920
18921 // if any signatures exist, throw
18922 if (this.inputs.some(function (input) {
18923 if (!input.signatures) return false
18924
18925 return input.signatures.some(function (s) { return s })
18926 })) {
18927 throw new Error('No, this would invalidate signatures')
18928 }
18929
18930 this.tx.locktime = locktime
18931 }
18932
18933 TransactionBuilder.prototype.setVersion = function (version) {
18934 typeforce(types.UInt32, version)
18935
18936 // XXX: this might eventually become more complex depending on what the versions represent
18937 this.tx.version = version
18938 }
18939
18940 TransactionBuilder.fromTransaction = function (transaction, network) {
18941 var txb = new TransactionBuilder(network)
18942
18943 // Copy transaction fields
18944 txb.setVersion(transaction.version)
18945 txb.setLockTime(transaction.locktime)
18946
18947 // Copy outputs (done first to avoid signature invalidation)
18948 transaction.outs.forEach(function (txOut) {
18949 txb.addOutput(txOut.script, txOut.value)
18950 })
18951
18952 // Copy inputs
18953 transaction.ins.forEach(function (txIn) {
18954 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18955 sequence: txIn.sequence,
18956 script: txIn.script,
18957 witness: txIn.witness
18958 })
18959 })
18960
18961 // fix some things not possible through the public API
18962 txb.inputs.forEach(function (input, i) {
18963 fixMultisigOrder(input, transaction, i)
18964 })
18965
18966 return txb
18967 }
18968
18969 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18970 if (!this.__canModifyInputs()) {
18971 throw new Error('No, this would invalidate signatures')
18972 }
18973
18974 var value
18975
18976 // is it a hex string?
18977 if (typeof txHash === 'string') {
18978 // transaction hashs's are displayed in reverse order, un-reverse it
18979 txHash = Buffer.from(txHash, 'hex').reverse()
18980
18981 // is it a Transaction object?
18982 } else if (txHash instanceof Transaction) {
18983 var txOut = txHash.outs[vout]
18984 prevOutScript = txOut.script
18985 value = txOut.value
18986
18987 txHash = txHash.getHash()
18988 }
18989
18990 return this.__addInputUnsafe(txHash, vout, {
18991 sequence: sequence,
18992 prevOutScript: prevOutScript,
18993 value: value
18994 })
18995 }
18996
18997 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18998 if (Transaction.isCoinbaseHash(txHash)) {
18999 throw new Error('coinbase inputs not supported')
19000 }
19001
19002 var prevTxOut = txHash.toString('hex') + ':' + vout
19003 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
19004
19005 var input = {}
19006
19007 // derive what we can from the scriptSig
19008 if (options.script !== undefined) {
19009 input = expandInput(options.script, options.witness || [])
19010 }
19011
19012 // if an input value was given, retain it
19013 if (options.value !== undefined) {
19014 input.value = options.value
19015 }
19016
19017 // derive what we can from the previous transactions output script
19018 if (!input.prevOutScript && options.prevOutScript) {
19019 var prevOutType
19020
19021 if (!input.pubKeys && !input.signatures) {
19022 var expanded = expandOutput(options.prevOutScript)
19023
19024 if (expanded.pubKeys) {
19025 input.pubKeys = expanded.pubKeys
19026 input.signatures = expanded.signatures
19027 }
19028
19029 prevOutType = expanded.scriptType
19030 }
19031
19032 input.prevOutScript = options.prevOutScript
19033 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
19034 }
19035
19036 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
19037 this.inputs[vin] = input
19038 this.prevTxMap[prevTxOut] = vin
19039
19040 return vin
19041 }
19042
19043 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19044 if (!this.__canModifyOutputs()) {
19045 throw new Error('No, this would invalidate signatures')
19046 }
19047
19048 // Attempt to get a script if it's a base58 address string
19049 if (typeof scriptPubKey === 'string') {
19050 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
19051 }
19052
19053 return this.tx.addOutput(scriptPubKey, value)
19054 }
19055
19056 TransactionBuilder.prototype.build = function () {
19057 return this.__build(false)
19058 }
19059 TransactionBuilder.prototype.buildIncomplete = function () {
19060 return this.__build(true)
19061 }
19062
19063 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19064 if (!allowIncomplete) {
19065 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19066 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19067 }
19068
19069 var tx = this.tx.clone()
19070 // Create script signatures from inputs
19071 this.inputs.forEach(function (input, i) {
19072 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19073 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19074 var result = buildInput(input, allowIncomplete)
19075
19076 // skip if no result
19077 if (!allowIncomplete) {
19078 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19079 throw new Error(result.type + ' not supported')
19080 }
19081 }
19082
19083 tx.setInputScript(i, result.script)
19084 tx.setWitness(i, result.witness)
19085 })
19086
19087 if (!allowIncomplete) {
19088 // do not rely on this, its merely a last resort
19089 if (this.__overMaximumFees(tx.byteLength())) {
19090 throw new Error('Transaction has absurd fees')
19091 }
19092 }
19093
19094 return tx
19095 }
19096
19097 function canSign (input) {
19098 return input.prevOutScript !== undefined &&
19099 input.signScript !== undefined &&
19100 input.pubKeys !== undefined &&
19101 input.signatures !== undefined &&
19102 input.signatures.length === input.pubKeys.length &&
19103 input.pubKeys.length > 0 &&
19104 input.witness !== undefined
19105 }
19106
19107 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19108 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19109 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19110 hashType = hashType || Transaction.SIGHASH_ALL
19111
19112 var input = this.inputs[vin]
19113
19114 // if redeemScript was previously provided, enforce consistency
19115 if (input.redeemScript !== undefined &&
19116 redeemScript &&
19117 !input.redeemScript.equals(redeemScript)) {
19118 throw new Error('Inconsistent redeemScript')
19119 }
19120
19121 var kpPubKey = keyPair.getPublicKeyBuffer()
19122 if (!canSign(input)) {
19123 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19124 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19125 }
19126
19127 // ready to sign
19128 var signatureHash
19129 if (input.witness) {
19130 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
19131 } else {
19132 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19133 }
19134 // enforce in order signing of public keys
19135 var signed = input.pubKeys.some(function (pubKey, i) {
19136 if (!kpPubKey.equals(pubKey)) return false
19137 if (input.signatures[i]) throw new Error('Signature already exists')
19138
19139 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19140 return true
19141 })
19142
19143 if (!signed) throw new Error('Key pair cannot sign for this input')
19144 }
19145
19146 function signatureHashType (buffer) {
19147 return buffer.readUInt8(buffer.length - 1)
19148 }
19149
19150 TransactionBuilder.prototype.__canModifyInputs = function () {
19151 return this.inputs.every(function (input) {
19152 // any signatures?
19153 if (input.signatures === undefined) return true
19154
19155 return input.signatures.every(function (signature) {
19156 if (!signature) return true
19157 var hashType = signatureHashType(signature)
19158
19159 // if SIGHASH_ANYONECANPAY is set, signatures would not
19160 // be invalidated by more inputs
19161 return hashType & Transaction.SIGHASH_ANYONECANPAY
19162 })
19163 })
19164 }
19165
19166 TransactionBuilder.prototype.__canModifyOutputs = function () {
19167 var nInputs = this.tx.ins.length
19168 var nOutputs = this.tx.outs.length
19169
19170 return this.inputs.every(function (input) {
19171 if (input.signatures === undefined) return true
19172
19173 return input.signatures.every(function (signature) {
19174 if (!signature) return true
19175 var hashType = signatureHashType(signature)
19176
19177 var hashTypeMod = hashType & 0x1f
19178 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19179 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19180 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19181 // some signatures would be invalidated by the addition
19182 // of more outputs
19183 return nInputs <= nOutputs
19184 }
19185 })
19186 })
19187 }
19188
19189 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19190 // not all inputs will have .value defined
19191 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
19192
19193 // but all outputs do, and if we have any input value
19194 // we can immediately determine if the outputs are too small
19195 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19196 var fee = incoming - outgoing
19197 var feeRate = fee / bytes
19198
19199 return feeRate > this.maximumFeeRate
19200 }
19201
19202 module.exports = TransactionBuilder
19203
19204 },{"./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){
19205 var typeforce = require('typeforce')
19206
19207 var UINT31_MAX = Math.pow(2, 31) - 1
19208 function UInt31 (value) {
19209 return typeforce.UInt32(value) && value <= UINT31_MAX
19210 }
19211
19212 function BIP32Path (value) {
19213 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19214 }
19215 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19216
19217 var SATOSHI_MAX = 21 * 1e14
19218 function Satoshi (value) {
19219 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19220 }
19221
19222 // external dependent types
19223 var BigInt = typeforce.quacksLike('BigInteger')
19224 var ECPoint = typeforce.quacksLike('Point')
19225
19226 // exposed, external API
19227 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19228 var Network = typeforce.compile({
19229 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19230 bip32: {
19231 public: typeforce.UInt32,
19232 private: typeforce.UInt32
19233 },
19234 pubKeyHash: typeforce.UInt8,
19235 scriptHash: typeforce.UInt8,
19236 wif: typeforce.UInt8
19237 })
19238
19239 // extend typeforce types with ours
19240 var types = {
19241 BigInt: BigInt,
19242 BIP32Path: BIP32Path,
19243 Buffer256bit: typeforce.BufferN(32),
19244 ECPoint: ECPoint,
19245 ECSignature: ECSignature,
19246 Hash160bit: typeforce.BufferN(20),
19247 Hash256bit: typeforce.BufferN(32),
19248 Network: Network,
19249 Satoshi: Satoshi,
19250 UInt31: UInt31
19251 }
19252
19253 for (var typeName in typeforce) {
19254 types[typeName] = typeforce[typeName]
19255 }
19256
19257 module.exports = types
19258
19259 },{"typeforce":109}],79:[function(require,module,exports){
19260 var basex = require('base-x')
19261 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
19262
19263 module.exports = basex(ALPHABET)
19264
19265 },{"base-x":34}],80:[function(require,module,exports){
19266 (function (Buffer){
19267 'use strict'
19268
19269 var base58 = require('bs58')
19270 var createHash = require('create-hash')
19271
19272 // SHA256(SHA256(buffer))
19273 function sha256x2 (buffer) {
19274 var tmp = createHash('sha256').update(buffer).digest()
19275 return createHash('sha256').update(tmp).digest()
19276 }
19277
19278 // Encode a buffer as a base58-check encoded string
19279 function encode (payload) {
19280 var checksum = sha256x2(payload)
19281
19282 return base58.encode(Buffer.concat([
19283 payload,
19284 checksum
19285 ], payload.length + 4))
19286 }
19287
19288 function decodeRaw (buffer) {
19289 var payload = buffer.slice(0, -4)
19290 var checksum = buffer.slice(-4)
19291 var newChecksum = sha256x2(payload)
19292
19293 if (checksum[0] ^ newChecksum[0] |
19294 checksum[1] ^ newChecksum[1] |
19295 checksum[2] ^ newChecksum[2] |
19296 checksum[3] ^ newChecksum[3]) return
19297
19298 return payload
19299 }
19300
19301 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19302 function decodeUnsafe (string) {
19303 var buffer = base58.decodeUnsafe(string)
19304 if (!buffer) return
19305
19306 return decodeRaw(buffer)
19307 }
19308
19309 function decode (string) {
19310 var buffer = base58.decode(string)
19311 var payload = decodeRaw(buffer)
19312 if (!payload) throw new Error('Invalid checksum')
19313 return payload
19314 }
19315
19316 module.exports = {
19317 encode: encode,
19318 decode: decode,
19319 decodeUnsafe: decodeUnsafe
19320 }
19321
19322 }).call(this,require("buffer").Buffer)
19323 },{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19324 var Buffer = require('safe-buffer').Buffer
19325 var Transform = require('stream').Transform
19326 var StringDecoder = require('string_decoder').StringDecoder
19327 var inherits = require('inherits')
19328
19329 function CipherBase (hashMode) {
19330 Transform.call(this)
19331 this.hashMode = typeof hashMode === 'string'
19332 if (this.hashMode) {
19333 this[hashMode] = this._finalOrDigest
19334 } else {
19335 this.final = this._finalOrDigest
19336 }
19337 if (this._final) {
19338 this.__final = this._final
19339 this._final = null
19340 }
19341 this._decoder = null
19342 this._encoding = null
19343 }
19344 inherits(CipherBase, Transform)
19345
19346 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19347 if (typeof data === 'string') {
19348 data = Buffer.from(data, inputEnc)
19349 }
19350
19351 var outData = this._update(data)
19352 if (this.hashMode) return this
19353
19354 if (outputEnc) {
19355 outData = this._toString(outData, outputEnc)
19356 }
19357
19358 return outData
19359 }
19360
19361 CipherBase.prototype.setAutoPadding = function () {}
19362 CipherBase.prototype.getAuthTag = function () {
19363 throw new Error('trying to get auth tag in unsupported state')
19364 }
19365
19366 CipherBase.prototype.setAuthTag = function () {
19367 throw new Error('trying to set auth tag in unsupported state')
19368 }
19369
19370 CipherBase.prototype.setAAD = function () {
19371 throw new Error('trying to set aad in unsupported state')
19372 }
19373
19374 CipherBase.prototype._transform = function (data, _, next) {
19375 var err
19376 try {
19377 if (this.hashMode) {
19378 this._update(data)
19379 } else {
19380 this.push(this._update(data))
19381 }
19382 } catch (e) {
19383 err = e
19384 } finally {
19385 next(err)
19386 }
19387 }
19388 CipherBase.prototype._flush = function (done) {
19389 var err
19390 try {
19391 this.push(this.__final())
19392 } catch (e) {
19393 err = e
19394 }
19395
19396 done(err)
19397 }
19398 CipherBase.prototype._finalOrDigest = function (outputEnc) {
19399 var outData = this.__final() || Buffer.alloc(0)
19400 if (outputEnc) {
19401 outData = this._toString(outData, outputEnc, true)
19402 }
19403 return outData
19404 }
19405
19406 CipherBase.prototype._toString = function (value, enc, fin) {
19407 if (!this._decoder) {
19408 this._decoder = new StringDecoder(enc)
19409 this._encoding = enc
19410 }
19411
19412 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
19413
19414 var out = this._decoder.write(value)
19415 if (fin) {
19416 out += this._decoder.end()
19417 }
19418
19419 return out
19420 }
19421
19422 module.exports = CipherBase
19423
19424 },{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19425 (function (Buffer){
19426 'use strict'
19427 var inherits = require('inherits')
19428 var md5 = require('./md5')
19429 var RIPEMD160 = require('ripemd160')
19430 var sha = require('sha.js')
19431
19432 var Base = require('cipher-base')
19433
19434 function HashNoConstructor (hash) {
19435 Base.call(this, 'digest')
19436
19437 this._hash = hash
19438 this.buffers = []
19439 }
19440
19441 inherits(HashNoConstructor, Base)
19442
19443 HashNoConstructor.prototype._update = function (data) {
19444 this.buffers.push(data)
19445 }
19446
19447 HashNoConstructor.prototype._final = function () {
19448 var buf = Buffer.concat(this.buffers)
19449 var r = this._hash(buf)
19450 this.buffers = null
19451
19452 return r
19453 }
19454
19455 function Hash (hash) {
19456 Base.call(this, 'digest')
19457
19458 this._hash = hash
19459 }
19460
19461 inherits(Hash, Base)
19462
19463 Hash.prototype._update = function (data) {
19464 this._hash.update(data)
19465 }
19466
19467 Hash.prototype._final = function () {
19468 return this._hash.digest()
19469 }
19470
19471 module.exports = function createHash (alg) {
19472 alg = alg.toLowerCase()
19473 if (alg === 'md5') return new HashNoConstructor(md5)
19474 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
19475
19476 return new Hash(sha(alg))
19477 }
19478
19479 }).call(this,require("buffer").Buffer)
19480 },{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19481 (function (Buffer){
19482 'use strict'
19483 var intSize = 4
19484 var zeroBuffer = new Buffer(intSize)
19485 zeroBuffer.fill(0)
19486
19487 var charSize = 8
19488 var hashSize = 16
19489
19490 function toArray (buf) {
19491 if ((buf.length % intSize) !== 0) {
19492 var len = buf.length + (intSize - (buf.length % intSize))
19493 buf = Buffer.concat([buf, zeroBuffer], len)
19494 }
19495
19496 var arr = new Array(buf.length >>> 2)
19497 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19498 arr[j] = buf.readInt32LE(i)
19499 }
19500
19501 return arr
19502 }
19503
19504 module.exports = function hash (buf, fn) {
19505 var arr = fn(toArray(buf), buf.length * charSize)
19506 buf = new Buffer(hashSize)
19507 for (var i = 0; i < arr.length; i++) {
19508 buf.writeInt32LE(arr[i], i << 2, true)
19509 }
19510 return buf
19511 }
19512
19513 }).call(this,require("buffer").Buffer)
19514 },{"buffer":4}],84:[function(require,module,exports){
19515 'use strict'
19516 /*
19517 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19518 * Digest Algorithm, as defined in RFC 1321.
19519 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19520 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19521 * Distributed under the BSD License
19522 * See http://pajhome.org.uk/crypt/md5 for more info.
19523 */
19524
19525 var makeHash = require('./make-hash')
19526
19527 /*
19528 * Calculate the MD5 of an array of little-endian words, and a bit length
19529 */
19530 function core_md5 (x, len) {
19531 /* append padding */
19532 x[len >> 5] |= 0x80 << ((len) % 32)
19533 x[(((len + 64) >>> 9) << 4) + 14] = len
19534
19535 var a = 1732584193
19536 var b = -271733879
19537 var c = -1732584194
19538 var d = 271733878
19539
19540 for (var i = 0; i < x.length; i += 16) {
19541 var olda = a
19542 var oldb = b
19543 var oldc = c
19544 var oldd = d
19545
19546 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19547 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19548 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19549 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19550 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19551 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19552 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19553 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19554 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19555 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19556 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19557 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19558 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19559 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19560 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19561 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19562
19563 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19564 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19565 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19566 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19567 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19568 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19569 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19570 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19571 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19572 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19573 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19574 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19575 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19576 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19577 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19578 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19579
19580 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19581 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19582 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19583 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19584 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19585 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19586 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19587 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19588 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19589 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19590 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19591 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19592 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19593 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19594 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19595 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19596
19597 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19598 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19599 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19600 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19601 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19602 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19603 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19604 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19605 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19606 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19607 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19608 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19609 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19610 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19611 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19612 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19613
19614 a = safe_add(a, olda)
19615 b = safe_add(b, oldb)
19616 c = safe_add(c, oldc)
19617 d = safe_add(d, oldd)
19618 }
19619
19620 return [a, b, c, d]
19621 }
19622
19623 /*
19624 * These functions implement the four basic operations the algorithm uses.
19625 */
19626 function md5_cmn (q, a, b, x, s, t) {
19627 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
19628 }
19629
19630 function md5_ff (a, b, c, d, x, s, t) {
19631 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19632 }
19633
19634 function md5_gg (a, b, c, d, x, s, t) {
19635 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19636 }
19637
19638 function md5_hh (a, b, c, d, x, s, t) {
19639 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19640 }
19641
19642 function md5_ii (a, b, c, d, x, s, t) {
19643 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19644 }
19645
19646 /*
19647 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19648 * to work around bugs in some JS interpreters.
19649 */
19650 function safe_add (x, y) {
19651 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19652 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19653 return (msw << 16) | (lsw & 0xFFFF)
19654 }
19655
19656 /*
19657 * Bitwise rotate a 32-bit number to the left.
19658 */
19659 function bit_rol (num, cnt) {
19660 return (num << cnt) | (num >>> (32 - cnt))
19661 }
19662
19663 module.exports = function md5 (buf) {
19664 return makeHash(buf, core_md5)
19665 }
19666
19667 },{"./make-hash":83}],85:[function(require,module,exports){
19668 'use strict'
19669 var inherits = require('inherits')
19670 var Legacy = require('./legacy')
19671 var Base = require('cipher-base')
19672 var Buffer = require('safe-buffer').Buffer
19673 var md5 = require('create-hash/md5')
19674 var RIPEMD160 = require('ripemd160')
19675
19676 var sha = require('sha.js')
19677
19678 var ZEROS = Buffer.alloc(128)
19679
19680 function Hmac (alg, key) {
19681 Base.call(this, 'digest')
19682 if (typeof key === 'string') {
19683 key = Buffer.from(key)
19684 }
19685
19686 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
19687
19688 this._alg = alg
19689 this._key = key
19690 if (key.length > blocksize) {
19691 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19692 key = hash.update(key).digest()
19693 } else if (key.length < blocksize) {
19694 key = Buffer.concat([key, ZEROS], blocksize)
19695 }
19696
19697 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19698 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19699
19700 for (var i = 0; i < blocksize; i++) {
19701 ipad[i] = key[i] ^ 0x36
19702 opad[i] = key[i] ^ 0x5C
19703 }
19704 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19705 this._hash.update(ipad)
19706 }
19707
19708 inherits(Hmac, Base)
19709
19710 Hmac.prototype._update = function (data) {
19711 this._hash.update(data)
19712 }
19713
19714 Hmac.prototype._final = function () {
19715 var h = this._hash.digest()
19716 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19717 return hash.update(this._opad).update(h).digest()
19718 }
19719
19720 module.exports = function createHmac (alg, key) {
19721 alg = alg.toLowerCase()
19722 if (alg === 'rmd160' || alg === 'ripemd160') {
19723 return new Hmac('rmd160', key)
19724 }
19725 if (alg === 'md5') {
19726 return new Legacy(md5, key)
19727 }
19728 return new Hmac(alg, key)
19729 }
19730
19731 },{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19732 'use strict'
19733 var inherits = require('inherits')
19734 var Buffer = require('safe-buffer').Buffer
19735
19736 var Base = require('cipher-base')
19737
19738 var ZEROS = Buffer.alloc(128)
19739 var blocksize = 64
19740
19741 function Hmac (alg, key) {
19742 Base.call(this, 'digest')
19743 if (typeof key === 'string') {
19744 key = Buffer.from(key)
19745 }
19746
19747 this._alg = alg
19748 this._key = key
19749
19750 if (key.length > blocksize) {
19751 key = alg(key)
19752 } else if (key.length < blocksize) {
19753 key = Buffer.concat([key, ZEROS], blocksize)
19754 }
19755
19756 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19757 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19758
19759 for (var i = 0; i < blocksize; i++) {
19760 ipad[i] = key[i] ^ 0x36
19761 opad[i] = key[i] ^ 0x5C
19762 }
19763
19764 this._hash = [ipad]
19765 }
19766
19767 inherits(Hmac, Base)
19768
19769 Hmac.prototype._update = function (data) {
19770 this._hash.push(data)
19771 }
19772
19773 Hmac.prototype._final = function () {
19774 var h = this._alg(Buffer.concat(this._hash))
19775 return this._alg(Buffer.concat([this._opad, h]))
19776 }
19777 module.exports = Hmac
19778
19779 },{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
19780 var assert = require('assert')
19781 var BigInteger = require('bigi')
19782
19783 var Point = require('./point')
19784
19785 function Curve (p, a, b, Gx, Gy, n, h) {
19786 this.p = p
19787 this.a = a
19788 this.b = b
19789 this.G = Point.fromAffine(this, Gx, Gy)
19790 this.n = n
19791 this.h = h
19792
19793 this.infinity = new Point(this, null, null, BigInteger.ZERO)
19794
19795 // result caching
19796 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
19797
19798 // determine size of p in bytes
19799 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19800 }
19801
19802 Curve.prototype.pointFromX = function (isOdd, x) {
19803 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19804 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
19805
19806 var y = beta
19807 if (beta.isEven() ^ !isOdd) {
19808 y = this.p.subtract(y) // -y % p
19809 }
19810
19811 return Point.fromAffine(this, x, y)
19812 }
19813
19814 Curve.prototype.isInfinity = function (Q) {
19815 if (Q === this.infinity) return true
19816
19817 return Q.z.signum() === 0 && Q.y.signum() !== 0
19818 }
19819
19820 Curve.prototype.isOnCurve = function (Q) {
19821 if (this.isInfinity(Q)) return true
19822
19823 var x = Q.affineX
19824 var y = Q.affineY
19825 var a = this.a
19826 var b = this.b
19827 var p = this.p
19828
19829 // Check that xQ and yQ are integers in the interval [0, p - 1]
19830 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19831 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
19832
19833 // and check that y^2 = x^3 + ax + b (mod p)
19834 var lhs = y.square().mod(p)
19835 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19836 return lhs.equals(rhs)
19837 }
19838
19839 /**
19840 * Validate an elliptic curve point.
19841 *
19842 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19843 */
19844 Curve.prototype.validate = function (Q) {
19845 // Check Q != O
19846 assert(!this.isInfinity(Q), 'Point is at infinity')
19847 assert(this.isOnCurve(Q), 'Point is not on the curve')
19848
19849 // Check nQ = O (where Q is a scalar multiple of G)
19850 var nQ = Q.multiply(this.n)
19851 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
19852
19853 return true
19854 }
19855
19856 module.exports = Curve
19857
19858 },{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19859 module.exports={
19860 "secp128r1": {
19861 "p": "fffffffdffffffffffffffffffffffff",
19862 "a": "fffffffdfffffffffffffffffffffffc",
19863 "b": "e87579c11079f43dd824993c2cee5ed3",
19864 "n": "fffffffe0000000075a30d1b9038a115",
19865 "h": "01",
19866 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19867 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19868 },
19869 "secp160k1": {
19870 "p": "fffffffffffffffffffffffffffffffeffffac73",
19871 "a": "00",
19872 "b": "07",
19873 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19874 "h": "01",
19875 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19876 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19877 },
19878 "secp160r1": {
19879 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19880 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19881 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19882 "n": "0100000000000000000001f4c8f927aed3ca752257",
19883 "h": "01",
19884 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19885 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19886 },
19887 "secp192k1": {
19888 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19889 "a": "00",
19890 "b": "03",
19891 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19892 "h": "01",
19893 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19894 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19895 },
19896 "secp192r1": {
19897 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19898 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19899 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19900 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19901 "h": "01",
19902 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19903 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19904 },
19905 "secp256k1": {
19906 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19907 "a": "00",
19908 "b": "07",
19909 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19910 "h": "01",
19911 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19912 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19913 },
19914 "secp256r1": {
19915 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19916 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19917 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19918 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19919 "h": "01",
19920 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19921 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19922 }
19923 }
19924
19925 },{}],89:[function(require,module,exports){
19926 var Point = require('./point')
19927 var Curve = require('./curve')
19928
19929 var getCurveByName = require('./names')
19930
19931 module.exports = {
19932 Curve: Curve,
19933 Point: Point,
19934 getCurveByName: getCurveByName
19935 }
19936
19937 },{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19938 var BigInteger = require('bigi')
19939
19940 var curves = require('./curves.json')
19941 var Curve = require('./curve')
19942
19943 function getCurveByName (name) {
19944 var curve = curves[name]
19945 if (!curve) return null
19946
19947 var p = new BigInteger(curve.p, 16)
19948 var a = new BigInteger(curve.a, 16)
19949 var b = new BigInteger(curve.b, 16)
19950 var n = new BigInteger(curve.n, 16)
19951 var h = new BigInteger(curve.h, 16)
19952 var Gx = new BigInteger(curve.Gx, 16)
19953 var Gy = new BigInteger(curve.Gy, 16)
19954
19955 return new Curve(p, a, b, Gx, Gy, n, h)
19956 }
19957
19958 module.exports = getCurveByName
19959
19960 },{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19961 (function (Buffer){
19962 var assert = require('assert')
19963 var BigInteger = require('bigi')
19964
19965 var THREE = BigInteger.valueOf(3)
19966
19967 function Point (curve, x, y, z) {
19968 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
19969
19970 this.curve = curve
19971 this.x = x
19972 this.y = y
19973 this.z = z
19974 this._zInv = null
19975
19976 this.compressed = true
19977 }
19978
19979 Object.defineProperty(Point.prototype, 'zInv', {
19980 get: function () {
19981 if (this._zInv === null) {
19982 this._zInv = this.z.modInverse(this.curve.p)
19983 }
19984
19985 return this._zInv
19986 }
19987 })
19988
19989 Object.defineProperty(Point.prototype, 'affineX', {
19990 get: function () {
19991 return this.x.multiply(this.zInv).mod(this.curve.p)
19992 }
19993 })
19994
19995 Object.defineProperty(Point.prototype, 'affineY', {
19996 get: function () {
19997 return this.y.multiply(this.zInv).mod(this.curve.p)
19998 }
19999 })
20000
20001 Point.fromAffine = function (curve, x, y) {
20002 return new Point(curve, x, y, BigInteger.ONE)
20003 }
20004
20005 Point.prototype.equals = function (other) {
20006 if (other === this) return true
20007 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
20008 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
20009
20010 // u = Y2 * Z1 - Y1 * Z2
20011 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
20012
20013 if (u.signum() !== 0) return false
20014
20015 // v = X2 * Z1 - X1 * Z2
20016 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
20017
20018 return v.signum() === 0
20019 }
20020
20021 Point.prototype.negate = function () {
20022 var y = this.curve.p.subtract(this.y)
20023
20024 return new Point(this.curve, this.x, y, this.z)
20025 }
20026
20027 Point.prototype.add = function (b) {
20028 if (this.curve.isInfinity(this)) return b
20029 if (this.curve.isInfinity(b)) return this
20030
20031 var x1 = this.x
20032 var y1 = this.y
20033 var x2 = b.x
20034 var y2 = b.y
20035
20036 // u = Y2 * Z1 - Y1 * Z2
20037 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
20038 // v = X2 * Z1 - X1 * Z2
20039 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
20040
20041 if (v.signum() === 0) {
20042 if (u.signum() === 0) {
20043 return this.twice() // this == b, so double
20044 }
20045
20046 return this.curve.infinity // this = -b, so infinity
20047 }
20048
20049 var v2 = v.square()
20050 var v3 = v2.multiply(v)
20051 var x1v2 = x1.multiply(v2)
20052 var zu2 = u.square().multiply(this.z)
20053
20054 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
20055 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
20056 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
20057 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)
20058 // z3 = v^3 * z1 * z2
20059 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
20060
20061 return new Point(this.curve, x3, y3, z3)
20062 }
20063
20064 Point.prototype.twice = function () {
20065 if (this.curve.isInfinity(this)) return this
20066 if (this.y.signum() === 0) return this.curve.infinity
20067
20068 var x1 = this.x
20069 var y1 = this.y
20070
20071 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20072 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20073 var a = this.curve.a
20074
20075 // w = 3 * x1^2 + a * z1^2
20076 var w = x1.square().multiply(THREE)
20077
20078 if (a.signum() !== 0) {
20079 w = w.add(this.z.square().multiply(a))
20080 }
20081
20082 w = w.mod(this.curve.p)
20083 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20084 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20085 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20086 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20087 // z3 = 8 * (y1 * z1)^3
20088 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
20089
20090 return new Point(this.curve, x3, y3, z3)
20091 }
20092
20093 // Simple NAF (Non-Adjacent Form) multiplication algorithm
20094 // TODO: modularize the multiplication algorithm
20095 Point.prototype.multiply = function (k) {
20096 if (this.curve.isInfinity(this)) return this
20097 if (k.signum() === 0) return this.curve.infinity
20098
20099 var e = k
20100 var h = e.multiply(THREE)
20101
20102 var neg = this.negate()
20103 var R = this
20104
20105 for (var i = h.bitLength() - 2; i > 0; --i) {
20106 var hBit = h.testBit(i)
20107 var eBit = e.testBit(i)
20108
20109 R = R.twice()
20110
20111 if (hBit !== eBit) {
20112 R = R.add(hBit ? this : neg)
20113 }
20114 }
20115
20116 return R
20117 }
20118
20119 // Compute this*j + x*k (simultaneous multiplication)
20120 Point.prototype.multiplyTwo = function (j, x, k) {
20121 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20122 var R = this.curve.infinity
20123 var both = this.add(x)
20124
20125 while (i >= 0) {
20126 var jBit = j.testBit(i)
20127 var kBit = k.testBit(i)
20128
20129 R = R.twice()
20130
20131 if (jBit) {
20132 if (kBit) {
20133 R = R.add(both)
20134 } else {
20135 R = R.add(this)
20136 }
20137 } else if (kBit) {
20138 R = R.add(x)
20139 }
20140 --i
20141 }
20142
20143 return R
20144 }
20145
20146 Point.prototype.getEncoded = function (compressed) {
20147 if (compressed == null) compressed = this.compressed
20148 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
20149
20150 var x = this.affineX
20151 var y = this.affineY
20152 var byteLength = this.curve.pLength
20153 var buffer
20154
20155 // 0x02/0x03 | X
20156 if (compressed) {
20157 buffer = new Buffer(1 + byteLength)
20158 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
20159
20160 // 0x04 | X | Y
20161 } else {
20162 buffer = new Buffer(1 + byteLength + byteLength)
20163 buffer.writeUInt8(0x04, 0)
20164
20165 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
20166 }
20167
20168 x.toBuffer(byteLength).copy(buffer, 1)
20169
20170 return buffer
20171 }
20172
20173 Point.decodeFrom = function (curve, buffer) {
20174 var type = buffer.readUInt8(0)
20175 var compressed = (type !== 4)
20176
20177 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20178 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
20179
20180 var Q
20181 if (compressed) {
20182 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20183 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
20184
20185 var isOdd = (type === 0x03)
20186 Q = curve.pointFromX(isOdd, x)
20187 } else {
20188 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
20189
20190 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20191 Q = Point.fromAffine(curve, x, y)
20192 }
20193
20194 Q.compressed = compressed
20195 return Q
20196 }
20197
20198 Point.prototype.toString = function () {
20199 if (this.curve.isInfinity(this)) return '(INFINITY)'
20200
20201 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20202 }
20203
20204 module.exports = Point
20205
20206 }).call(this,require("buffer").Buffer)
20207 },{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20208 (function (Buffer){
20209 'use strict'
20210 var Transform = require('stream').Transform
20211 var inherits = require('inherits')
20212
20213 function HashBase (blockSize) {
20214 Transform.call(this)
20215
20216 this._block = new Buffer(blockSize)
20217 this._blockSize = blockSize
20218 this._blockOffset = 0
20219 this._length = [0, 0, 0, 0]
20220
20221 this._finalized = false
20222 }
20223
20224 inherits(HashBase, Transform)
20225
20226 HashBase.prototype._transform = function (chunk, encoding, callback) {
20227 var error = null
20228 try {
20229 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20230 this.update(chunk)
20231 } catch (err) {
20232 error = err
20233 }
20234
20235 callback(error)
20236 }
20237
20238 HashBase.prototype._flush = function (callback) {
20239 var error = null
20240 try {
20241 this.push(this._digest())
20242 } catch (err) {
20243 error = err
20244 }
20245
20246 callback(error)
20247 }
20248
20249 HashBase.prototype.update = function (data, encoding) {
20250 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20251 if (this._finalized) throw new Error('Digest already called')
20252 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
20253
20254 // consume data
20255 var block = this._block
20256 var offset = 0
20257 while (this._blockOffset + data.length - offset >= this._blockSize) {
20258 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20259 this._update()
20260 this._blockOffset = 0
20261 }
20262 while (offset < data.length) block[this._blockOffset++] = data[offset++]
20263
20264 // update length
20265 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20266 this._length[j] += carry
20267 carry = (this._length[j] / 0x0100000000) | 0
20268 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20269 }
20270
20271 return this
20272 }
20273
20274 HashBase.prototype._update = function (data) {
20275 throw new Error('_update is not implemented')
20276 }
20277
20278 HashBase.prototype.digest = function (encoding) {
20279 if (this._finalized) throw new Error('Digest already called')
20280 this._finalized = true
20281
20282 var digest = this._digest()
20283 if (encoding !== undefined) digest = digest.toString(encoding)
20284 return digest
20285 }
20286
20287 HashBase.prototype._digest = function () {
20288 throw new Error('_digest is not implemented')
20289 }
20290
20291 module.exports = HashBase
20292
20293 }).call(this,require("buffer").Buffer)
20294 },{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20295 arguments[4][8][0].apply(exports,arguments)
20296 },{"dup":8}],94:[function(require,module,exports){
20297 (function (Buffer){
20298 // constant-space merkle root calculation algorithm
20299 module.exports = function fastRoot (values, digestFn) {
20300 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20301 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
20302
20303 var length = values.length
20304 var results = values.concat()
20305
20306 while (length > 1) {
20307 var j = 0
20308
20309 for (var i = 0; i < length; i += 2, ++j) {
20310 var left = results[i]
20311 var right = i + 1 === length ? left : results[i + 1]
20312 var data = Buffer.concat([left, right])
20313
20314 results[j] = digestFn(data)
20315 }
20316
20317 length = j
20318 }
20319
20320 return results[0]
20321 }
20322
20323 }).call(this,require("buffer").Buffer)
20324 },{"buffer":4}],95:[function(require,module,exports){
20325 var OPS = require('bitcoin-ops')
20326
20327 function encodingLength (i) {
20328 return i < OPS.OP_PUSHDATA1 ? 1
20329 : i <= 0xff ? 2
20330 : i <= 0xffff ? 3
20331 : 5
20332 }
20333
20334 function encode (buffer, number, offset) {
20335 var size = encodingLength(number)
20336
20337 // ~6 bit
20338 if (size === 1) {
20339 buffer.writeUInt8(number, offset)
20340
20341 // 8 bit
20342 } else if (size === 2) {
20343 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20344 buffer.writeUInt8(number, offset + 1)
20345
20346 // 16 bit
20347 } else if (size === 3) {
20348 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20349 buffer.writeUInt16LE(number, offset + 1)
20350
20351 // 32 bit
20352 } else {
20353 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20354 buffer.writeUInt32LE(number, offset + 1)
20355 }
20356
20357 return size
20358 }
20359
20360 function decode (buffer, offset) {
20361 var opcode = buffer.readUInt8(offset)
20362 var number, size
20363
20364 // ~6 bit
20365 if (opcode < OPS.OP_PUSHDATA1) {
20366 number = opcode
20367 size = 1
20368
20369 // 8 bit
20370 } else if (opcode === OPS.OP_PUSHDATA1) {
20371 if (offset + 2 > buffer.length) return null
20372 number = buffer.readUInt8(offset + 1)
20373 size = 2
20374
20375 // 16 bit
20376 } else if (opcode === OPS.OP_PUSHDATA2) {
20377 if (offset + 3 > buffer.length) return null
20378 number = buffer.readUInt16LE(offset + 1)
20379 size = 3
20380
20381 // 32 bit
20382 } else {
20383 if (offset + 5 > buffer.length) return null
20384 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
20385
20386 number = buffer.readUInt32LE(offset + 1)
20387 size = 5
20388 }
20389
20390 return {
20391 opcode: opcode,
20392 number: number,
20393 size: size
20394 }
20395 }
20396
20397 module.exports = {
20398 encodingLength: encodingLength,
20399 encode: encode,
20400 decode: decode
20401 }
20402
20403 },{"bitcoin-ops":40}],96:[function(require,module,exports){
20404 (function (process,global){
20405 'use strict'
20406
20407 function oldBrowser () {
20408 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
20409 }
20410
20411 var Buffer = require('safe-buffer').Buffer
20412 var crypto = global.crypto || global.msCrypto
20413
20414 if (crypto && crypto.getRandomValues) {
20415 module.exports = randomBytes
20416 } else {
20417 module.exports = oldBrowser
20418 }
20419
20420 function randomBytes (size, cb) {
20421 // phantomjs needs to throw
20422 if (size > 65536) throw new Error('requested too many random bytes')
20423 // in case browserify isn't using the Uint8Array version
20424 var rawBytes = new global.Uint8Array(size)
20425
20426 // This will not work in older browsers.
20427 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20428 if (size > 0) { // getRandomValues fails on IE if size == 0
20429 crypto.getRandomValues(rawBytes)
20430 }
20431
20432 // XXX: phantomjs doesn't like a buffer being passed here
20433 var bytes = Buffer.from(rawBytes.buffer)
20434
20435 if (typeof cb === 'function') {
20436 return process.nextTick(function () {
20437 cb(null, bytes)
20438 })
20439 }
20440
20441 return bytes
20442 }
20443
20444 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20445 },{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20446 (function (Buffer){
20447 'use strict'
20448 var inherits = require('inherits')
20449 var HashBase = require('hash-base')
20450
20451 function RIPEMD160 () {
20452 HashBase.call(this, 64)
20453
20454 // state
20455 this._a = 0x67452301
20456 this._b = 0xefcdab89
20457 this._c = 0x98badcfe
20458 this._d = 0x10325476
20459 this._e = 0xc3d2e1f0
20460 }
20461
20462 inherits(RIPEMD160, HashBase)
20463
20464 RIPEMD160.prototype._update = function () {
20465 var m = new Array(16)
20466 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20467
20468 var al = this._a
20469 var bl = this._b
20470 var cl = this._c
20471 var dl = this._d
20472 var el = this._e
20473
20474 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20475 // K = 0x00000000
20476 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20477 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20478 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20479 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20480 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20481 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20482 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20483 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20484 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20485 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20486 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20487 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20488 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20489 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20490 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20491 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20492 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20493
20494 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20495 // K = 0x5a827999
20496 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20497 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20498 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20499 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20500 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20501 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20502 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20503 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20504 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20505 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20506 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20507 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20508 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20509 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20510 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20511 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20512 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20513
20514 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20515 // K = 0x6ed9eba1
20516 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20517 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20518 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20519 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20520 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20521 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20522 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20523 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20524 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20525 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20526 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20527 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20528 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20529 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20530 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20531 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20532 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20533
20534 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20535 // K = 0x8f1bbcdc
20536 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20537 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20538 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20539 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20540 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20541 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20542 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20543 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20544 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20545 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20546 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20547 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20548 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20549 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20550 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20551 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20552 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20553
20554 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20555 // K = 0xa953fd4e
20556 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20557 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20558 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20559 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20560 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20561 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20562 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20563 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20564 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20565 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20566 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20567 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20568 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20569 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20570 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20571 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20572 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20573
20574 var ar = this._a
20575 var br = this._b
20576 var cr = this._c
20577 var dr = this._d
20578 var er = this._e
20579
20580 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20581 // K' = 0x50a28be6
20582 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20583 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20584 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20585 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20586 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20587 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20588 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20589 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20590 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20591 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20592 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20593 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20594 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20595 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20596 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20597 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20598 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20599
20600 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20601 // K' = 0x5c4dd124
20602 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20603 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20604 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20605 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20606 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20607 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20608 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20609 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20610 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20611 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20612 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20613 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20614 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20615 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20616 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20617 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20618 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20619
20620 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20621 // K' = 0x6d703ef3
20622 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20623 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20624 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20625 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20626 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20627 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20628 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20629 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20630 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20631 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20632 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20633 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20634 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20635 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20636 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20637 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20638 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20639
20640 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20641 // K' = 0x7a6d76e9
20642 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20643 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20644 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20645 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20646 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20647 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20648 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20649 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20650 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20651 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20652 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20653 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20654 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20655 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20656 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20657 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20658 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20659
20660 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20661 // K' = 0x00000000
20662 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20663 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20664 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20665 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20666 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20667 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20668 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20669 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20670 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20671 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20672 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20673 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20674 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20675 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20676 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20677 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20678 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20679
20680 // change state
20681 var t = (this._b + cl + dr) | 0
20682 this._b = (this._c + dl + er) | 0
20683 this._c = (this._d + el + ar) | 0
20684 this._d = (this._e + al + br) | 0
20685 this._e = (this._a + bl + cr) | 0
20686 this._a = t
20687 }
20688
20689 RIPEMD160.prototype._digest = function () {
20690 // create padding and handle blocks
20691 this._block[this._blockOffset++] = 0x80
20692 if (this._blockOffset > 56) {
20693 this._block.fill(0, this._blockOffset, 64)
20694 this._update()
20695 this._blockOffset = 0
20696 }
20697
20698 this._block.fill(0, this._blockOffset, 56)
20699 this._block.writeUInt32LE(this._length[0], 56)
20700 this._block.writeUInt32LE(this._length[1], 60)
20701 this._update()
20702
20703 // produce result
20704 var buffer = new Buffer(20)
20705 buffer.writeInt32LE(this._a, 0)
20706 buffer.writeInt32LE(this._b, 4)
20707 buffer.writeInt32LE(this._c, 8)
20708 buffer.writeInt32LE(this._d, 12)
20709 buffer.writeInt32LE(this._e, 16)
20710 return buffer
20711 }
20712
20713 function rotl (x, n) {
20714 return (x << n) | (x >>> (32 - n))
20715 }
20716
20717 function fn1 (a, b, c, d, e, m, k, s) {
20718 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20719 }
20720
20721 function fn2 (a, b, c, d, e, m, k, s) {
20722 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20723 }
20724
20725 function fn3 (a, b, c, d, e, m, k, s) {
20726 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20727 }
20728
20729 function fn4 (a, b, c, d, e, m, k, s) {
20730 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20731 }
20732
20733 function fn5 (a, b, c, d, e, m, k, s) {
20734 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20735 }
20736
20737 module.exports = RIPEMD160
20738
20739 }).call(this,require("buffer").Buffer)
20740 },{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20741 arguments[4][26][0].apply(exports,arguments)
20742 },{"buffer":4,"dup":26}],99:[function(require,module,exports){
20743 (function (Buffer){
20744 // prototype class for hash functions
20745 function Hash (blockSize, finalSize) {
20746 this._block = new Buffer(blockSize)
20747 this._finalSize = finalSize
20748 this._blockSize = blockSize
20749 this._len = 0
20750 this._s = 0
20751 }
20752
20753 Hash.prototype.update = function (data, enc) {
20754 if (typeof data === 'string') {
20755 enc = enc || 'utf8'
20756 data = new Buffer(data, enc)
20757 }
20758
20759 var l = this._len += data.length
20760 var s = this._s || 0
20761 var f = 0
20762 var buffer = this._block
20763
20764 while (s < l) {
20765 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20766 var ch = (t - f)
20767
20768 for (var i = 0; i < ch; i++) {
20769 buffer[(s % this._blockSize) + i] = data[i + f]
20770 }
20771
20772 s += ch
20773 f += ch
20774
20775 if ((s % this._blockSize) === 0) {
20776 this._update(buffer)
20777 }
20778 }
20779 this._s = s
20780
20781 return this
20782 }
20783
20784 Hash.prototype.digest = function (enc) {
20785 // Suppose the length of the message M, in bits, is l
20786 var l = this._len * 8
20787
20788 // Append the bit 1 to the end of the message
20789 this._block[this._len % this._blockSize] = 0x80
20790
20791 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20792 this._block.fill(0, this._len % this._blockSize + 1)
20793
20794 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20795 this._update(this._block)
20796 this._block.fill(0)
20797 }
20798
20799 // to this append the block which is equal to the number l written in binary
20800 // TODO: handle case where l is > Math.pow(2, 29)
20801 this._block.writeInt32BE(l, this._blockSize - 4)
20802
20803 var hash = this._update(this._block) || this._hash()
20804
20805 return enc ? hash.toString(enc) : hash
20806 }
20807
20808 Hash.prototype._update = function () {
20809 throw new Error('_update must be implemented by subclass')
20810 }
20811
20812 module.exports = Hash
20813
20814 }).call(this,require("buffer").Buffer)
20815 },{"buffer":4}],100:[function(require,module,exports){
20816 var exports = module.exports = function SHA (algorithm) {
20817 algorithm = algorithm.toLowerCase()
20818
20819 var Algorithm = exports[algorithm]
20820 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
20821
20822 return new Algorithm()
20823 }
20824
20825 exports.sha = require('./sha')
20826 exports.sha1 = require('./sha1')
20827 exports.sha224 = require('./sha224')
20828 exports.sha256 = require('./sha256')
20829 exports.sha384 = require('./sha384')
20830 exports.sha512 = require('./sha512')
20831
20832 },{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
20833 (function (Buffer){
20834 /*
20835 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20836 * in FIPS PUB 180-1
20837 * This source code is derived from sha1.js of the same repository.
20838 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20839 * operation was added.
20840 */
20841
20842 var inherits = require('inherits')
20843 var Hash = require('./hash')
20844
20845 var K = [
20846 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20847 ]
20848
20849 var W = new Array(80)
20850
20851 function Sha () {
20852 this.init()
20853 this._w = W
20854
20855 Hash.call(this, 64, 56)
20856 }
20857
20858 inherits(Sha, Hash)
20859
20860 Sha.prototype.init = function () {
20861 this._a = 0x67452301
20862 this._b = 0xefcdab89
20863 this._c = 0x98badcfe
20864 this._d = 0x10325476
20865 this._e = 0xc3d2e1f0
20866
20867 return this
20868 }
20869
20870 function rotl5 (num) {
20871 return (num << 5) | (num >>> 27)
20872 }
20873
20874 function rotl30 (num) {
20875 return (num << 30) | (num >>> 2)
20876 }
20877
20878 function ft (s, b, c, d) {
20879 if (s === 0) return (b & c) | ((~b) & d)
20880 if (s === 2) return (b & c) | (b & d) | (c & d)
20881 return b ^ c ^ d
20882 }
20883
20884 Sha.prototype._update = function (M) {
20885 var W = this._w
20886
20887 var a = this._a | 0
20888 var b = this._b | 0
20889 var c = this._c | 0
20890 var d = this._d | 0
20891 var e = this._e | 0
20892
20893 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20894 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
20895
20896 for (var j = 0; j < 80; ++j) {
20897 var s = ~~(j / 20)
20898 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20899
20900 e = d
20901 d = c
20902 c = rotl30(b)
20903 b = a
20904 a = t
20905 }
20906
20907 this._a = (a + this._a) | 0
20908 this._b = (b + this._b) | 0
20909 this._c = (c + this._c) | 0
20910 this._d = (d + this._d) | 0
20911 this._e = (e + this._e) | 0
20912 }
20913
20914 Sha.prototype._hash = function () {
20915 var H = new Buffer(20)
20916
20917 H.writeInt32BE(this._a | 0, 0)
20918 H.writeInt32BE(this._b | 0, 4)
20919 H.writeInt32BE(this._c | 0, 8)
20920 H.writeInt32BE(this._d | 0, 12)
20921 H.writeInt32BE(this._e | 0, 16)
20922
20923 return H
20924 }
20925
20926 module.exports = Sha
20927
20928 }).call(this,require("buffer").Buffer)
20929 },{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20930 (function (Buffer){
20931 /*
20932 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20933 * in FIPS PUB 180-1
20934 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20935 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20936 * Distributed under the BSD License
20937 * See http://pajhome.org.uk/crypt/md5 for details.
20938 */
20939
20940 var inherits = require('inherits')
20941 var Hash = require('./hash')
20942
20943 var K = [
20944 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20945 ]
20946
20947 var W = new Array(80)
20948
20949 function Sha1 () {
20950 this.init()
20951 this._w = W
20952
20953 Hash.call(this, 64, 56)
20954 }
20955
20956 inherits(Sha1, Hash)
20957
20958 Sha1.prototype.init = function () {
20959 this._a = 0x67452301
20960 this._b = 0xefcdab89
20961 this._c = 0x98badcfe
20962 this._d = 0x10325476
20963 this._e = 0xc3d2e1f0
20964
20965 return this
20966 }
20967
20968 function rotl1 (num) {
20969 return (num << 1) | (num >>> 31)
20970 }
20971
20972 function rotl5 (num) {
20973 return (num << 5) | (num >>> 27)
20974 }
20975
20976 function rotl30 (num) {
20977 return (num << 30) | (num >>> 2)
20978 }
20979
20980 function ft (s, b, c, d) {
20981 if (s === 0) return (b & c) | ((~b) & d)
20982 if (s === 2) return (b & c) | (b & d) | (c & d)
20983 return b ^ c ^ d
20984 }
20985
20986 Sha1.prototype._update = function (M) {
20987 var W = this._w
20988
20989 var a = this._a | 0
20990 var b = this._b | 0
20991 var c = this._c | 0
20992 var d = this._d | 0
20993 var e = this._e | 0
20994
20995 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20996 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
20997
20998 for (var j = 0; j < 80; ++j) {
20999 var s = ~~(j / 20)
21000 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
21001
21002 e = d
21003 d = c
21004 c = rotl30(b)
21005 b = a
21006 a = t
21007 }
21008
21009 this._a = (a + this._a) | 0
21010 this._b = (b + this._b) | 0
21011 this._c = (c + this._c) | 0
21012 this._d = (d + this._d) | 0
21013 this._e = (e + this._e) | 0
21014 }
21015
21016 Sha1.prototype._hash = function () {
21017 var H = new Buffer(20)
21018
21019 H.writeInt32BE(this._a | 0, 0)
21020 H.writeInt32BE(this._b | 0, 4)
21021 H.writeInt32BE(this._c | 0, 8)
21022 H.writeInt32BE(this._d | 0, 12)
21023 H.writeInt32BE(this._e | 0, 16)
21024
21025 return H
21026 }
21027
21028 module.exports = Sha1
21029
21030 }).call(this,require("buffer").Buffer)
21031 },{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
21032 (function (Buffer){
21033 /**
21034 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21035 * in FIPS 180-2
21036 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21037 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21038 *
21039 */
21040
21041 var inherits = require('inherits')
21042 var Sha256 = require('./sha256')
21043 var Hash = require('./hash')
21044
21045 var W = new Array(64)
21046
21047 function Sha224 () {
21048 this.init()
21049
21050 this._w = W // new Array(64)
21051
21052 Hash.call(this, 64, 56)
21053 }
21054
21055 inherits(Sha224, Sha256)
21056
21057 Sha224.prototype.init = function () {
21058 this._a = 0xc1059ed8
21059 this._b = 0x367cd507
21060 this._c = 0x3070dd17
21061 this._d = 0xf70e5939
21062 this._e = 0xffc00b31
21063 this._f = 0x68581511
21064 this._g = 0x64f98fa7
21065 this._h = 0xbefa4fa4
21066
21067 return this
21068 }
21069
21070 Sha224.prototype._hash = function () {
21071 var H = new Buffer(28)
21072
21073 H.writeInt32BE(this._a, 0)
21074 H.writeInt32BE(this._b, 4)
21075 H.writeInt32BE(this._c, 8)
21076 H.writeInt32BE(this._d, 12)
21077 H.writeInt32BE(this._e, 16)
21078 H.writeInt32BE(this._f, 20)
21079 H.writeInt32BE(this._g, 24)
21080
21081 return H
21082 }
21083
21084 module.exports = Sha224
21085
21086 }).call(this,require("buffer").Buffer)
21087 },{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21088 (function (Buffer){
21089 /**
21090 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21091 * in FIPS 180-2
21092 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21093 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21094 *
21095 */
21096
21097 var inherits = require('inherits')
21098 var Hash = require('./hash')
21099
21100 var K = [
21101 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21102 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21103 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21104 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21105 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21106 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21107 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21108 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21109 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21110 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21111 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21112 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21113 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21114 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21115 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21116 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21117 ]
21118
21119 var W = new Array(64)
21120
21121 function Sha256 () {
21122 this.init()
21123
21124 this._w = W // new Array(64)
21125
21126 Hash.call(this, 64, 56)
21127 }
21128
21129 inherits(Sha256, Hash)
21130
21131 Sha256.prototype.init = function () {
21132 this._a = 0x6a09e667
21133 this._b = 0xbb67ae85
21134 this._c = 0x3c6ef372
21135 this._d = 0xa54ff53a
21136 this._e = 0x510e527f
21137 this._f = 0x9b05688c
21138 this._g = 0x1f83d9ab
21139 this._h = 0x5be0cd19
21140
21141 return this
21142 }
21143
21144 function ch (x, y, z) {
21145 return z ^ (x & (y ^ z))
21146 }
21147
21148 function maj (x, y, z) {
21149 return (x & y) | (z & (x | y))
21150 }
21151
21152 function sigma0 (x) {
21153 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
21154 }
21155
21156 function sigma1 (x) {
21157 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21158 }
21159
21160 function gamma0 (x) {
21161 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21162 }
21163
21164 function gamma1 (x) {
21165 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21166 }
21167
21168 Sha256.prototype._update = function (M) {
21169 var W = this._w
21170
21171 var a = this._a | 0
21172 var b = this._b | 0
21173 var c = this._c | 0
21174 var d = this._d | 0
21175 var e = this._e | 0
21176 var f = this._f | 0
21177 var g = this._g | 0
21178 var h = this._h | 0
21179
21180 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21181 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
21182
21183 for (var j = 0; j < 64; ++j) {
21184 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21185 var T2 = (sigma0(a) + maj(a, b, c)) | 0
21186
21187 h = g
21188 g = f
21189 f = e
21190 e = (d + T1) | 0
21191 d = c
21192 c = b
21193 b = a
21194 a = (T1 + T2) | 0
21195 }
21196
21197 this._a = (a + this._a) | 0
21198 this._b = (b + this._b) | 0
21199 this._c = (c + this._c) | 0
21200 this._d = (d + this._d) | 0
21201 this._e = (e + this._e) | 0
21202 this._f = (f + this._f) | 0
21203 this._g = (g + this._g) | 0
21204 this._h = (h + this._h) | 0
21205 }
21206
21207 Sha256.prototype._hash = function () {
21208 var H = new Buffer(32)
21209
21210 H.writeInt32BE(this._a, 0)
21211 H.writeInt32BE(this._b, 4)
21212 H.writeInt32BE(this._c, 8)
21213 H.writeInt32BE(this._d, 12)
21214 H.writeInt32BE(this._e, 16)
21215 H.writeInt32BE(this._f, 20)
21216 H.writeInt32BE(this._g, 24)
21217 H.writeInt32BE(this._h, 28)
21218
21219 return H
21220 }
21221
21222 module.exports = Sha256
21223
21224 }).call(this,require("buffer").Buffer)
21225 },{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21226 (function (Buffer){
21227 var inherits = require('inherits')
21228 var SHA512 = require('./sha512')
21229 var Hash = require('./hash')
21230
21231 var W = new Array(160)
21232
21233 function Sha384 () {
21234 this.init()
21235 this._w = W
21236
21237 Hash.call(this, 128, 112)
21238 }
21239
21240 inherits(Sha384, SHA512)
21241
21242 Sha384.prototype.init = function () {
21243 this._ah = 0xcbbb9d5d
21244 this._bh = 0x629a292a
21245 this._ch = 0x9159015a
21246 this._dh = 0x152fecd8
21247 this._eh = 0x67332667
21248 this._fh = 0x8eb44a87
21249 this._gh = 0xdb0c2e0d
21250 this._hh = 0x47b5481d
21251
21252 this._al = 0xc1059ed8
21253 this._bl = 0x367cd507
21254 this._cl = 0x3070dd17
21255 this._dl = 0xf70e5939
21256 this._el = 0xffc00b31
21257 this._fl = 0x68581511
21258 this._gl = 0x64f98fa7
21259 this._hl = 0xbefa4fa4
21260
21261 return this
21262 }
21263
21264 Sha384.prototype._hash = function () {
21265 var H = new Buffer(48)
21266
21267 function writeInt64BE (h, l, offset) {
21268 H.writeInt32BE(h, offset)
21269 H.writeInt32BE(l, offset + 4)
21270 }
21271
21272 writeInt64BE(this._ah, this._al, 0)
21273 writeInt64BE(this._bh, this._bl, 8)
21274 writeInt64BE(this._ch, this._cl, 16)
21275 writeInt64BE(this._dh, this._dl, 24)
21276 writeInt64BE(this._eh, this._el, 32)
21277 writeInt64BE(this._fh, this._fl, 40)
21278
21279 return H
21280 }
21281
21282 module.exports = Sha384
21283
21284 }).call(this,require("buffer").Buffer)
21285 },{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21286 (function (Buffer){
21287 var inherits = require('inherits')
21288 var Hash = require('./hash')
21289
21290 var K = [
21291 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21292 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21293 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21294 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21295 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21296 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21297 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21298 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21299 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21300 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21301 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21302 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21303 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21304 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21305 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21306 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21307 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21308 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21309 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21310 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21311 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21312 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21313 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21314 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21315 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21316 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21317 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21318 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21319 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21320 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21321 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21322 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21323 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21324 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21325 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21326 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21327 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21328 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21329 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21330 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21331 ]
21332
21333 var W = new Array(160)
21334
21335 function Sha512 () {
21336 this.init()
21337 this._w = W
21338
21339 Hash.call(this, 128, 112)
21340 }
21341
21342 inherits(Sha512, Hash)
21343
21344 Sha512.prototype.init = function () {
21345 this._ah = 0x6a09e667
21346 this._bh = 0xbb67ae85
21347 this._ch = 0x3c6ef372
21348 this._dh = 0xa54ff53a
21349 this._eh = 0x510e527f
21350 this._fh = 0x9b05688c
21351 this._gh = 0x1f83d9ab
21352 this._hh = 0x5be0cd19
21353
21354 this._al = 0xf3bcc908
21355 this._bl = 0x84caa73b
21356 this._cl = 0xfe94f82b
21357 this._dl = 0x5f1d36f1
21358 this._el = 0xade682d1
21359 this._fl = 0x2b3e6c1f
21360 this._gl = 0xfb41bd6b
21361 this._hl = 0x137e2179
21362
21363 return this
21364 }
21365
21366 function Ch (x, y, z) {
21367 return z ^ (x & (y ^ z))
21368 }
21369
21370 function maj (x, y, z) {
21371 return (x & y) | (z & (x | y))
21372 }
21373
21374 function sigma0 (x, xl) {
21375 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21376 }
21377
21378 function sigma1 (x, xl) {
21379 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21380 }
21381
21382 function Gamma0 (x, xl) {
21383 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
21384 }
21385
21386 function Gamma0l (x, xl) {
21387 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21388 }
21389
21390 function Gamma1 (x, xl) {
21391 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21392 }
21393
21394 function Gamma1l (x, xl) {
21395 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21396 }
21397
21398 function getCarry (a, b) {
21399 return (a >>> 0) < (b >>> 0) ? 1 : 0
21400 }
21401
21402 Sha512.prototype._update = function (M) {
21403 var W = this._w
21404
21405 var ah = this._ah | 0
21406 var bh = this._bh | 0
21407 var ch = this._ch | 0
21408 var dh = this._dh | 0
21409 var eh = this._eh | 0
21410 var fh = this._fh | 0
21411 var gh = this._gh | 0
21412 var hh = this._hh | 0
21413
21414 var al = this._al | 0
21415 var bl = this._bl | 0
21416 var cl = this._cl | 0
21417 var dl = this._dl | 0
21418 var el = this._el | 0
21419 var fl = this._fl | 0
21420 var gl = this._gl | 0
21421 var hl = this._hl | 0
21422
21423 for (var i = 0; i < 32; i += 2) {
21424 W[i] = M.readInt32BE(i * 4)
21425 W[i + 1] = M.readInt32BE(i * 4 + 4)
21426 }
21427 for (; i < 160; i += 2) {
21428 var xh = W[i - 15 * 2]
21429 var xl = W[i - 15 * 2 + 1]
21430 var gamma0 = Gamma0(xh, xl)
21431 var gamma0l = Gamma0l(xl, xh)
21432
21433 xh = W[i - 2 * 2]
21434 xl = W[i - 2 * 2 + 1]
21435 var gamma1 = Gamma1(xh, xl)
21436 var gamma1l = Gamma1l(xl, xh)
21437
21438 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21439 var Wi7h = W[i - 7 * 2]
21440 var Wi7l = W[i - 7 * 2 + 1]
21441
21442 var Wi16h = W[i - 16 * 2]
21443 var Wi16l = W[i - 16 * 2 + 1]
21444
21445 var Wil = (gamma0l + Wi7l) | 0
21446 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21447 Wil = (Wil + gamma1l) | 0
21448 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21449 Wil = (Wil + Wi16l) | 0
21450 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
21451
21452 W[i] = Wih
21453 W[i + 1] = Wil
21454 }
21455
21456 for (var j = 0; j < 160; j += 2) {
21457 Wih = W[j]
21458 Wil = W[j + 1]
21459
21460 var majh = maj(ah, bh, ch)
21461 var majl = maj(al, bl, cl)
21462
21463 var sigma0h = sigma0(ah, al)
21464 var sigma0l = sigma0(al, ah)
21465 var sigma1h = sigma1(eh, el)
21466 var sigma1l = sigma1(el, eh)
21467
21468 // t1 = h + sigma1 + ch + K[j] + W[j]
21469 var Kih = K[j]
21470 var Kil = K[j + 1]
21471
21472 var chh = Ch(eh, fh, gh)
21473 var chl = Ch(el, fl, gl)
21474
21475 var t1l = (hl + sigma1l) | 0
21476 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21477 t1l = (t1l + chl) | 0
21478 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21479 t1l = (t1l + Kil) | 0
21480 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21481 t1l = (t1l + Wil) | 0
21482 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
21483
21484 // t2 = sigma0 + maj
21485 var t2l = (sigma0l + majl) | 0
21486 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21487
21488 hh = gh
21489 hl = gl
21490 gh = fh
21491 gl = fl
21492 fh = eh
21493 fl = el
21494 el = (dl + t1l) | 0
21495 eh = (dh + t1h + getCarry(el, dl)) | 0
21496 dh = ch
21497 dl = cl
21498 ch = bh
21499 cl = bl
21500 bh = ah
21501 bl = al
21502 al = (t1l + t2l) | 0
21503 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21504 }
21505
21506 this._al = (this._al + al) | 0
21507 this._bl = (this._bl + bl) | 0
21508 this._cl = (this._cl + cl) | 0
21509 this._dl = (this._dl + dl) | 0
21510 this._el = (this._el + el) | 0
21511 this._fl = (this._fl + fl) | 0
21512 this._gl = (this._gl + gl) | 0
21513 this._hl = (this._hl + hl) | 0
21514
21515 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21516 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21517 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21518 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21519 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21520 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21521 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21522 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21523 }
21524
21525 Sha512.prototype._hash = function () {
21526 var H = new Buffer(64)
21527
21528 function writeInt64BE (h, l, offset) {
21529 H.writeInt32BE(h, offset)
21530 H.writeInt32BE(l, offset + 4)
21531 }
21532
21533 writeInt64BE(this._ah, this._al, 0)
21534 writeInt64BE(this._bh, this._bl, 8)
21535 writeInt64BE(this._ch, this._cl, 16)
21536 writeInt64BE(this._dh, this._dl, 24)
21537 writeInt64BE(this._eh, this._el, 32)
21538 writeInt64BE(this._fh, this._fl, 40)
21539 writeInt64BE(this._gh, this._gl, 48)
21540 writeInt64BE(this._hh, this._hl, 56)
21541
21542 return H
21543 }
21544
21545 module.exports = Sha512
21546
21547 }).call(this,require("buffer").Buffer)
21548 },{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21549 var inherits = require('inherits')
21550 var native = require('./native')
21551
21552 function TfTypeError (type, value, valueTypeName) {
21553 this.__error = Error.call(this)
21554 this.__type = type
21555 this.__value = value
21556 this.__valueTypeName = valueTypeName
21557
21558 var message
21559 Object.defineProperty(this, 'message', {
21560 enumerable: true,
21561 get: function () {
21562 if (message) return message
21563
21564 valueTypeName = valueTypeName || getValueTypeName(value)
21565 message = tfErrorString(type, value, valueTypeName)
21566
21567 return message
21568 }
21569 })
21570 }
21571
21572 function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21573 this.__error = error || Error.call(this)
21574 this.__label = label
21575 this.__property = property
21576 this.__type = type
21577 this.__value = value
21578 this.__valueTypeName = valueTypeName
21579
21580 var message
21581 Object.defineProperty(this, 'message', {
21582 enumerable: true,
21583 get: function () {
21584 if (message) return message
21585 if (type) {
21586 valueTypeName = valueTypeName || getValueTypeName(value)
21587 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21588 } else {
21589 message = 'Unexpected property "' + property + '"'
21590 }
21591
21592 return message
21593 }
21594 })
21595 }
21596
21597 // inherit from Error, assign stack
21598 [TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21599 inherits(tfErrorType, Error)
21600 Object.defineProperty(tfErrorType, 'stack', {
21601 get: function () { return this.__error.stack }
21602 })
21603 })
21604
21605 function tfCustomError (expected, actual) {
21606 return new TfTypeError(expected, {}, actual)
21607 }
21608
21609 function tfSubError (e, property, label) {
21610 // sub child?
21611 if (e instanceof TfPropertyTypeError) {
21612 property = property + '.' + e.__property
21613 label = e.__label
21614
21615 return new TfPropertyTypeError(
21616 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21617 )
21618 }
21619
21620 // child?
21621 if (e instanceof TfTypeError) {
21622 return new TfPropertyTypeError(
21623 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21624 )
21625 }
21626
21627 return e
21628 }
21629
21630 function getTypeName (fn) {
21631 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21632 }
21633
21634 function getValueTypeName (value) {
21635 return native.Nil(value) ? '' : getTypeName(value.constructor)
21636 }
21637
21638 function getValue (value) {
21639 if (native.Function(value)) return ''
21640 if (native.String(value)) return JSON.stringify(value)
21641 if (value && native.Object(value)) return ''
21642 return value
21643 }
21644
21645 function tfJSON (type) {
21646 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21647 if (native.Array(type)) return 'Array'
21648 if (type && native.Object(type)) return 'Object'
21649
21650 return type !== undefined ? type : ''
21651 }
21652
21653 function tfErrorString (type, value, valueTypeName) {
21654 var valueJson = getValue(value)
21655
21656 return 'Expected ' + tfJSON(type) + ', got' +
21657 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21658 (valueJson !== '' ? ' ' + valueJson : '')
21659 }
21660
21661 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21662 var description = '" of type '
21663 if (label === 'key') description = '" with key type '
21664
21665 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
21666 }
21667
21668 module.exports = {
21669 TfTypeError: TfTypeError,
21670 TfPropertyTypeError: TfPropertyTypeError,
21671 tfCustomError: tfCustomError,
21672 tfSubError: tfSubError,
21673 tfJSON: tfJSON,
21674 getValueTypeName: getValueTypeName
21675 }
21676
21677 },{"./native":110,"inherits":93}],108:[function(require,module,exports){
21678 (function (Buffer){
21679 var NATIVE = require('./native')
21680 var ERRORS = require('./errors')
21681
21682 function _Buffer (value) {
21683 return Buffer.isBuffer(value)
21684 }
21685
21686 function Hex (value) {
21687 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21688 }
21689
21690 function _LengthN (type, length) {
21691 var name = type.toJSON()
21692
21693 function Length (value) {
21694 if (!type(value)) return false
21695 if (value.length === length) return true
21696
21697 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21698 }
21699 Length.toJSON = function () { return name }
21700
21701 return Length
21702 }
21703
21704 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21705 var _BufferN = _LengthN.bind(null, _Buffer)
21706 var _HexN = _LengthN.bind(null, Hex)
21707
21708 var UINT53_MAX = Math.pow(2, 53) - 1
21709
21710 function Finite (value) {
21711 return typeof value === 'number' && isFinite(value)
21712 }
21713 function Int8 (value) { return ((value << 24) >> 24) === value }
21714 function Int16 (value) { return ((value << 16) >> 16) === value }
21715 function Int32 (value) { return (value | 0) === value }
21716 function UInt8 (value) { return (value & 0xff) === value }
21717 function UInt16 (value) { return (value & 0xffff) === value }
21718 function UInt32 (value) { return (value >>> 0) === value }
21719 function UInt53 (value) {
21720 return typeof value === 'number' &&
21721 value >= 0 &&
21722 value <= UINT53_MAX &&
21723 Math.floor(value) === value
21724 }
21725
21726 var types = {
21727 ArrayN: _ArrayN,
21728 Buffer: _Buffer,
21729 BufferN: _BufferN,
21730 Finite: Finite,
21731 Hex: Hex,
21732 HexN: _HexN,
21733 Int8: Int8,
21734 Int16: Int16,
21735 Int32: Int32,
21736 UInt8: UInt8,
21737 UInt16: UInt16,
21738 UInt32: UInt32,
21739 UInt53: UInt53
21740 }
21741
21742 for (var typeName in types) {
21743 types[typeName].toJSON = function (t) {
21744 return t
21745 }.bind(null, typeName)
21746 }
21747
21748 module.exports = types
21749
21750 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21751 },{"../../../../../.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){
21752 var ERRORS = require('./errors')
21753 var NATIVE = require('./native')
21754
21755 // short-hand
21756 var tfJSON = ERRORS.tfJSON
21757 var TfTypeError = ERRORS.TfTypeError
21758 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21759 var tfSubError = ERRORS.tfSubError
21760 var getValueTypeName = ERRORS.getValueTypeName
21761
21762 var TYPES = {
21763 arrayOf: function arrayOf (type) {
21764 type = compile(type)
21765
21766 function _arrayOf (array, strict) {
21767 if (!NATIVE.Array(array)) return false
21768
21769 return array.every(function (value, i) {
21770 try {
21771 return typeforce(type, value, strict)
21772 } catch (e) {
21773 throw tfSubError(e, i)
21774 }
21775 })
21776 }
21777 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
21778
21779 return _arrayOf
21780 },
21781
21782 maybe: function maybe (type) {
21783 type = compile(type)
21784
21785 function _maybe (value, strict) {
21786 return NATIVE.Nil(value) || type(value, strict, maybe)
21787 }
21788 _maybe.toJSON = function () { return '?' + tfJSON(type) }
21789
21790 return _maybe
21791 },
21792
21793 map: function map (propertyType, propertyKeyType) {
21794 propertyType = compile(propertyType)
21795 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
21796
21797 function _map (value, strict) {
21798 if (!NATIVE.Object(value, strict)) return false
21799 if (NATIVE.Nil(value, strict)) return false
21800
21801 for (var propertyName in value) {
21802 try {
21803 if (propertyKeyType) {
21804 typeforce(propertyKeyType, propertyName, strict)
21805 }
21806 } catch (e) {
21807 throw tfSubError(e, propertyName, 'key')
21808 }
21809
21810 try {
21811 var propertyValue = value[propertyName]
21812 typeforce(propertyType, propertyValue, strict)
21813 } catch (e) {
21814 throw tfSubError(e, propertyName)
21815 }
21816 }
21817
21818 return true
21819 }
21820
21821 if (propertyKeyType) {
21822 _map.toJSON = function () {
21823 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
21824 }
21825 } else {
21826 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
21827 }
21828
21829 return _map
21830 },
21831
21832 object: function object (uncompiled) {
21833 var type = {}
21834
21835 for (var typePropertyName in uncompiled) {
21836 type[typePropertyName] = compile(uncompiled[typePropertyName])
21837 }
21838
21839 function _object (value, strict) {
21840 if (!NATIVE.Object(value)) return false
21841 if (NATIVE.Nil(value)) return false
21842
21843 var propertyName
21844
21845 try {
21846 for (propertyName in type) {
21847 var propertyType = type[propertyName]
21848 var propertyValue = value[propertyName]
21849
21850 typeforce(propertyType, propertyValue, strict)
21851 }
21852 } catch (e) {
21853 throw tfSubError(e, propertyName)
21854 }
21855
21856 if (strict) {
21857 for (propertyName in value) {
21858 if (type[propertyName]) continue
21859
21860 throw new TfPropertyTypeError(undefined, propertyName)
21861 }
21862 }
21863
21864 return true
21865 }
21866 _object.toJSON = function () { return tfJSON(type) }
21867
21868 return _object
21869 },
21870
21871 oneOf: function oneOf () {
21872 var types = [].slice.call(arguments).map(compile)
21873
21874 function _oneOf (value, strict) {
21875 return types.some(function (type) {
21876 try {
21877 return typeforce(type, value, strict)
21878 } catch (e) {
21879 return false
21880 }
21881 })
21882 }
21883 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
21884
21885 return _oneOf
21886 },
21887
21888 quacksLike: function quacksLike (type) {
21889 function _quacksLike (value) {
21890 return type === getValueTypeName(value)
21891 }
21892 _quacksLike.toJSON = function () { return type }
21893
21894 return _quacksLike
21895 },
21896
21897 tuple: function tuple () {
21898 var types = [].slice.call(arguments).map(compile)
21899
21900 function _tuple (values, strict) {
21901 return types.every(function (type, i) {
21902 try {
21903 return typeforce(type, values[i], strict)
21904 } catch (e) {
21905 throw tfSubError(e, i)
21906 }
21907 }) && (!strict || values.length === arguments.length)
21908 }
21909 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
21910
21911 return _tuple
21912 },
21913
21914 value: function value (expected) {
21915 function _value (actual) {
21916 return actual === expected
21917 }
21918 _value.toJSON = function () { return expected }
21919
21920 return _value
21921 }
21922 }
21923
21924 function compile (type) {
21925 if (NATIVE.String(type)) {
21926 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
21927
21928 return NATIVE[type] || TYPES.quacksLike(type)
21929 } else if (type && NATIVE.Object(type)) {
21930 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
21931
21932 return TYPES.object(type)
21933 } else if (NATIVE.Function(type)) {
21934 return type
21935 }
21936
21937 return TYPES.value(type)
21938 }
21939
21940 function typeforce (type, value, strict, surrogate) {
21941 if (NATIVE.Function(type)) {
21942 if (type(value, strict)) return true
21943
21944 throw new TfTypeError(surrogate || type, value)
21945 }
21946
21947 // JIT
21948 return typeforce(compile(type), value, strict)
21949 }
21950
21951 // assign types to typeforce function
21952 for (var typeName in NATIVE) {
21953 typeforce[typeName] = NATIVE[typeName]
21954 }
21955
21956 for (typeName in TYPES) {
21957 typeforce[typeName] = TYPES[typeName]
21958 }
21959
21960 var EXTRA = require('./extra')
21961 for (typeName in EXTRA) {
21962 typeforce[typeName] = EXTRA[typeName]
21963 }
21964
21965 // async wrapper
21966 function __async (type, value, strict, callback) {
21967 // default to falsy strict if using shorthand overload
21968 if (typeof strict === 'function') return __async(type, value, false, strict)
21969
21970 try {
21971 typeforce(type, value, strict)
21972 } catch (e) {
21973 return callback(e)
21974 }
21975
21976 callback()
21977 }
21978
21979 typeforce.async = __async
21980 typeforce.compile = compile
21981 typeforce.TfTypeError = TfTypeError
21982 typeforce.TfPropertyTypeError = TfPropertyTypeError
21983
21984 module.exports = typeforce
21985
21986 },{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21987 var types = {
21988 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21989 Boolean: function (value) { return typeof value === 'boolean' },
21990 Function: function (value) { return typeof value === 'function' },
21991 Nil: function (value) { return value === undefined || value === null },
21992 Number: function (value) { return typeof value === 'number' },
21993 Object: function (value) { return typeof value === 'object' },
21994 String: function (value) { return typeof value === 'string' },
21995 '': function () { return true }
21996 }
21997
21998 // TODO: deprecate
21999 types.Null = types.Nil
22000
22001 for (var typeName in types) {
22002 types[typeName].toJSON = function (t) {
22003 return t
22004 }.bind(null, typeName)
22005 }
22006
22007 module.exports = types
22008
22009 },{}],111:[function(require,module,exports){
22010 (function (Buffer){
22011 'use strict'
22012
22013 // Number.MAX_SAFE_INTEGER
22014 var MAX_SAFE_INTEGER = 9007199254740991
22015
22016 function checkUInt53 (n) {
22017 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
22018 }
22019
22020 function encode (number, buffer, offset) {
22021 checkUInt53(number)
22022
22023 if (!buffer) buffer = new Buffer(encodingLength(number))
22024 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22025 if (!offset) offset = 0
22026
22027 // 8 bit
22028 if (number < 0xfd) {
22029 buffer.writeUInt8(number, offset)
22030 encode.bytes = 1
22031
22032 // 16 bit
22033 } else if (number <= 0xffff) {
22034 buffer.writeUInt8(0xfd, offset)
22035 buffer.writeUInt16LE(number, offset + 1)
22036 encode.bytes = 3
22037
22038 // 32 bit
22039 } else if (number <= 0xffffffff) {
22040 buffer.writeUInt8(0xfe, offset)
22041 buffer.writeUInt32LE(number, offset + 1)
22042 encode.bytes = 5
22043
22044 // 64 bit
22045 } else {
22046 buffer.writeUInt8(0xff, offset)
22047 buffer.writeUInt32LE(number >>> 0, offset + 1)
22048 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
22049 encode.bytes = 9
22050 }
22051
22052 return buffer
22053 }
22054
22055 function decode (buffer, offset) {
22056 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22057 if (!offset) offset = 0
22058
22059 var first = buffer.readUInt8(offset)
22060
22061 // 8 bit
22062 if (first < 0xfd) {
22063 decode.bytes = 1
22064 return first
22065
22066 // 16 bit
22067 } else if (first === 0xfd) {
22068 decode.bytes = 3
22069 return buffer.readUInt16LE(offset + 1)
22070
22071 // 32 bit
22072 } else if (first === 0xfe) {
22073 decode.bytes = 5
22074 return buffer.readUInt32LE(offset + 1)
22075
22076 // 64 bit
22077 } else {
22078 decode.bytes = 9
22079 var lo = buffer.readUInt32LE(offset + 1)
22080 var hi = buffer.readUInt32LE(offset + 5)
22081 var number = hi * 0x0100000000 + lo
22082 checkUInt53(number)
22083
22084 return number
22085 }
22086 }
22087
22088 function encodingLength (number) {
22089 checkUInt53(number)
22090
22091 return (
22092 number < 0xfd ? 1
22093 : number <= 0xffff ? 3
22094 : number <= 0xffffffff ? 5
22095 : 9
22096 )
22097 }
22098
22099 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
22100
22101 }).call(this,require("buffer").Buffer)
22102 },{"buffer":4}],112:[function(require,module,exports){
22103 (function (Buffer){
22104 var bs58check = require('bs58check')
22105
22106 function decodeRaw (buffer, version) {
22107 // check version only if defined
22108 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
22109
22110 // uncompressed
22111 if (buffer.length === 33) {
22112 return {
22113 version: buffer[0],
22114 privateKey: buffer.slice(1, 33),
22115 compressed: false
22116 }
22117 }
22118
22119 // invalid length
22120 if (buffer.length !== 34) throw new Error('Invalid WIF length')
22121
22122 // invalid compression flag
22123 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
22124
22125 return {
22126 version: buffer[0],
22127 privateKey: buffer.slice(1, 33),
22128 compressed: true
22129 }
22130 }
22131
22132 function encodeRaw (version, privateKey, compressed) {
22133 var result = new Buffer(compressed ? 34 : 33)
22134
22135 result.writeUInt8(version, 0)
22136 privateKey.copy(result, 1)
22137
22138 if (compressed) {
22139 result[33] = 0x01
22140 }
22141
22142 return result
22143 }
22144
22145 function decode (string, version) {
22146 return decodeRaw(bs58check.decode(string), version)
22147 }
22148
22149 function encode (version, privateKey, compressed) {
22150 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
22151
22152 return bs58check.encode(
22153 encodeRaw(
22154 version.version,
22155 version.privateKey,
22156 version.compressed
22157 )
22158 )
22159 }
22160
22161 module.exports = {
22162 decode: decode,
22163 decodeRaw: decodeRaw,
22164 encode: encode,
22165 encodeRaw: encodeRaw
22166 }
22167
22168 }).call(this,require("buffer").Buffer)
22169 },{"bs58check":80,"buffer":4}]},{},[33])(33)
22170 });
22171 </script>
22172 <script>bitcoinjs.bitcoin.networks.shadow = {
22173 messagePrefix: 'unused',
22174 bip32: {
22175 public: 0xEE80286A,
22176 private: 0xEE8031E8
22177 },
22178 pubKeyHash: 0x3f,
22179 scriptHash: 0x7d,
22180 wif: 0xbf
22181 };
22182
22183 bitcoinjs.bitcoin.networks.shadowtn = {
22184 messagePrefix: 'unused',
22185 bip32: {
22186 public: 0x76C0FDFB,
22187 private: 0x76C1077A
22188 },
22189 pubKeyHash: 0x7f,
22190 scriptHash: 0xc4,
22191 wif: 0xff
22192 };
22193
22194 bitcoinjs.bitcoin.networks.clam = {
22195 messagePrefix: 'unused',
22196 bip32: {
22197 public: 0xa8c26d64,
22198 private: 0xa8c17826
22199 },
22200 pubKeyHash: 0x89,
22201 scriptHash: 0x00, // TODO set this correctly
22202 wif: 0x85
22203 };
22204
22205 bitcoinjs.bitcoin.networks.crown = {
22206 messagePrefix: 'unused',
22207 bip32: {
22208 public: 0x0488b21e,
22209 private: 0x0488ade4
22210 },
22211 pubKeyHash: 0x00,
22212 scriptHash: 0x05,
22213 wif: 0x80
22214 };
22215
22216 bitcoinjs.bitcoin.networks.dash = {
22217 messagePrefix: 'unused',
22218 bip32: {
22219 public: 0x0488b21e,
22220 private: 0x0488ade4
22221 },
22222 pubKeyHash: 0x4c,
22223 scriptHash: 0x10,
22224 wif: 0xcc
22225 };
22226
22227 bitcoinjs.bitcoin.networks.maza = {
22228 messagePrefix: 'unused',
22229 bip32: {
22230 public: 0x0488b21e,
22231 private: 0x0488ade4
22232 },
22233 pubKeyHash: 0x32,
22234 scriptHash: 0x09,
22235 wif: 0xe0
22236 };
22237
22238 bitcoinjs.bitcoin.networks.dashtn = {
22239 messagePrefix: 'unused',
22240 bip32: {
22241 public: 0x043587cf,
22242 private: 0x04358394
22243 },
22244 pubKeyHash: 0x8c,
22245 scriptHash: 0x13,
22246 wif: 0xef
22247 };
22248
22249 bitcoinjs.bitcoin.networks.game = {
22250 messagePrefix: 'unused',
22251 bip32: {
22252 public: 0x0488b21e,
22253 private: 0x0488ade4
22254 },
22255 pubKeyHash: 0x26,
22256 scriptHash: 0x05,
22257 wif: 0xa6
22258 };
22259
22260 bitcoinjs.bitcoin.networks.namecoin = {
22261 messagePrefix: 'unused',
22262 bip32: {
22263 public: 0x0488b21e,
22264 private: 0x0488ade4
22265 },
22266 pubKeyHash: 0x34,
22267 scriptHash: 0x00, // TODO set this correctly
22268 wif: 0x80
22269 };
22270
22271 bitcoinjs.bitcoin.networks.peercoin = {
22272 messagePrefix: 'unused',
22273 bip32: {
22274 public: 0x0488b21e,
22275 private: 0x0488ade4
22276 },
22277 pubKeyHash: 0x37,
22278 scriptHash: 0x00, // TODO set this correctly
22279 wif: 0xb7
22280 };
22281
22282 bitcoinjs.bitcoin.networks.slimcoin = {
22283 messagePrefix: 'unused',
22284 bip32: {
22285 public: 0xef6adf10,
22286 private: 0xef69ea80
22287 },
22288 pubKeyHash: 0x3f,
22289 scriptHash: 0x7d,
22290 wif: 0x46
22291 };
22292
22293 bitcoinjs.bitcoin.networks.slimcointn = {
22294 messagePrefix: 'unused',
22295 bip32: {
22296 public: 0x043587CF,
22297 private: 0x04358394
22298 },
22299 pubKeyHash: 0x6f,
22300 scriptHash: 0xc4,
22301 wif: 0x57
22302 };
22303
22304 bitcoinjs.bitcoin.networks.dogecoin = {
22305 messagePrefix: '\x19Dogecoin Signed Message:\n',
22306 bip32: {
22307 public: 0x02facafd,
22308 private: 0x02fac398
22309 },
22310 pubKeyHash: 0x1e,
22311 scriptHash: 0x16,
22312 wif: 0x9e
22313 };
22314
22315 bitcoinjs.bitcoin.networks.viacoin = {
22316 messagePrefix: '\x18Viacoin Signed Message:\n',
22317 bip32: {
22318 public: 0x0488b21e,
22319 private: 0x0488ade4
22320 },
22321 pubKeyHash: 0x47,
22322 scriptHash: 0x21,
22323 wif: 0xc7
22324 };
22325
22326 bitcoinjs.bitcoin.networks.viacointestnet = {
22327 messagePrefix: '\x18Viacoin Signed Message:\n',
22328 bip32: {
22329 public: 0x043587cf,
22330 private: 0x04358394
22331 },
22332 pubKeyHash: 0x7f,
22333 scriptHash: 0xc4,
22334 wif: 0xff
22335 };
22336
22337 bitcoinjs.bitcoin.networks.gamerscoin = {
22338 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22339 bip32: {
22340 public: 0x019da462,
22341 private: 0x019d9cfe
22342 },
22343 pubKeyHash: 0x26,
22344 scriptHash: 0x05,
22345 wif: 0xA6
22346 };
22347
22348 bitcoinjs.bitcoin.networks.jumbucks = {
22349 messagePrefix: '\x19Jumbucks Signed Message:\n',
22350 bip32: {
22351 public: 0x037a689a,
22352 private: 0x037a6460
22353 },
22354 pubKeyHash: 0x2b,
22355 scriptHash: 0x05,
22356 wif: 0xab
22357 };
22358
22359 bitcoinjs.bitcoin.networks.zetacoin = {
22360 messagePrefix: '\x18Zetacoin Signed Message:\n',
22361 bip32: {
22362 public: 0x0488b21e,
22363 private: 0x0488ade4
22364 },
22365 pubKeyHash: 0x50,
22366 scriptHash: 0x09,
22367 wif: 0xe0
22368 };
22369
22370 bitcoinjs.bitcoin.networks.myriadcoin = {
22371 messagePrefix: 'unused',
22372 bip32: {
22373 public: 0x0488b21e,
22374 private: 0x0488ade4
22375 },
22376 pubKeyHash: 0x32,
22377 scriptHash: 0x00, // TODO set this correctly
22378 wif: 0xb2
22379 };
22380
22381 bitcoinjs.bitcoin.networks.pivx = {
22382 messagePrefix: 'unused',
22383 bip32: {
22384 public: 0x022d2533,
22385 private: 0x0221312b
22386 },
22387 pubKeyHash: 0x1e,
22388 scriptHash: 0x0d,
22389 wif: 0xd4
22390 };
22391
22392 bitcoinjs.bitcoin.networks.pivxtestnet = {
22393 messagePrefix: 'unused',
22394 bip32: {
22395 public: 0x3a8061a0,
22396 private: 0x3a805837
22397 },
22398 pubKeyHash: 0x8b,
22399 scriptHash: 0x13,
22400 wif: 0xef
22401 };
22402
22403 bitcoinjs.bitcoin.networks.fujicoin = {
22404 messagePrefix: '\x19FujiCoin Signed Message:\n',
22405 bip32: {
22406 public: 0x0488b21e,
22407 private: 0x0488ade4
22408 },
22409 pubKeyHash: 0x24,
22410 scriptHash: 0x10,
22411 wif: 0xa4
22412 };
22413
22414 bitcoinjs.bitcoin.networks.nubits = {
22415 messagePrefix: '\x18Nu Signed Message:\n',
22416 bip32: {
22417 public: 0x0488b21e,
22418 private: 0x0488ade4
22419 },
22420 pubKeyHash: 0x19,
22421 scriptHash: 0x1a,
22422 wif: 0x96,
22423 };
22424
22425 bitcoinjs.bitcoin.networks.bitcoinCashBitbpay = {
22426 messagePrefix: '\x18Bitcoin Signed Message:\n',
22427 bip32: {
22428 public: 0x0488b21e,
22429 private: 0x0488ade4
22430 },
22431 pubKeyHash: 0x1c,
22432 scriptHash: 0x28,
22433 wif: 0x80
22434 };
22435
22436 bitcoinjs.bitcoin.networks.bitcoinBip49 = {
22437 messagePrefix: '\x18Bitcoin Signed Message:\n',
22438 bip32: {
22439 public: 0x049d7cb2,
22440 private: 0x049d7878
22441 },
22442 pubKeyHash: 0x00,
22443 scriptHash: 0x05,
22444 wif: 0x80
22445 };
22446
22447 bitcoinjs.bitcoin.networks.testnetBip49 = {
22448 messagePrefix: '\x18Bitcoin Signed Message:\n',
22449 bip32: {
22450 public: 0x044a5262,
22451 private: 0x044a4e28
22452 },
22453 pubKeyHash: 0x6f,
22454 scriptHash: 0xc4,
22455 wif: 0xef
22456 };
22457
22458 bitcoinjs.bitcoin.networks.litecoinBip49 = {
22459 messagePrefix: '\x19Litecoin Signed Message:\n',
22460 bip32: {
22461 public: 0x01b26ef6,
22462 private: 0x01b26792
22463 },
22464 pubKeyHash: 0x30,
22465 scriptHash: 0x32,
22466 wif: 0xb0
22467 };
22468 </script>
22469 <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){
22470 (function (global){
22471 'use strict';
22472
22473 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22474 // original notice:
22475
22476 /*!
22477 * The buffer module from node.js, for the browser.
22478 *
22479 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22480 * @license MIT
22481 */
22482 function compare(a, b) {
22483 if (a === b) {
22484 return 0;
22485 }
22486
22487 var x = a.length;
22488 var y = b.length;
22489
22490 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22491 if (a[i] !== b[i]) {
22492 x = a[i];
22493 y = b[i];
22494 break;
22495 }
22496 }
22497
22498 if (x < y) {
22499 return -1;
22500 }
22501 if (y < x) {
22502 return 1;
22503 }
22504 return 0;
22505 }
22506 function isBuffer(b) {
22507 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22508 return global.Buffer.isBuffer(b);
22509 }
22510 return !!(b != null && b._isBuffer);
22511 }
22512
22513 // based on node assert, original notice:
22514
22515 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22516 //
22517 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22518 //
22519 // Originally from narwhal.js (http://narwhaljs.org)
22520 // Copyright (c) 2009 Thomas Robinson <280north.com>
22521 //
22522 // Permission is hereby granted, free of charge, to any person obtaining a copy
22523 // of this software and associated documentation files (the 'Software'), to
22524 // deal in the Software without restriction, including without limitation the
22525 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22526 // sell copies of the Software, and to permit persons to whom the Software is
22527 // furnished to do so, subject to the following conditions:
22528 //
22529 // The above copyright notice and this permission notice shall be included in
22530 // all copies or substantial portions of the Software.
22531 //
22532 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22533 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22534 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22535 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22536 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22537 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22538
22539 var util = require('util/');
22540 var hasOwn = Object.prototype.hasOwnProperty;
22541 var pSlice = Array.prototype.slice;
22542 var functionsHaveNames = (function () {
22543 return function foo() {}.name === 'foo';
22544 }());
22545 function pToString (obj) {
22546 return Object.prototype.toString.call(obj);
22547 }
22548 function isView(arrbuf) {
22549 if (isBuffer(arrbuf)) {
22550 return false;
22551 }
22552 if (typeof global.ArrayBuffer !== 'function') {
22553 return false;
22554 }
22555 if (typeof ArrayBuffer.isView === 'function') {
22556 return ArrayBuffer.isView(arrbuf);
22557 }
22558 if (!arrbuf) {
22559 return false;
22560 }
22561 if (arrbuf instanceof DataView) {
22562 return true;
22563 }
22564 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22565 return true;
22566 }
22567 return false;
22568 }
22569 // 1. The assert module provides functions that throw
22570 // AssertionError's when particular conditions are not met. The
22571 // assert module must conform to the following interface.
22572
22573 var assert = module.exports = ok;
22574
22575 // 2. The AssertionError is defined in assert.
22576 // new assert.AssertionError({ message: message,
22577 // actual: actual,
22578 // expected: expected })
22579
22580 var regex = /\s*function\s+([^\(\s]*)\s*/;
22581 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22582 function getName(func) {
22583 if (!util.isFunction(func)) {
22584 return;
22585 }
22586 if (functionsHaveNames) {
22587 return func.name;
22588 }
22589 var str = func.toString();
22590 var match = str.match(regex);
22591 return match && match[1];
22592 }
22593 assert.AssertionError = function AssertionError(options) {
22594 this.name = 'AssertionError';
22595 this.actual = options.actual;
22596 this.expected = options.expected;
22597 this.operator = options.operator;
22598 if (options.message) {
22599 this.message = options.message;
22600 this.generatedMessage = false;
22601 } else {
22602 this.message = getMessage(this);
22603 this.generatedMessage = true;
22604 }
22605 var stackStartFunction = options.stackStartFunction || fail;
22606 if (Error.captureStackTrace) {
22607 Error.captureStackTrace(this, stackStartFunction);
22608 } else {
22609 // non v8 browsers so we can have a stacktrace
22610 var err = new Error();
22611 if (err.stack) {
22612 var out = err.stack;
22613
22614 // try to strip useless frames
22615 var fn_name = getName(stackStartFunction);
22616 var idx = out.indexOf('\n' + fn_name);
22617 if (idx >= 0) {
22618 // once we have located the function frame
22619 // we need to strip out everything before it (and its line)
22620 var next_line = out.indexOf('\n', idx + 1);
22621 out = out.substring(next_line + 1);
22622 }
22623
22624 this.stack = out;
22625 }
22626 }
22627 };
22628
22629 // assert.AssertionError instanceof Error
22630 util.inherits(assert.AssertionError, Error);
22631
22632 function truncate(s, n) {
22633 if (typeof s === 'string') {
22634 return s.length < n ? s : s.slice(0, n);
22635 } else {
22636 return s;
22637 }
22638 }
22639 function inspect(something) {
22640 if (functionsHaveNames || !util.isFunction(something)) {
22641 return util.inspect(something);
22642 }
22643 var rawname = getName(something);
22644 var name = rawname ? ': ' + rawname : '';
22645 return '[Function' + name + ']';
22646 }
22647 function getMessage(self) {
22648 return truncate(inspect(self.actual), 128) + ' ' +
22649 self.operator + ' ' +
22650 truncate(inspect(self.expected), 128);
22651 }
22652
22653 // At present only the three keys mentioned above are used and
22654 // understood by the spec. Implementations or sub modules can pass
22655 // other keys to the AssertionError's constructor - they will be
22656 // ignored.
22657
22658 // 3. All of the following functions must throw an AssertionError
22659 // when a corresponding condition is not met, with a message that
22660 // may be undefined if not provided. All assertion methods provide
22661 // both the actual and expected values to the assertion error for
22662 // display purposes.
22663
22664 function fail(actual, expected, message, operator, stackStartFunction) {
22665 throw new assert.AssertionError({
22666 message: message,
22667 actual: actual,
22668 expected: expected,
22669 operator: operator,
22670 stackStartFunction: stackStartFunction
22671 });
22672 }
22673
22674 // EXTENSION! allows for well behaved errors defined elsewhere.
22675 assert.fail = fail;
22676
22677 // 4. Pure assertion tests whether a value is truthy, as determined
22678 // by !!guard.
22679 // assert.ok(guard, message_opt);
22680 // This statement is equivalent to assert.equal(true, !!guard,
22681 // message_opt);. To test strictly for the value true, use
22682 // assert.strictEqual(true, guard, message_opt);.
22683
22684 function ok(value, message) {
22685 if (!value) fail(value, true, message, '==', assert.ok);
22686 }
22687 assert.ok = ok;
22688
22689 // 5. The equality assertion tests shallow, coercive equality with
22690 // ==.
22691 // assert.equal(actual, expected, message_opt);
22692
22693 assert.equal = function equal(actual, expected, message) {
22694 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22695 };
22696
22697 // 6. The non-equality assertion tests for whether two objects are not equal
22698 // with != assert.notEqual(actual, expected, message_opt);
22699
22700 assert.notEqual = function notEqual(actual, expected, message) {
22701 if (actual == expected) {
22702 fail(actual, expected, message, '!=', assert.notEqual);
22703 }
22704 };
22705
22706 // 7. The equivalence assertion tests a deep equality relation.
22707 // assert.deepEqual(actual, expected, message_opt);
22708
22709 assert.deepEqual = function deepEqual(actual, expected, message) {
22710 if (!_deepEqual(actual, expected, false)) {
22711 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
22712 }
22713 };
22714
22715 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22716 if (!_deepEqual(actual, expected, true)) {
22717 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
22718 }
22719 };
22720
22721 function _deepEqual(actual, expected, strict, memos) {
22722 // 7.1. All identical values are equivalent, as determined by ===.
22723 if (actual === expected) {
22724 return true;
22725 } else if (isBuffer(actual) && isBuffer(expected)) {
22726 return compare(actual, expected) === 0;
22727
22728 // 7.2. If the expected value is a Date object, the actual value is
22729 // equivalent if it is also a Date object that refers to the same time.
22730 } else if (util.isDate(actual) && util.isDate(expected)) {
22731 return actual.getTime() === expected.getTime();
22732
22733 // 7.3 If the expected value is a RegExp object, the actual value is
22734 // equivalent if it is also a RegExp object with the same source and
22735 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22736 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22737 return actual.source === expected.source &&
22738 actual.global === expected.global &&
22739 actual.multiline === expected.multiline &&
22740 actual.lastIndex === expected.lastIndex &&
22741 actual.ignoreCase === expected.ignoreCase;
22742
22743 // 7.4. Other pairs that do not both pass typeof value == 'object',
22744 // equivalence is determined by ==.
22745 } else if ((actual === null || typeof actual !== 'object') &&
22746 (expected === null || typeof expected !== 'object')) {
22747 return strict ? actual === expected : actual == expected;
22748
22749 // If both values are instances of typed arrays, wrap their underlying
22750 // ArrayBuffers in a Buffer each to increase performance
22751 // This optimization requires the arrays to have the same type as checked by
22752 // Object.prototype.toString (aka pToString). Never perform binary
22753 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22754 // bit patterns are not identical.
22755 } else if (isView(actual) && isView(expected) &&
22756 pToString(actual) === pToString(expected) &&
22757 !(actual instanceof Float32Array ||
22758 actual instanceof Float64Array)) {
22759 return compare(new Uint8Array(actual.buffer),
22760 new Uint8Array(expected.buffer)) === 0;
22761
22762 // 7.5 For all other Object pairs, including Array objects, equivalence is
22763 // determined by having the same number of owned properties (as verified
22764 // with Object.prototype.hasOwnProperty.call), the same set of keys
22765 // (although not necessarily the same order), equivalent values for every
22766 // corresponding key, and an identical 'prototype' property. Note: this
22767 // accounts for both named and indexed properties on Arrays.
22768 } else if (isBuffer(actual) !== isBuffer(expected)) {
22769 return false;
22770 } else {
22771 memos = memos || {actual: [], expected: []};
22772
22773 var actualIndex = memos.actual.indexOf(actual);
22774 if (actualIndex !== -1) {
22775 if (actualIndex === memos.expected.indexOf(expected)) {
22776 return true;
22777 }
22778 }
22779
22780 memos.actual.push(actual);
22781 memos.expected.push(expected);
22782
22783 return objEquiv(actual, expected, strict, memos);
22784 }
22785 }
22786
22787 function isArguments(object) {
22788 return Object.prototype.toString.call(object) == '[object Arguments]';
22789 }
22790
22791 function objEquiv(a, b, strict, actualVisitedObjects) {
22792 if (a === null || a === undefined || b === null || b === undefined)
22793 return false;
22794 // if one is a primitive, the other must be same
22795 if (util.isPrimitive(a) || util.isPrimitive(b))
22796 return a === b;
22797 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22798 return false;
22799 var aIsArgs = isArguments(a);
22800 var bIsArgs = isArguments(b);
22801 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22802 return false;
22803 if (aIsArgs) {
22804 a = pSlice.call(a);
22805 b = pSlice.call(b);
22806 return _deepEqual(a, b, strict);
22807 }
22808 var ka = objectKeys(a);
22809 var kb = objectKeys(b);
22810 var key, i;
22811 // having the same number of owned properties (keys incorporates
22812 // hasOwnProperty)
22813 if (ka.length !== kb.length)
22814 return false;
22815 //the same set of keys (although not necessarily the same order),
22816 ka.sort();
22817 kb.sort();
22818 //~~~cheap key test
22819 for (i = ka.length - 1; i >= 0; i--) {
22820 if (ka[i] !== kb[i])
22821 return false;
22822 }
22823 //equivalent values for every corresponding key, and
22824 //~~~possibly expensive deep test
22825 for (i = ka.length - 1; i >= 0; i--) {
22826 key = ka[i];
22827 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22828 return false;
22829 }
22830 return true;
22831 }
22832
22833 // 8. The non-equivalence assertion tests for any deep inequality.
22834 // assert.notDeepEqual(actual, expected, message_opt);
22835
22836 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22837 if (_deepEqual(actual, expected, false)) {
22838 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
22839 }
22840 };
22841
22842 assert.notDeepStrictEqual = notDeepStrictEqual;
22843 function notDeepStrictEqual(actual, expected, message) {
22844 if (_deepEqual(actual, expected, true)) {
22845 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22846 }
22847 }
22848
22849
22850 // 9. The strict equality assertion tests strict equality, as determined by ===.
22851 // assert.strictEqual(actual, expected, message_opt);
22852
22853 assert.strictEqual = function strictEqual(actual, expected, message) {
22854 if (actual !== expected) {
22855 fail(actual, expected, message, '===', assert.strictEqual);
22856 }
22857 };
22858
22859 // 10. The strict non-equality assertion tests for strict inequality, as
22860 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
22861
22862 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22863 if (actual === expected) {
22864 fail(actual, expected, message, '!==', assert.notStrictEqual);
22865 }
22866 };
22867
22868 function expectedException(actual, expected) {
22869 if (!actual || !expected) {
22870 return false;
22871 }
22872
22873 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22874 return expected.test(actual);
22875 }
22876
22877 try {
22878 if (actual instanceof expected) {
22879 return true;
22880 }
22881 } catch (e) {
22882 // Ignore. The instanceof check doesn't work for arrow functions.
22883 }
22884
22885 if (Error.isPrototypeOf(expected)) {
22886 return false;
22887 }
22888
22889 return expected.call({}, actual) === true;
22890 }
22891
22892 function _tryBlock(block) {
22893 var error;
22894 try {
22895 block();
22896 } catch (e) {
22897 error = e;
22898 }
22899 return error;
22900 }
22901
22902 function _throws(shouldThrow, block, expected, message) {
22903 var actual;
22904
22905 if (typeof block !== 'function') {
22906 throw new TypeError('"block" argument must be a function');
22907 }
22908
22909 if (typeof expected === 'string') {
22910 message = expected;
22911 expected = null;
22912 }
22913
22914 actual = _tryBlock(block);
22915
22916 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22917 (message ? ' ' + message : '.');
22918
22919 if (shouldThrow && !actual) {
22920 fail(actual, expected, 'Missing expected exception' + message);
22921 }
22922
22923 var userProvidedMessage = typeof message === 'string';
22924 var isUnwantedException = !shouldThrow && util.isError(actual);
22925 var isUnexpectedException = !shouldThrow && actual && !expected;
22926
22927 if ((isUnwantedException &&
22928 userProvidedMessage &&
22929 expectedException(actual, expected)) ||
22930 isUnexpectedException) {
22931 fail(actual, expected, 'Got unwanted exception' + message);
22932 }
22933
22934 if ((shouldThrow && actual && expected &&
22935 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22936 throw actual;
22937 }
22938 }
22939
22940 // 11. Expected to throw an error:
22941 // assert.throws(block, Error_opt, message_opt);
22942
22943 assert.throws = function(block, /*optional*/error, /*optional*/message) {
22944 _throws(true, block, error, message);
22945 };
22946
22947 // EXTENSION! This is annoying to write outside this module.
22948 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22949 _throws(false, block, error, message);
22950 };
22951
22952 assert.ifError = function(err) { if (err) throw err; };
22953
22954 var objectKeys = Object.keys || function (obj) {
22955 var keys = [];
22956 for (var key in obj) {
22957 if (hasOwn.call(obj, key)) keys.push(key);
22958 }
22959 return keys;
22960 };
22961
22962 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22963 },{"util/":30}],2:[function(require,module,exports){
22964 'use strict'
22965
22966 exports.byteLength = byteLength
22967 exports.toByteArray = toByteArray
22968 exports.fromByteArray = fromByteArray
22969
22970 var lookup = []
22971 var revLookup = []
22972 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22973
22974 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22975 for (var i = 0, len = code.length; i < len; ++i) {
22976 lookup[i] = code[i]
22977 revLookup[code.charCodeAt(i)] = i
22978 }
22979
22980 revLookup['-'.charCodeAt(0)] = 62
22981 revLookup['_'.charCodeAt(0)] = 63
22982
22983 function placeHoldersCount (b64) {
22984 var len = b64.length
22985 if (len % 4 > 0) {
22986 throw new Error('Invalid string. Length must be a multiple of 4')
22987 }
22988
22989 // the number of equal signs (place holders)
22990 // if there are two placeholders, than the two characters before it
22991 // represent one byte
22992 // if there is only one, then the three characters before it represent 2 bytes
22993 // this is just a cheap hack to not do indexOf twice
22994 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
22995 }
22996
22997 function byteLength (b64) {
22998 // base64 is 4/3 + up to two characters of the original data
22999 return b64.length * 3 / 4 - placeHoldersCount(b64)
23000 }
23001
23002 function toByteArray (b64) {
23003 var i, j, l, tmp, placeHolders, arr
23004 var len = b64.length
23005 placeHolders = placeHoldersCount(b64)
23006
23007 arr = new Arr(len * 3 / 4 - placeHolders)
23008
23009 // if there are placeholders, only get up to the last complete 4 chars
23010 l = placeHolders > 0 ? len - 4 : len
23011
23012 var L = 0
23013
23014 for (i = 0, j = 0; i < l; i += 4, j += 3) {
23015 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
23016 arr[L++] = (tmp >> 16) & 0xFF
23017 arr[L++] = (tmp >> 8) & 0xFF
23018 arr[L++] = tmp & 0xFF
23019 }
23020
23021 if (placeHolders === 2) {
23022 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
23023 arr[L++] = tmp & 0xFF
23024 } else if (placeHolders === 1) {
23025 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
23026 arr[L++] = (tmp >> 8) & 0xFF
23027 arr[L++] = tmp & 0xFF
23028 }
23029
23030 return arr
23031 }
23032
23033 function tripletToBase64 (num) {
23034 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
23035 }
23036
23037 function encodeChunk (uint8, start, end) {
23038 var tmp
23039 var output = []
23040 for (var i = start; i < end; i += 3) {
23041 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
23042 output.push(tripletToBase64(tmp))
23043 }
23044 return output.join('')
23045 }
23046
23047 function fromByteArray (uint8) {
23048 var tmp
23049 var len = uint8.length
23050 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
23051 var output = ''
23052 var parts = []
23053 var maxChunkLength = 16383 // must be multiple of 3
23054
23055 // go through the array every three bytes, we'll deal with trailing stuff later
23056 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
23057 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
23058 }
23059
23060 // pad the end with zeros, but make sure to not forget the extra bytes
23061 if (extraBytes === 1) {
23062 tmp = uint8[len - 1]
23063 output += lookup[tmp >> 2]
23064 output += lookup[(tmp << 4) & 0x3F]
23065 output += '=='
23066 } else if (extraBytes === 2) {
23067 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
23068 output += lookup[tmp >> 10]
23069 output += lookup[(tmp >> 4) & 0x3F]
23070 output += lookup[(tmp << 2) & 0x3F]
23071 output += '='
23072 }
23073
23074 parts.push(output)
23075
23076 return parts.join('')
23077 }
23078
23079 },{}],3:[function(require,module,exports){
23080
23081 },{}],4:[function(require,module,exports){
23082 (function (global){
23083 'use strict';
23084
23085 var buffer = require('buffer');
23086 var Buffer = buffer.Buffer;
23087 var SlowBuffer = buffer.SlowBuffer;
23088 var MAX_LEN = buffer.kMaxLength || 2147483647;
23089 exports.alloc = function alloc(size, fill, encoding) {
23090 if (typeof Buffer.alloc === 'function') {
23091 return Buffer.alloc(size, fill, encoding);
23092 }
23093 if (typeof encoding === 'number') {
23094 throw new TypeError('encoding must not be number');
23095 }
23096 if (typeof size !== 'number') {
23097 throw new TypeError('size must be a number');
23098 }
23099 if (size > MAX_LEN) {
23100 throw new RangeError('size is too large');
23101 }
23102 var enc = encoding;
23103 var _fill = fill;
23104 if (_fill === undefined) {
23105 enc = undefined;
23106 _fill = 0;
23107 }
23108 var buf = new Buffer(size);
23109 if (typeof _fill === 'string') {
23110 var fillBuf = new Buffer(_fill, enc);
23111 var flen = fillBuf.length;
23112 var i = -1;
23113 while (++i < size) {
23114 buf[i] = fillBuf[i % flen];
23115 }
23116 } else {
23117 buf.fill(_fill);
23118 }
23119 return buf;
23120 }
23121 exports.allocUnsafe = function allocUnsafe(size) {
23122 if (typeof Buffer.allocUnsafe === 'function') {
23123 return Buffer.allocUnsafe(size);
23124 }
23125 if (typeof size !== 'number') {
23126 throw new TypeError('size must be a number');
23127 }
23128 if (size > MAX_LEN) {
23129 throw new RangeError('size is too large');
23130 }
23131 return new Buffer(size);
23132 }
23133 exports.from = function from(value, encodingOrOffset, length) {
23134 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
23135 return Buffer.from(value, encodingOrOffset, length);
23136 }
23137 if (typeof value === 'number') {
23138 throw new TypeError('"value" argument must not be a number');
23139 }
23140 if (typeof value === 'string') {
23141 return new Buffer(value, encodingOrOffset);
23142 }
23143 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23144 var offset = encodingOrOffset;
23145 if (arguments.length === 1) {
23146 return new Buffer(value);
23147 }
23148 if (typeof offset === 'undefined') {
23149 offset = 0;
23150 }
23151 var len = length;
23152 if (typeof len === 'undefined') {
23153 len = value.byteLength - offset;
23154 }
23155 if (offset >= value.byteLength) {
23156 throw new RangeError('\'offset\' is out of bounds');
23157 }
23158 if (len > value.byteLength - offset) {
23159 throw new RangeError('\'length\' is out of bounds');
23160 }
23161 return new Buffer(value.slice(offset, offset + len));
23162 }
23163 if (Buffer.isBuffer(value)) {
23164 var out = new Buffer(value.length);
23165 value.copy(out, 0, 0, value.length);
23166 return out;
23167 }
23168 if (value) {
23169 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23170 return new Buffer(value);
23171 }
23172 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23173 return new Buffer(value.data);
23174 }
23175 }
23176
23177 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
23178 }
23179 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23180 if (typeof Buffer.allocUnsafeSlow === 'function') {
23181 return Buffer.allocUnsafeSlow(size);
23182 }
23183 if (typeof size !== 'number') {
23184 throw new TypeError('size must be a number');
23185 }
23186 if (size >= MAX_LEN) {
23187 throw new RangeError('size is too large');
23188 }
23189 return new SlowBuffer(size);
23190 }
23191
23192 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23193 },{"buffer":5}],5:[function(require,module,exports){
23194 /*!
23195 * The buffer module from node.js, for the browser.
23196 *
23197 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23198 * @license MIT
23199 */
23200 /* eslint-disable no-proto */
23201
23202 'use strict'
23203
23204 var base64 = require('base64-js')
23205 var ieee754 = require('ieee754')
23206
23207 exports.Buffer = Buffer
23208 exports.SlowBuffer = SlowBuffer
23209 exports.INSPECT_MAX_BYTES = 50
23210
23211 var K_MAX_LENGTH = 0x7fffffff
23212 exports.kMaxLength = K_MAX_LENGTH
23213
23214 /**
23215 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23216 * === true Use Uint8Array implementation (fastest)
23217 * === false Print warning and recommend using `buffer` v4.x which has an Object
23218 * implementation (most compatible, even IE6)
23219 *
23220 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23221 * Opera 11.6+, iOS 4.2+.
23222 *
23223 * We report that the browser does not support typed arrays if the are not subclassable
23224 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23225 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23226 * for __proto__ and has a buggy typed array implementation.
23227 */
23228 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23229
23230 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23231 typeof console.error === 'function') {
23232 console.error(
23233 'This browser lacks typed array (Uint8Array) support which is required by ' +
23234 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23235 )
23236 }
23237
23238 function typedArraySupport () {
23239 // Can typed array instances can be augmented?
23240 try {
23241 var arr = new Uint8Array(1)
23242 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23243 return arr.foo() === 42
23244 } catch (e) {
23245 return false
23246 }
23247 }
23248
23249 function createBuffer (length) {
23250 if (length > K_MAX_LENGTH) {
23251 throw new RangeError('Invalid typed array length')
23252 }
23253 // Return an augmented `Uint8Array` instance
23254 var buf = new Uint8Array(length)
23255 buf.__proto__ = Buffer.prototype
23256 return buf
23257 }
23258
23259 /**
23260 * The Buffer constructor returns instances of `Uint8Array` that have their
23261 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23262 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23263 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23264 * returns a single octet.
23265 *
23266 * The `Uint8Array` prototype remains unmodified.
23267 */
23268
23269 function Buffer (arg, encodingOrOffset, length) {
23270 // Common case.
23271 if (typeof arg === 'number') {
23272 if (typeof encodingOrOffset === 'string') {
23273 throw new Error(
23274 'If encoding is specified then the first argument must be a string'
23275 )
23276 }
23277 return allocUnsafe(arg)
23278 }
23279 return from(arg, encodingOrOffset, length)
23280 }
23281
23282 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23283 if (typeof Symbol !== 'undefined' && Symbol.species &&
23284 Buffer[Symbol.species] === Buffer) {
23285 Object.defineProperty(Buffer, Symbol.species, {
23286 value: null,
23287 configurable: true,
23288 enumerable: false,
23289 writable: false
23290 })
23291 }
23292
23293 Buffer.poolSize = 8192 // not used by this implementation
23294
23295 function from (value, encodingOrOffset, length) {
23296 if (typeof value === 'number') {
23297 throw new TypeError('"value" argument must not be a number')
23298 }
23299
23300 if (value instanceof ArrayBuffer) {
23301 return fromArrayBuffer(value, encodingOrOffset, length)
23302 }
23303
23304 if (typeof value === 'string') {
23305 return fromString(value, encodingOrOffset)
23306 }
23307
23308 return fromObject(value)
23309 }
23310
23311 /**
23312 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23313 * if value is a number.
23314 * Buffer.from(str[, encoding])
23315 * Buffer.from(array)
23316 * Buffer.from(buffer)
23317 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23318 **/
23319 Buffer.from = function (value, encodingOrOffset, length) {
23320 return from(value, encodingOrOffset, length)
23321 }
23322
23323 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23324 // https://github.com/feross/buffer/pull/148
23325 Buffer.prototype.__proto__ = Uint8Array.prototype
23326 Buffer.__proto__ = Uint8Array
23327
23328 function assertSize (size) {
23329 if (typeof size !== 'number') {
23330 throw new TypeError('"size" argument must be a number')
23331 } else if (size < 0) {
23332 throw new RangeError('"size" argument must not be negative')
23333 }
23334 }
23335
23336 function alloc (size, fill, encoding) {
23337 assertSize(size)
23338 if (size <= 0) {
23339 return createBuffer(size)
23340 }
23341 if (fill !== undefined) {
23342 // Only pay attention to encoding if it's a string. This
23343 // prevents accidentally sending in a number that would
23344 // be interpretted as a start offset.
23345 return typeof encoding === 'string'
23346 ? createBuffer(size).fill(fill, encoding)
23347 : createBuffer(size).fill(fill)
23348 }
23349 return createBuffer(size)
23350 }
23351
23352 /**
23353 * Creates a new filled Buffer instance.
23354 * alloc(size[, fill[, encoding]])
23355 **/
23356 Buffer.alloc = function (size, fill, encoding) {
23357 return alloc(size, fill, encoding)
23358 }
23359
23360 function allocUnsafe (size) {
23361 assertSize(size)
23362 return createBuffer(size < 0 ? 0 : checked(size) | 0)
23363 }
23364
23365 /**
23366 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23367 * */
23368 Buffer.allocUnsafe = function (size) {
23369 return allocUnsafe(size)
23370 }
23371 /**
23372 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23373 */
23374 Buffer.allocUnsafeSlow = function (size) {
23375 return allocUnsafe(size)
23376 }
23377
23378 function fromString (string, encoding) {
23379 if (typeof encoding !== 'string' || encoding === '') {
23380 encoding = 'utf8'
23381 }
23382
23383 if (!Buffer.isEncoding(encoding)) {
23384 throw new TypeError('"encoding" must be a valid string encoding')
23385 }
23386
23387 var length = byteLength(string, encoding) | 0
23388 var buf = createBuffer(length)
23389
23390 var actual = buf.write(string, encoding)
23391
23392 if (actual !== length) {
23393 // Writing a hex string, for example, that contains invalid characters will
23394 // cause everything after the first invalid character to be ignored. (e.g.
23395 // 'abxxcd' will be treated as 'ab')
23396 buf = buf.slice(0, actual)
23397 }
23398
23399 return buf
23400 }
23401
23402 function fromArrayLike (array) {
23403 var length = array.length < 0 ? 0 : checked(array.length) | 0
23404 var buf = createBuffer(length)
23405 for (var i = 0; i < length; i += 1) {
23406 buf[i] = array[i] & 255
23407 }
23408 return buf
23409 }
23410
23411 function fromArrayBuffer (array, byteOffset, length) {
23412 if (byteOffset < 0 || array.byteLength < byteOffset) {
23413 throw new RangeError('\'offset\' is out of bounds')
23414 }
23415
23416 if (array.byteLength < byteOffset + (length || 0)) {
23417 throw new RangeError('\'length\' is out of bounds')
23418 }
23419
23420 var buf
23421 if (byteOffset === undefined && length === undefined) {
23422 buf = new Uint8Array(array)
23423 } else if (length === undefined) {
23424 buf = new Uint8Array(array, byteOffset)
23425 } else {
23426 buf = new Uint8Array(array, byteOffset, length)
23427 }
23428
23429 // Return an augmented `Uint8Array` instance
23430 buf.__proto__ = Buffer.prototype
23431 return buf
23432 }
23433
23434 function fromObject (obj) {
23435 if (Buffer.isBuffer(obj)) {
23436 var len = checked(obj.length) | 0
23437 var buf = createBuffer(len)
23438
23439 if (buf.length === 0) {
23440 return buf
23441 }
23442
23443 obj.copy(buf, 0, 0, len)
23444 return buf
23445 }
23446
23447 if (obj) {
23448 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23449 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23450 return createBuffer(0)
23451 }
23452 return fromArrayLike(obj)
23453 }
23454
23455 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23456 return fromArrayLike(obj.data)
23457 }
23458 }
23459
23460 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
23461 }
23462
23463 function checked (length) {
23464 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23465 // length is NaN (which is otherwise coerced to zero.)
23466 if (length >= K_MAX_LENGTH) {
23467 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23468 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
23469 }
23470 return length | 0
23471 }
23472
23473 function SlowBuffer (length) {
23474 if (+length != length) { // eslint-disable-line eqeqeq
23475 length = 0
23476 }
23477 return Buffer.alloc(+length)
23478 }
23479
23480 Buffer.isBuffer = function isBuffer (b) {
23481 return b != null && b._isBuffer === true
23482 }
23483
23484 Buffer.compare = function compare (a, b) {
23485 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23486 throw new TypeError('Arguments must be Buffers')
23487 }
23488
23489 if (a === b) return 0
23490
23491 var x = a.length
23492 var y = b.length
23493
23494 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23495 if (a[i] !== b[i]) {
23496 x = a[i]
23497 y = b[i]
23498 break
23499 }
23500 }
23501
23502 if (x < y) return -1
23503 if (y < x) return 1
23504 return 0
23505 }
23506
23507 Buffer.isEncoding = function isEncoding (encoding) {
23508 switch (String(encoding).toLowerCase()) {
23509 case 'hex':
23510 case 'utf8':
23511 case 'utf-8':
23512 case 'ascii':
23513 case 'latin1':
23514 case 'binary':
23515 case 'base64':
23516 case 'ucs2':
23517 case 'ucs-2':
23518 case 'utf16le':
23519 case 'utf-16le':
23520 return true
23521 default:
23522 return false
23523 }
23524 }
23525
23526 Buffer.concat = function concat (list, length) {
23527 if (!Array.isArray(list)) {
23528 throw new TypeError('"list" argument must be an Array of Buffers')
23529 }
23530
23531 if (list.length === 0) {
23532 return Buffer.alloc(0)
23533 }
23534
23535 var i
23536 if (length === undefined) {
23537 length = 0
23538 for (i = 0; i < list.length; ++i) {
23539 length += list[i].length
23540 }
23541 }
23542
23543 var buffer = Buffer.allocUnsafe(length)
23544 var pos = 0
23545 for (i = 0; i < list.length; ++i) {
23546 var buf = list[i]
23547 if (!Buffer.isBuffer(buf)) {
23548 throw new TypeError('"list" argument must be an Array of Buffers')
23549 }
23550 buf.copy(buffer, pos)
23551 pos += buf.length
23552 }
23553 return buffer
23554 }
23555
23556 function byteLength (string, encoding) {
23557 if (Buffer.isBuffer(string)) {
23558 return string.length
23559 }
23560 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23561 return string.byteLength
23562 }
23563 if (typeof string !== 'string') {
23564 string = '' + string
23565 }
23566
23567 var len = string.length
23568 if (len === 0) return 0
23569
23570 // Use a for loop to avoid recursion
23571 var loweredCase = false
23572 for (;;) {
23573 switch (encoding) {
23574 case 'ascii':
23575 case 'latin1':
23576 case 'binary':
23577 return len
23578 case 'utf8':
23579 case 'utf-8':
23580 case undefined:
23581 return utf8ToBytes(string).length
23582 case 'ucs2':
23583 case 'ucs-2':
23584 case 'utf16le':
23585 case 'utf-16le':
23586 return len * 2
23587 case 'hex':
23588 return len >>> 1
23589 case 'base64':
23590 return base64ToBytes(string).length
23591 default:
23592 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23593 encoding = ('' + encoding).toLowerCase()
23594 loweredCase = true
23595 }
23596 }
23597 }
23598 Buffer.byteLength = byteLength
23599
23600 function slowToString (encoding, start, end) {
23601 var loweredCase = false
23602
23603 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23604 // property of a typed array.
23605
23606 // This behaves neither like String nor Uint8Array in that we set start/end
23607 // to their upper/lower bounds if the value passed is out of range.
23608 // undefined is handled specially as per ECMA-262 6th Edition,
23609 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23610 if (start === undefined || start < 0) {
23611 start = 0
23612 }
23613 // Return early if start > this.length. Done here to prevent potential uint32
23614 // coercion fail below.
23615 if (start > this.length) {
23616 return ''
23617 }
23618
23619 if (end === undefined || end > this.length) {
23620 end = this.length
23621 }
23622
23623 if (end <= 0) {
23624 return ''
23625 }
23626
23627 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23628 end >>>= 0
23629 start >>>= 0
23630
23631 if (end <= start) {
23632 return ''
23633 }
23634
23635 if (!encoding) encoding = 'utf8'
23636
23637 while (true) {
23638 switch (encoding) {
23639 case 'hex':
23640 return hexSlice(this, start, end)
23641
23642 case 'utf8':
23643 case 'utf-8':
23644 return utf8Slice(this, start, end)
23645
23646 case 'ascii':
23647 return asciiSlice(this, start, end)
23648
23649 case 'latin1':
23650 case 'binary':
23651 return latin1Slice(this, start, end)
23652
23653 case 'base64':
23654 return base64Slice(this, start, end)
23655
23656 case 'ucs2':
23657 case 'ucs-2':
23658 case 'utf16le':
23659 case 'utf-16le':
23660 return utf16leSlice(this, start, end)
23661
23662 default:
23663 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23664 encoding = (encoding + '').toLowerCase()
23665 loweredCase = true
23666 }
23667 }
23668 }
23669
23670 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23671 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23672 // reliably in a browserify context because there could be multiple different
23673 // copies of the 'buffer' package in use. This method works even for Buffer
23674 // instances that were created from another copy of the `buffer` package.
23675 // See: https://github.com/feross/buffer/issues/154
23676 Buffer.prototype._isBuffer = true
23677
23678 function swap (b, n, m) {
23679 var i = b[n]
23680 b[n] = b[m]
23681 b[m] = i
23682 }
23683
23684 Buffer.prototype.swap16 = function swap16 () {
23685 var len = this.length
23686 if (len % 2 !== 0) {
23687 throw new RangeError('Buffer size must be a multiple of 16-bits')
23688 }
23689 for (var i = 0; i < len; i += 2) {
23690 swap(this, i, i + 1)
23691 }
23692 return this
23693 }
23694
23695 Buffer.prototype.swap32 = function swap32 () {
23696 var len = this.length
23697 if (len % 4 !== 0) {
23698 throw new RangeError('Buffer size must be a multiple of 32-bits')
23699 }
23700 for (var i = 0; i < len; i += 4) {
23701 swap(this, i, i + 3)
23702 swap(this, i + 1, i + 2)
23703 }
23704 return this
23705 }
23706
23707 Buffer.prototype.swap64 = function swap64 () {
23708 var len = this.length
23709 if (len % 8 !== 0) {
23710 throw new RangeError('Buffer size must be a multiple of 64-bits')
23711 }
23712 for (var i = 0; i < len; i += 8) {
23713 swap(this, i, i + 7)
23714 swap(this, i + 1, i + 6)
23715 swap(this, i + 2, i + 5)
23716 swap(this, i + 3, i + 4)
23717 }
23718 return this
23719 }
23720
23721 Buffer.prototype.toString = function toString () {
23722 var length = this.length
23723 if (length === 0) return ''
23724 if (arguments.length === 0) return utf8Slice(this, 0, length)
23725 return slowToString.apply(this, arguments)
23726 }
23727
23728 Buffer.prototype.equals = function equals (b) {
23729 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23730 if (this === b) return true
23731 return Buffer.compare(this, b) === 0
23732 }
23733
23734 Buffer.prototype.inspect = function inspect () {
23735 var str = ''
23736 var max = exports.INSPECT_MAX_BYTES
23737 if (this.length > 0) {
23738 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23739 if (this.length > max) str += ' ... '
23740 }
23741 return '<Buffer ' + str + '>'
23742 }
23743
23744 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23745 if (!Buffer.isBuffer(target)) {
23746 throw new TypeError('Argument must be a Buffer')
23747 }
23748
23749 if (start === undefined) {
23750 start = 0
23751 }
23752 if (end === undefined) {
23753 end = target ? target.length : 0
23754 }
23755 if (thisStart === undefined) {
23756 thisStart = 0
23757 }
23758 if (thisEnd === undefined) {
23759 thisEnd = this.length
23760 }
23761
23762 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23763 throw new RangeError('out of range index')
23764 }
23765
23766 if (thisStart >= thisEnd && start >= end) {
23767 return 0
23768 }
23769 if (thisStart >= thisEnd) {
23770 return -1
23771 }
23772 if (start >= end) {
23773 return 1
23774 }
23775
23776 start >>>= 0
23777 end >>>= 0
23778 thisStart >>>= 0
23779 thisEnd >>>= 0
23780
23781 if (this === target) return 0
23782
23783 var x = thisEnd - thisStart
23784 var y = end - start
23785 var len = Math.min(x, y)
23786
23787 var thisCopy = this.slice(thisStart, thisEnd)
23788 var targetCopy = target.slice(start, end)
23789
23790 for (var i = 0; i < len; ++i) {
23791 if (thisCopy[i] !== targetCopy[i]) {
23792 x = thisCopy[i]
23793 y = targetCopy[i]
23794 break
23795 }
23796 }
23797
23798 if (x < y) return -1
23799 if (y < x) return 1
23800 return 0
23801 }
23802
23803 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23804 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
23805 //
23806 // Arguments:
23807 // - buffer - a Buffer to search
23808 // - val - a string, Buffer, or number
23809 // - byteOffset - an index into `buffer`; will be clamped to an int32
23810 // - encoding - an optional encoding, relevant is val is a string
23811 // - dir - true for indexOf, false for lastIndexOf
23812 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23813 // Empty buffer means no match
23814 if (buffer.length === 0) return -1
23815
23816 // Normalize byteOffset
23817 if (typeof byteOffset === 'string') {
23818 encoding = byteOffset
23819 byteOffset = 0
23820 } else if (byteOffset > 0x7fffffff) {
23821 byteOffset = 0x7fffffff
23822 } else if (byteOffset < -0x80000000) {
23823 byteOffset = -0x80000000
23824 }
23825 byteOffset = +byteOffset // Coerce to Number.
23826 if (isNaN(byteOffset)) {
23827 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23828 byteOffset = dir ? 0 : (buffer.length - 1)
23829 }
23830
23831 // Normalize byteOffset: negative offsets start from the end of the buffer
23832 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23833 if (byteOffset >= buffer.length) {
23834 if (dir) return -1
23835 else byteOffset = buffer.length - 1
23836 } else if (byteOffset < 0) {
23837 if (dir) byteOffset = 0
23838 else return -1
23839 }
23840
23841 // Normalize val
23842 if (typeof val === 'string') {
23843 val = Buffer.from(val, encoding)
23844 }
23845
23846 // Finally, search either indexOf (if dir is true) or lastIndexOf
23847 if (Buffer.isBuffer(val)) {
23848 // Special case: looking for empty string/buffer always fails
23849 if (val.length === 0) {
23850 return -1
23851 }
23852 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23853 } else if (typeof val === 'number') {
23854 val = val & 0xFF // Search for a byte value [0-255]
23855 if (typeof Uint8Array.prototype.indexOf === 'function') {
23856 if (dir) {
23857 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23858 } else {
23859 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23860 }
23861 }
23862 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23863 }
23864
23865 throw new TypeError('val must be string, number or Buffer')
23866 }
23867
23868 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23869 var indexSize = 1
23870 var arrLength = arr.length
23871 var valLength = val.length
23872
23873 if (encoding !== undefined) {
23874 encoding = String(encoding).toLowerCase()
23875 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23876 encoding === 'utf16le' || encoding === 'utf-16le') {
23877 if (arr.length < 2 || val.length < 2) {
23878 return -1
23879 }
23880 indexSize = 2
23881 arrLength /= 2
23882 valLength /= 2
23883 byteOffset /= 2
23884 }
23885 }
23886
23887 function read (buf, i) {
23888 if (indexSize === 1) {
23889 return buf[i]
23890 } else {
23891 return buf.readUInt16BE(i * indexSize)
23892 }
23893 }
23894
23895 var i
23896 if (dir) {
23897 var foundIndex = -1
23898 for (i = byteOffset; i < arrLength; i++) {
23899 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23900 if (foundIndex === -1) foundIndex = i
23901 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23902 } else {
23903 if (foundIndex !== -1) i -= i - foundIndex
23904 foundIndex = -1
23905 }
23906 }
23907 } else {
23908 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23909 for (i = byteOffset; i >= 0; i--) {
23910 var found = true
23911 for (var j = 0; j < valLength; j++) {
23912 if (read(arr, i + j) !== read(val, j)) {
23913 found = false
23914 break
23915 }
23916 }
23917 if (found) return i
23918 }
23919 }
23920
23921 return -1
23922 }
23923
23924 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23925 return this.indexOf(val, byteOffset, encoding) !== -1
23926 }
23927
23928 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23929 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23930 }
23931
23932 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23933 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23934 }
23935
23936 function hexWrite (buf, string, offset, length) {
23937 offset = Number(offset) || 0
23938 var remaining = buf.length - offset
23939 if (!length) {
23940 length = remaining
23941 } else {
23942 length = Number(length)
23943 if (length > remaining) {
23944 length = remaining
23945 }
23946 }
23947
23948 // must be an even number of digits
23949 var strLen = string.length
23950 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
23951
23952 if (length > strLen / 2) {
23953 length = strLen / 2
23954 }
23955 for (var i = 0; i < length; ++i) {
23956 var parsed = parseInt(string.substr(i * 2, 2), 16)
23957 if (isNaN(parsed)) return i
23958 buf[offset + i] = parsed
23959 }
23960 return i
23961 }
23962
23963 function utf8Write (buf, string, offset, length) {
23964 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
23965 }
23966
23967 function asciiWrite (buf, string, offset, length) {
23968 return blitBuffer(asciiToBytes(string), buf, offset, length)
23969 }
23970
23971 function latin1Write (buf, string, offset, length) {
23972 return asciiWrite(buf, string, offset, length)
23973 }
23974
23975 function base64Write (buf, string, offset, length) {
23976 return blitBuffer(base64ToBytes(string), buf, offset, length)
23977 }
23978
23979 function ucs2Write (buf, string, offset, length) {
23980 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23981 }
23982
23983 Buffer.prototype.write = function write (string, offset, length, encoding) {
23984 // Buffer#write(string)
23985 if (offset === undefined) {
23986 encoding = 'utf8'
23987 length = this.length
23988 offset = 0
23989 // Buffer#write(string, encoding)
23990 } else if (length === undefined && typeof offset === 'string') {
23991 encoding = offset
23992 length = this.length
23993 offset = 0
23994 // Buffer#write(string, offset[, length][, encoding])
23995 } else if (isFinite(offset)) {
23996 offset = offset >>> 0
23997 if (isFinite(length)) {
23998 length = length >>> 0
23999 if (encoding === undefined) encoding = 'utf8'
24000 } else {
24001 encoding = length
24002 length = undefined
24003 }
24004 } else {
24005 throw new Error(
24006 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
24007 )
24008 }
24009
24010 var remaining = this.length - offset
24011 if (length === undefined || length > remaining) length = remaining
24012
24013 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
24014 throw new RangeError('Attempt to write outside buffer bounds')
24015 }
24016
24017 if (!encoding) encoding = 'utf8'
24018
24019 var loweredCase = false
24020 for (;;) {
24021 switch (encoding) {
24022 case 'hex':
24023 return hexWrite(this, string, offset, length)
24024
24025 case 'utf8':
24026 case 'utf-8':
24027 return utf8Write(this, string, offset, length)
24028
24029 case 'ascii':
24030 return asciiWrite(this, string, offset, length)
24031
24032 case 'latin1':
24033 case 'binary':
24034 return latin1Write(this, string, offset, length)
24035
24036 case 'base64':
24037 // Warning: maxLength not taken into account in base64Write
24038 return base64Write(this, string, offset, length)
24039
24040 case 'ucs2':
24041 case 'ucs-2':
24042 case 'utf16le':
24043 case 'utf-16le':
24044 return ucs2Write(this, string, offset, length)
24045
24046 default:
24047 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
24048 encoding = ('' + encoding).toLowerCase()
24049 loweredCase = true
24050 }
24051 }
24052 }
24053
24054 Buffer.prototype.toJSON = function toJSON () {
24055 return {
24056 type: 'Buffer',
24057 data: Array.prototype.slice.call(this._arr || this, 0)
24058 }
24059 }
24060
24061 function base64Slice (buf, start, end) {
24062 if (start === 0 && end === buf.length) {
24063 return base64.fromByteArray(buf)
24064 } else {
24065 return base64.fromByteArray(buf.slice(start, end))
24066 }
24067 }
24068
24069 function utf8Slice (buf, start, end) {
24070 end = Math.min(buf.length, end)
24071 var res = []
24072
24073 var i = start
24074 while (i < end) {
24075 var firstByte = buf[i]
24076 var codePoint = null
24077 var bytesPerSequence = (firstByte > 0xEF) ? 4
24078 : (firstByte > 0xDF) ? 3
24079 : (firstByte > 0xBF) ? 2
24080 : 1
24081
24082 if (i + bytesPerSequence <= end) {
24083 var secondByte, thirdByte, fourthByte, tempCodePoint
24084
24085 switch (bytesPerSequence) {
24086 case 1:
24087 if (firstByte < 0x80) {
24088 codePoint = firstByte
24089 }
24090 break
24091 case 2:
24092 secondByte = buf[i + 1]
24093 if ((secondByte & 0xC0) === 0x80) {
24094 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
24095 if (tempCodePoint > 0x7F) {
24096 codePoint = tempCodePoint
24097 }
24098 }
24099 break
24100 case 3:
24101 secondByte = buf[i + 1]
24102 thirdByte = buf[i + 2]
24103 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
24104 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
24105 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
24106 codePoint = tempCodePoint
24107 }
24108 }
24109 break
24110 case 4:
24111 secondByte = buf[i + 1]
24112 thirdByte = buf[i + 2]
24113 fourthByte = buf[i + 3]
24114 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
24115 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
24116 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
24117 codePoint = tempCodePoint
24118 }
24119 }
24120 }
24121 }
24122
24123 if (codePoint === null) {
24124 // we did not generate a valid codePoint so insert a
24125 // replacement char (U+FFFD) and advance only 1 byte
24126 codePoint = 0xFFFD
24127 bytesPerSequence = 1
24128 } else if (codePoint > 0xFFFF) {
24129 // encode to utf16 (surrogate pair dance)
24130 codePoint -= 0x10000
24131 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
24132 codePoint = 0xDC00 | codePoint & 0x3FF
24133 }
24134
24135 res.push(codePoint)
24136 i += bytesPerSequence
24137 }
24138
24139 return decodeCodePointsArray(res)
24140 }
24141
24142 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
24143 // the lowest limit is Chrome, with 0x10000 args.
24144 // We go 1 magnitude less, for safety
24145 var MAX_ARGUMENTS_LENGTH = 0x1000
24146
24147 function decodeCodePointsArray (codePoints) {
24148 var len = codePoints.length
24149 if (len <= MAX_ARGUMENTS_LENGTH) {
24150 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
24151 }
24152
24153 // Decode in chunks to avoid "call stack size exceeded".
24154 var res = ''
24155 var i = 0
24156 while (i < len) {
24157 res += String.fromCharCode.apply(
24158 String,
24159 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24160 )
24161 }
24162 return res
24163 }
24164
24165 function asciiSlice (buf, start, end) {
24166 var ret = ''
24167 end = Math.min(buf.length, end)
24168
24169 for (var i = start; i < end; ++i) {
24170 ret += String.fromCharCode(buf[i] & 0x7F)
24171 }
24172 return ret
24173 }
24174
24175 function latin1Slice (buf, start, end) {
24176 var ret = ''
24177 end = Math.min(buf.length, end)
24178
24179 for (var i = start; i < end; ++i) {
24180 ret += String.fromCharCode(buf[i])
24181 }
24182 return ret
24183 }
24184
24185 function hexSlice (buf, start, end) {
24186 var len = buf.length
24187
24188 if (!start || start < 0) start = 0
24189 if (!end || end < 0 || end > len) end = len
24190
24191 var out = ''
24192 for (var i = start; i < end; ++i) {
24193 out += toHex(buf[i])
24194 }
24195 return out
24196 }
24197
24198 function utf16leSlice (buf, start, end) {
24199 var bytes = buf.slice(start, end)
24200 var res = ''
24201 for (var i = 0; i < bytes.length; i += 2) {
24202 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24203 }
24204 return res
24205 }
24206
24207 Buffer.prototype.slice = function slice (start, end) {
24208 var len = this.length
24209 start = ~~start
24210 end = end === undefined ? len : ~~end
24211
24212 if (start < 0) {
24213 start += len
24214 if (start < 0) start = 0
24215 } else if (start > len) {
24216 start = len
24217 }
24218
24219 if (end < 0) {
24220 end += len
24221 if (end < 0) end = 0
24222 } else if (end > len) {
24223 end = len
24224 }
24225
24226 if (end < start) end = start
24227
24228 var newBuf = this.subarray(start, end)
24229 // Return an augmented `Uint8Array` instance
24230 newBuf.__proto__ = Buffer.prototype
24231 return newBuf
24232 }
24233
24234 /*
24235 * Need to make sure that buffer isn't trying to write out of bounds.
24236 */
24237 function checkOffset (offset, ext, length) {
24238 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24239 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
24240 }
24241
24242 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24243 offset = offset >>> 0
24244 byteLength = byteLength >>> 0
24245 if (!noAssert) checkOffset(offset, byteLength, this.length)
24246
24247 var val = this[offset]
24248 var mul = 1
24249 var i = 0
24250 while (++i < byteLength && (mul *= 0x100)) {
24251 val += this[offset + i] * mul
24252 }
24253
24254 return val
24255 }
24256
24257 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24258 offset = offset >>> 0
24259 byteLength = byteLength >>> 0
24260 if (!noAssert) {
24261 checkOffset(offset, byteLength, this.length)
24262 }
24263
24264 var val = this[offset + --byteLength]
24265 var mul = 1
24266 while (byteLength > 0 && (mul *= 0x100)) {
24267 val += this[offset + --byteLength] * mul
24268 }
24269
24270 return val
24271 }
24272
24273 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24274 offset = offset >>> 0
24275 if (!noAssert) checkOffset(offset, 1, this.length)
24276 return this[offset]
24277 }
24278
24279 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24280 offset = offset >>> 0
24281 if (!noAssert) checkOffset(offset, 2, this.length)
24282 return this[offset] | (this[offset + 1] << 8)
24283 }
24284
24285 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24286 offset = offset >>> 0
24287 if (!noAssert) checkOffset(offset, 2, this.length)
24288 return (this[offset] << 8) | this[offset + 1]
24289 }
24290
24291 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24292 offset = offset >>> 0
24293 if (!noAssert) checkOffset(offset, 4, this.length)
24294
24295 return ((this[offset]) |
24296 (this[offset + 1] << 8) |
24297 (this[offset + 2] << 16)) +
24298 (this[offset + 3] * 0x1000000)
24299 }
24300
24301 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24302 offset = offset >>> 0
24303 if (!noAssert) checkOffset(offset, 4, this.length)
24304
24305 return (this[offset] * 0x1000000) +
24306 ((this[offset + 1] << 16) |
24307 (this[offset + 2] << 8) |
24308 this[offset + 3])
24309 }
24310
24311 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24312 offset = offset >>> 0
24313 byteLength = byteLength >>> 0
24314 if (!noAssert) checkOffset(offset, byteLength, this.length)
24315
24316 var val = this[offset]
24317 var mul = 1
24318 var i = 0
24319 while (++i < byteLength && (mul *= 0x100)) {
24320 val += this[offset + i] * mul
24321 }
24322 mul *= 0x80
24323
24324 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24325
24326 return val
24327 }
24328
24329 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24330 offset = offset >>> 0
24331 byteLength = byteLength >>> 0
24332 if (!noAssert) checkOffset(offset, byteLength, this.length)
24333
24334 var i = byteLength
24335 var mul = 1
24336 var val = this[offset + --i]
24337 while (i > 0 && (mul *= 0x100)) {
24338 val += this[offset + --i] * mul
24339 }
24340 mul *= 0x80
24341
24342 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24343
24344 return val
24345 }
24346
24347 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24348 offset = offset >>> 0
24349 if (!noAssert) checkOffset(offset, 1, this.length)
24350 if (!(this[offset] & 0x80)) return (this[offset])
24351 return ((0xff - this[offset] + 1) * -1)
24352 }
24353
24354 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24355 offset = offset >>> 0
24356 if (!noAssert) checkOffset(offset, 2, this.length)
24357 var val = this[offset] | (this[offset + 1] << 8)
24358 return (val & 0x8000) ? val | 0xFFFF0000 : val
24359 }
24360
24361 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24362 offset = offset >>> 0
24363 if (!noAssert) checkOffset(offset, 2, this.length)
24364 var val = this[offset + 1] | (this[offset] << 8)
24365 return (val & 0x8000) ? val | 0xFFFF0000 : val
24366 }
24367
24368 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24369 offset = offset >>> 0
24370 if (!noAssert) checkOffset(offset, 4, this.length)
24371
24372 return (this[offset]) |
24373 (this[offset + 1] << 8) |
24374 (this[offset + 2] << 16) |
24375 (this[offset + 3] << 24)
24376 }
24377
24378 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24379 offset = offset >>> 0
24380 if (!noAssert) checkOffset(offset, 4, this.length)
24381
24382 return (this[offset] << 24) |
24383 (this[offset + 1] << 16) |
24384 (this[offset + 2] << 8) |
24385 (this[offset + 3])
24386 }
24387
24388 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24389 offset = offset >>> 0
24390 if (!noAssert) checkOffset(offset, 4, this.length)
24391 return ieee754.read(this, offset, true, 23, 4)
24392 }
24393
24394 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24395 offset = offset >>> 0
24396 if (!noAssert) checkOffset(offset, 4, this.length)
24397 return ieee754.read(this, offset, false, 23, 4)
24398 }
24399
24400 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24401 offset = offset >>> 0
24402 if (!noAssert) checkOffset(offset, 8, this.length)
24403 return ieee754.read(this, offset, true, 52, 8)
24404 }
24405
24406 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24407 offset = offset >>> 0
24408 if (!noAssert) checkOffset(offset, 8, this.length)
24409 return ieee754.read(this, offset, false, 52, 8)
24410 }
24411
24412 function checkInt (buf, value, offset, ext, max, min) {
24413 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24414 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24415 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24416 }
24417
24418 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24419 value = +value
24420 offset = offset >>> 0
24421 byteLength = byteLength >>> 0
24422 if (!noAssert) {
24423 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24424 checkInt(this, value, offset, byteLength, maxBytes, 0)
24425 }
24426
24427 var mul = 1
24428 var i = 0
24429 this[offset] = value & 0xFF
24430 while (++i < byteLength && (mul *= 0x100)) {
24431 this[offset + i] = (value / mul) & 0xFF
24432 }
24433
24434 return offset + byteLength
24435 }
24436
24437 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24438 value = +value
24439 offset = offset >>> 0
24440 byteLength = byteLength >>> 0
24441 if (!noAssert) {
24442 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24443 checkInt(this, value, offset, byteLength, maxBytes, 0)
24444 }
24445
24446 var i = byteLength - 1
24447 var mul = 1
24448 this[offset + i] = value & 0xFF
24449 while (--i >= 0 && (mul *= 0x100)) {
24450 this[offset + i] = (value / mul) & 0xFF
24451 }
24452
24453 return offset + byteLength
24454 }
24455
24456 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24457 value = +value
24458 offset = offset >>> 0
24459 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24460 this[offset] = (value & 0xff)
24461 return offset + 1
24462 }
24463
24464 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24465 value = +value
24466 offset = offset >>> 0
24467 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24468 this[offset] = (value & 0xff)
24469 this[offset + 1] = (value >>> 8)
24470 return offset + 2
24471 }
24472
24473 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24474 value = +value
24475 offset = offset >>> 0
24476 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24477 this[offset] = (value >>> 8)
24478 this[offset + 1] = (value & 0xff)
24479 return offset + 2
24480 }
24481
24482 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24483 value = +value
24484 offset = offset >>> 0
24485 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24486 this[offset + 3] = (value >>> 24)
24487 this[offset + 2] = (value >>> 16)
24488 this[offset + 1] = (value >>> 8)
24489 this[offset] = (value & 0xff)
24490 return offset + 4
24491 }
24492
24493 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24494 value = +value
24495 offset = offset >>> 0
24496 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24497 this[offset] = (value >>> 24)
24498 this[offset + 1] = (value >>> 16)
24499 this[offset + 2] = (value >>> 8)
24500 this[offset + 3] = (value & 0xff)
24501 return offset + 4
24502 }
24503
24504 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24505 value = +value
24506 offset = offset >>> 0
24507 if (!noAssert) {
24508 var limit = Math.pow(2, (8 * byteLength) - 1)
24509
24510 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24511 }
24512
24513 var i = 0
24514 var mul = 1
24515 var sub = 0
24516 this[offset] = value & 0xFF
24517 while (++i < byteLength && (mul *= 0x100)) {
24518 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24519 sub = 1
24520 }
24521 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24522 }
24523
24524 return offset + byteLength
24525 }
24526
24527 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24528 value = +value
24529 offset = offset >>> 0
24530 if (!noAssert) {
24531 var limit = Math.pow(2, (8 * byteLength) - 1)
24532
24533 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24534 }
24535
24536 var i = byteLength - 1
24537 var mul = 1
24538 var sub = 0
24539 this[offset + i] = value & 0xFF
24540 while (--i >= 0 && (mul *= 0x100)) {
24541 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24542 sub = 1
24543 }
24544 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24545 }
24546
24547 return offset + byteLength
24548 }
24549
24550 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24551 value = +value
24552 offset = offset >>> 0
24553 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24554 if (value < 0) value = 0xff + value + 1
24555 this[offset] = (value & 0xff)
24556 return offset + 1
24557 }
24558
24559 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24560 value = +value
24561 offset = offset >>> 0
24562 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24563 this[offset] = (value & 0xff)
24564 this[offset + 1] = (value >>> 8)
24565 return offset + 2
24566 }
24567
24568 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24569 value = +value
24570 offset = offset >>> 0
24571 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24572 this[offset] = (value >>> 8)
24573 this[offset + 1] = (value & 0xff)
24574 return offset + 2
24575 }
24576
24577 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24578 value = +value
24579 offset = offset >>> 0
24580 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24581 this[offset] = (value & 0xff)
24582 this[offset + 1] = (value >>> 8)
24583 this[offset + 2] = (value >>> 16)
24584 this[offset + 3] = (value >>> 24)
24585 return offset + 4
24586 }
24587
24588 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24589 value = +value
24590 offset = offset >>> 0
24591 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24592 if (value < 0) value = 0xffffffff + value + 1
24593 this[offset] = (value >>> 24)
24594 this[offset + 1] = (value >>> 16)
24595 this[offset + 2] = (value >>> 8)
24596 this[offset + 3] = (value & 0xff)
24597 return offset + 4
24598 }
24599
24600 function checkIEEE754 (buf, value, offset, ext, max, min) {
24601 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24602 if (offset < 0) throw new RangeError('Index out of range')
24603 }
24604
24605 function writeFloat (buf, value, offset, littleEndian, noAssert) {
24606 value = +value
24607 offset = offset >>> 0
24608 if (!noAssert) {
24609 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
24610 }
24611 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24612 return offset + 4
24613 }
24614
24615 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24616 return writeFloat(this, value, offset, true, noAssert)
24617 }
24618
24619 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24620 return writeFloat(this, value, offset, false, noAssert)
24621 }
24622
24623 function writeDouble (buf, value, offset, littleEndian, noAssert) {
24624 value = +value
24625 offset = offset >>> 0
24626 if (!noAssert) {
24627 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
24628 }
24629 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24630 return offset + 8
24631 }
24632
24633 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24634 return writeDouble(this, value, offset, true, noAssert)
24635 }
24636
24637 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24638 return writeDouble(this, value, offset, false, noAssert)
24639 }
24640
24641 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24642 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24643 if (!start) start = 0
24644 if (!end && end !== 0) end = this.length
24645 if (targetStart >= target.length) targetStart = target.length
24646 if (!targetStart) targetStart = 0
24647 if (end > 0 && end < start) end = start
24648
24649 // Copy 0 bytes; we're done
24650 if (end === start) return 0
24651 if (target.length === 0 || this.length === 0) return 0
24652
24653 // Fatal error conditions
24654 if (targetStart < 0) {
24655 throw new RangeError('targetStart out of bounds')
24656 }
24657 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24658 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24659
24660 // Are we oob?
24661 if (end > this.length) end = this.length
24662 if (target.length - targetStart < end - start) {
24663 end = target.length - targetStart + start
24664 }
24665
24666 var len = end - start
24667 var i
24668
24669 if (this === target && start < targetStart && targetStart < end) {
24670 // descending copy from end
24671 for (i = len - 1; i >= 0; --i) {
24672 target[i + targetStart] = this[i + start]
24673 }
24674 } else if (len < 1000) {
24675 // ascending copy from start
24676 for (i = 0; i < len; ++i) {
24677 target[i + targetStart] = this[i + start]
24678 }
24679 } else {
24680 Uint8Array.prototype.set.call(
24681 target,
24682 this.subarray(start, start + len),
24683 targetStart
24684 )
24685 }
24686
24687 return len
24688 }
24689
24690 // Usage:
24691 // buffer.fill(number[, offset[, end]])
24692 // buffer.fill(buffer[, offset[, end]])
24693 // buffer.fill(string[, offset[, end]][, encoding])
24694 Buffer.prototype.fill = function fill (val, start, end, encoding) {
24695 // Handle string cases:
24696 if (typeof val === 'string') {
24697 if (typeof start === 'string') {
24698 encoding = start
24699 start = 0
24700 end = this.length
24701 } else if (typeof end === 'string') {
24702 encoding = end
24703 end = this.length
24704 }
24705 if (val.length === 1) {
24706 var code = val.charCodeAt(0)
24707 if (code < 256) {
24708 val = code
24709 }
24710 }
24711 if (encoding !== undefined && typeof encoding !== 'string') {
24712 throw new TypeError('encoding must be a string')
24713 }
24714 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24715 throw new TypeError('Unknown encoding: ' + encoding)
24716 }
24717 } else if (typeof val === 'number') {
24718 val = val & 255
24719 }
24720
24721 // Invalid ranges are not set to a default, so can range check early.
24722 if (start < 0 || this.length < start || this.length < end) {
24723 throw new RangeError('Out of range index')
24724 }
24725
24726 if (end <= start) {
24727 return this
24728 }
24729
24730 start = start >>> 0
24731 end = end === undefined ? this.length : end >>> 0
24732
24733 if (!val) val = 0
24734
24735 var i
24736 if (typeof val === 'number') {
24737 for (i = start; i < end; ++i) {
24738 this[i] = val
24739 }
24740 } else {
24741 var bytes = Buffer.isBuffer(val)
24742 ? val
24743 : new Buffer(val, encoding)
24744 var len = bytes.length
24745 for (i = 0; i < end - start; ++i) {
24746 this[i + start] = bytes[i % len]
24747 }
24748 }
24749
24750 return this
24751 }
24752
24753 // HELPER FUNCTIONS
24754 // ================
24755
24756 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24757
24758 function base64clean (str) {
24759 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24760 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24761 // Node converts strings with length < 2 to ''
24762 if (str.length < 2) return ''
24763 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24764 while (str.length % 4 !== 0) {
24765 str = str + '='
24766 }
24767 return str
24768 }
24769
24770 function stringtrim (str) {
24771 if (str.trim) return str.trim()
24772 return str.replace(/^\s+|\s+$/g, '')
24773 }
24774
24775 function toHex (n) {
24776 if (n < 16) return '0' + n.toString(16)
24777 return n.toString(16)
24778 }
24779
24780 function utf8ToBytes (string, units) {
24781 units = units || Infinity
24782 var codePoint
24783 var length = string.length
24784 var leadSurrogate = null
24785 var bytes = []
24786
24787 for (var i = 0; i < length; ++i) {
24788 codePoint = string.charCodeAt(i)
24789
24790 // is surrogate component
24791 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24792 // last char was a lead
24793 if (!leadSurrogate) {
24794 // no lead yet
24795 if (codePoint > 0xDBFF) {
24796 // unexpected trail
24797 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24798 continue
24799 } else if (i + 1 === length) {
24800 // unpaired lead
24801 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24802 continue
24803 }
24804
24805 // valid lead
24806 leadSurrogate = codePoint
24807
24808 continue
24809 }
24810
24811 // 2 leads in a row
24812 if (codePoint < 0xDC00) {
24813 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24814 leadSurrogate = codePoint
24815 continue
24816 }
24817
24818 // valid surrogate pair
24819 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24820 } else if (leadSurrogate) {
24821 // valid bmp char, but last char was a lead
24822 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24823 }
24824
24825 leadSurrogate = null
24826
24827 // encode utf8
24828 if (codePoint < 0x80) {
24829 if ((units -= 1) < 0) break
24830 bytes.push(codePoint)
24831 } else if (codePoint < 0x800) {
24832 if ((units -= 2) < 0) break
24833 bytes.push(
24834 codePoint >> 0x6 | 0xC0,
24835 codePoint & 0x3F | 0x80
24836 )
24837 } else if (codePoint < 0x10000) {
24838 if ((units -= 3) < 0) break
24839 bytes.push(
24840 codePoint >> 0xC | 0xE0,
24841 codePoint >> 0x6 & 0x3F | 0x80,
24842 codePoint & 0x3F | 0x80
24843 )
24844 } else if (codePoint < 0x110000) {
24845 if ((units -= 4) < 0) break
24846 bytes.push(
24847 codePoint >> 0x12 | 0xF0,
24848 codePoint >> 0xC & 0x3F | 0x80,
24849 codePoint >> 0x6 & 0x3F | 0x80,
24850 codePoint & 0x3F | 0x80
24851 )
24852 } else {
24853 throw new Error('Invalid code point')
24854 }
24855 }
24856
24857 return bytes
24858 }
24859
24860 function asciiToBytes (str) {
24861 var byteArray = []
24862 for (var i = 0; i < str.length; ++i) {
24863 // Node's code seems to be doing this and not & 0x7F..
24864 byteArray.push(str.charCodeAt(i) & 0xFF)
24865 }
24866 return byteArray
24867 }
24868
24869 function utf16leToBytes (str, units) {
24870 var c, hi, lo
24871 var byteArray = []
24872 for (var i = 0; i < str.length; ++i) {
24873 if ((units -= 2) < 0) break
24874
24875 c = str.charCodeAt(i)
24876 hi = c >> 8
24877 lo = c % 256
24878 byteArray.push(lo)
24879 byteArray.push(hi)
24880 }
24881
24882 return byteArray
24883 }
24884
24885 function base64ToBytes (str) {
24886 return base64.toByteArray(base64clean(str))
24887 }
24888
24889 function blitBuffer (src, dst, offset, length) {
24890 for (var i = 0; i < length; ++i) {
24891 if ((i + offset >= dst.length) || (i >= src.length)) break
24892 dst[i + offset] = src[i]
24893 }
24894 return i
24895 }
24896
24897 function isnan (val) {
24898 return val !== val // eslint-disable-line no-self-compare
24899 }
24900
24901 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24902 (function (Buffer){
24903 // Copyright Joyent, Inc. and other Node contributors.
24904 //
24905 // Permission is hereby granted, free of charge, to any person obtaining a
24906 // copy of this software and associated documentation files (the
24907 // "Software"), to deal in the Software without restriction, including
24908 // without limitation the rights to use, copy, modify, merge, publish,
24909 // distribute, sublicense, and/or sell copies of the Software, and to permit
24910 // persons to whom the Software is furnished to do so, subject to the
24911 // following conditions:
24912 //
24913 // The above copyright notice and this permission notice shall be included
24914 // in all copies or substantial portions of the Software.
24915 //
24916 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24917 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24918 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24919 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24920 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24921 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24922 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24923
24924 // NOTE: These type checking functions intentionally don't use `instanceof`
24925 // because it is fragile and can be easily faked with `Object.create()`.
24926
24927 function isArray(arg) {
24928 if (Array.isArray) {
24929 return Array.isArray(arg);
24930 }
24931 return objectToString(arg) === '[object Array]';
24932 }
24933 exports.isArray = isArray;
24934
24935 function isBoolean(arg) {
24936 return typeof arg === 'boolean';
24937 }
24938 exports.isBoolean = isBoolean;
24939
24940 function isNull(arg) {
24941 return arg === null;
24942 }
24943 exports.isNull = isNull;
24944
24945 function isNullOrUndefined(arg) {
24946 return arg == null;
24947 }
24948 exports.isNullOrUndefined = isNullOrUndefined;
24949
24950 function isNumber(arg) {
24951 return typeof arg === 'number';
24952 }
24953 exports.isNumber = isNumber;
24954
24955 function isString(arg) {
24956 return typeof arg === 'string';
24957 }
24958 exports.isString = isString;
24959
24960 function isSymbol(arg) {
24961 return typeof arg === 'symbol';
24962 }
24963 exports.isSymbol = isSymbol;
24964
24965 function isUndefined(arg) {
24966 return arg === void 0;
24967 }
24968 exports.isUndefined = isUndefined;
24969
24970 function isRegExp(re) {
24971 return objectToString(re) === '[object RegExp]';
24972 }
24973 exports.isRegExp = isRegExp;
24974
24975 function isObject(arg) {
24976 return typeof arg === 'object' && arg !== null;
24977 }
24978 exports.isObject = isObject;
24979
24980 function isDate(d) {
24981 return objectToString(d) === '[object Date]';
24982 }
24983 exports.isDate = isDate;
24984
24985 function isError(e) {
24986 return (objectToString(e) === '[object Error]' || e instanceof Error);
24987 }
24988 exports.isError = isError;
24989
24990 function isFunction(arg) {
24991 return typeof arg === 'function';
24992 }
24993 exports.isFunction = isFunction;
24994
24995 function isPrimitive(arg) {
24996 return arg === null ||
24997 typeof arg === 'boolean' ||
24998 typeof arg === 'number' ||
24999 typeof arg === 'string' ||
25000 typeof arg === 'symbol' || // ES6 symbol
25001 typeof arg === 'undefined';
25002 }
25003 exports.isPrimitive = isPrimitive;
25004
25005 exports.isBuffer = Buffer.isBuffer;
25006
25007 function objectToString(o) {
25008 return Object.prototype.toString.call(o);
25009 }
25010
25011 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
25012 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
25013 // Copyright Joyent, Inc. and other Node contributors.
25014 //
25015 // Permission is hereby granted, free of charge, to any person obtaining a
25016 // copy of this software and associated documentation files (the
25017 // "Software"), to deal in the Software without restriction, including
25018 // without limitation the rights to use, copy, modify, merge, publish,
25019 // distribute, sublicense, and/or sell copies of the Software, and to permit
25020 // persons to whom the Software is furnished to do so, subject to the
25021 // following conditions:
25022 //
25023 // The above copyright notice and this permission notice shall be included
25024 // in all copies or substantial portions of the Software.
25025 //
25026 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25027 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25028 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25029 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25030 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25031 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25032 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25033
25034 function EventEmitter() {
25035 this._events = this._events || {};
25036 this._maxListeners = this._maxListeners || undefined;
25037 }
25038 module.exports = EventEmitter;
25039
25040 // Backwards-compat with node 0.10.x
25041 EventEmitter.EventEmitter = EventEmitter;
25042
25043 EventEmitter.prototype._events = undefined;
25044 EventEmitter.prototype._maxListeners = undefined;
25045
25046 // By default EventEmitters will print a warning if more than 10 listeners are
25047 // added to it. This is a useful default which helps finding memory leaks.
25048 EventEmitter.defaultMaxListeners = 10;
25049
25050 // Obviously not all Emitters should be limited to 10. This function allows
25051 // that to be increased. Set to zero for unlimited.
25052 EventEmitter.prototype.setMaxListeners = function(n) {
25053 if (!isNumber(n) || n < 0 || isNaN(n))
25054 throw TypeError('n must be a positive number');
25055 this._maxListeners = n;
25056 return this;
25057 };
25058
25059 EventEmitter.prototype.emit = function(type) {
25060 var er, handler, len, args, i, listeners;
25061
25062 if (!this._events)
25063 this._events = {};
25064
25065 // If there is no 'error' event listener then throw.
25066 if (type === 'error') {
25067 if (!this._events.error ||
25068 (isObject(this._events.error) && !this._events.error.length)) {
25069 er = arguments[1];
25070 if (er instanceof Error) {
25071 throw er; // Unhandled 'error' event
25072 } else {
25073 // At least give some kind of context to the user
25074 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
25075 err.context = er;
25076 throw err;
25077 }
25078 }
25079 }
25080
25081 handler = this._events[type];
25082
25083 if (isUndefined(handler))
25084 return false;
25085
25086 if (isFunction(handler)) {
25087 switch (arguments.length) {
25088 // fast cases
25089 case 1:
25090 handler.call(this);
25091 break;
25092 case 2:
25093 handler.call(this, arguments[1]);
25094 break;
25095 case 3:
25096 handler.call(this, arguments[1], arguments[2]);
25097 break;
25098 // slower
25099 default:
25100 args = Array.prototype.slice.call(arguments, 1);
25101 handler.apply(this, args);
25102 }
25103 } else if (isObject(handler)) {
25104 args = Array.prototype.slice.call(arguments, 1);
25105 listeners = handler.slice();
25106 len = listeners.length;
25107 for (i = 0; i < len; i++)
25108 listeners[i].apply(this, args);
25109 }
25110
25111 return true;
25112 };
25113
25114 EventEmitter.prototype.addListener = function(type, listener) {
25115 var m;
25116
25117 if (!isFunction(listener))
25118 throw TypeError('listener must be a function');
25119
25120 if (!this._events)
25121 this._events = {};
25122
25123 // To avoid recursion in the case that type === "newListener"! Before
25124 // adding it to the listeners, first emit "newListener".
25125 if (this._events.newListener)
25126 this.emit('newListener', type,
25127 isFunction(listener.listener) ?
25128 listener.listener : listener);
25129
25130 if (!this._events[type])
25131 // Optimize the case of one listener. Don't need the extra array object.
25132 this._events[type] = listener;
25133 else if (isObject(this._events[type]))
25134 // If we've already got an array, just append.
25135 this._events[type].push(listener);
25136 else
25137 // Adding the second element, need to change to array.
25138 this._events[type] = [this._events[type], listener];
25139
25140 // Check for listener leak
25141 if (isObject(this._events[type]) && !this._events[type].warned) {
25142 if (!isUndefined(this._maxListeners)) {
25143 m = this._maxListeners;
25144 } else {
25145 m = EventEmitter.defaultMaxListeners;
25146 }
25147
25148 if (m && m > 0 && this._events[type].length > m) {
25149 this._events[type].warned = true;
25150 console.error('(node) warning: possible EventEmitter memory ' +
25151 'leak detected. %d listeners added. ' +
25152 'Use emitter.setMaxListeners() to increase limit.',
25153 this._events[type].length);
25154 if (typeof console.trace === 'function') {
25155 // not supported in IE 10
25156 console.trace();
25157 }
25158 }
25159 }
25160
25161 return this;
25162 };
25163
25164 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
25165
25166 EventEmitter.prototype.once = function(type, listener) {
25167 if (!isFunction(listener))
25168 throw TypeError('listener must be a function');
25169
25170 var fired = false;
25171
25172 function g() {
25173 this.removeListener(type, g);
25174
25175 if (!fired) {
25176 fired = true;
25177 listener.apply(this, arguments);
25178 }
25179 }
25180
25181 g.listener = listener;
25182 this.on(type, g);
25183
25184 return this;
25185 };
25186
25187 // emits a 'removeListener' event iff the listener was removed
25188 EventEmitter.prototype.removeListener = function(type, listener) {
25189 var list, position, length, i;
25190
25191 if (!isFunction(listener))
25192 throw TypeError('listener must be a function');
25193
25194 if (!this._events || !this._events[type])
25195 return this;
25196
25197 list = this._events[type];
25198 length = list.length;
25199 position = -1;
25200
25201 if (list === listener ||
25202 (isFunction(list.listener) && list.listener === listener)) {
25203 delete this._events[type];
25204 if (this._events.removeListener)
25205 this.emit('removeListener', type, listener);
25206
25207 } else if (isObject(list)) {
25208 for (i = length; i-- > 0;) {
25209 if (list[i] === listener ||
25210 (list[i].listener && list[i].listener === listener)) {
25211 position = i;
25212 break;
25213 }
25214 }
25215
25216 if (position < 0)
25217 return this;
25218
25219 if (list.length === 1) {
25220 list.length = 0;
25221 delete this._events[type];
25222 } else {
25223 list.splice(position, 1);
25224 }
25225
25226 if (this._events.removeListener)
25227 this.emit('removeListener', type, listener);
25228 }
25229
25230 return this;
25231 };
25232
25233 EventEmitter.prototype.removeAllListeners = function(type) {
25234 var key, listeners;
25235
25236 if (!this._events)
25237 return this;
25238
25239 // not listening for removeListener, no need to emit
25240 if (!this._events.removeListener) {
25241 if (arguments.length === 0)
25242 this._events = {};
25243 else if (this._events[type])
25244 delete this._events[type];
25245 return this;
25246 }
25247
25248 // emit removeListener for all listeners on all events
25249 if (arguments.length === 0) {
25250 for (key in this._events) {
25251 if (key === 'removeListener') continue;
25252 this.removeAllListeners(key);
25253 }
25254 this.removeAllListeners('removeListener');
25255 this._events = {};
25256 return this;
25257 }
25258
25259 listeners = this._events[type];
25260
25261 if (isFunction(listeners)) {
25262 this.removeListener(type, listeners);
25263 } else if (listeners) {
25264 // LIFO order
25265 while (listeners.length)
25266 this.removeListener(type, listeners[listeners.length - 1]);
25267 }
25268 delete this._events[type];
25269
25270 return this;
25271 };
25272
25273 EventEmitter.prototype.listeners = function(type) {
25274 var ret;
25275 if (!this._events || !this._events[type])
25276 ret = [];
25277 else if (isFunction(this._events[type]))
25278 ret = [this._events[type]];
25279 else
25280 ret = this._events[type].slice();
25281 return ret;
25282 };
25283
25284 EventEmitter.prototype.listenerCount = function(type) {
25285 if (this._events) {
25286 var evlistener = this._events[type];
25287
25288 if (isFunction(evlistener))
25289 return 1;
25290 else if (evlistener)
25291 return evlistener.length;
25292 }
25293 return 0;
25294 };
25295
25296 EventEmitter.listenerCount = function(emitter, type) {
25297 return emitter.listenerCount(type);
25298 };
25299
25300 function isFunction(arg) {
25301 return typeof arg === 'function';
25302 }
25303
25304 function isNumber(arg) {
25305 return typeof arg === 'number';
25306 }
25307
25308 function isObject(arg) {
25309 return typeof arg === 'object' && arg !== null;
25310 }
25311
25312 function isUndefined(arg) {
25313 return arg === void 0;
25314 }
25315
25316 },{}],8:[function(require,module,exports){
25317 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25318 var e, m
25319 var eLen = nBytes * 8 - mLen - 1
25320 var eMax = (1 << eLen) - 1
25321 var eBias = eMax >> 1
25322 var nBits = -7
25323 var i = isLE ? (nBytes - 1) : 0
25324 var d = isLE ? -1 : 1
25325 var s = buffer[offset + i]
25326
25327 i += d
25328
25329 e = s & ((1 << (-nBits)) - 1)
25330 s >>= (-nBits)
25331 nBits += eLen
25332 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25333
25334 m = e & ((1 << (-nBits)) - 1)
25335 e >>= (-nBits)
25336 nBits += mLen
25337 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25338
25339 if (e === 0) {
25340 e = 1 - eBias
25341 } else if (e === eMax) {
25342 return m ? NaN : ((s ? -1 : 1) * Infinity)
25343 } else {
25344 m = m + Math.pow(2, mLen)
25345 e = e - eBias
25346 }
25347 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
25348 }
25349
25350 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25351 var e, m, c
25352 var eLen = nBytes * 8 - mLen - 1
25353 var eMax = (1 << eLen) - 1
25354 var eBias = eMax >> 1
25355 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25356 var i = isLE ? 0 : (nBytes - 1)
25357 var d = isLE ? 1 : -1
25358 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
25359
25360 value = Math.abs(value)
25361
25362 if (isNaN(value) || value === Infinity) {
25363 m = isNaN(value) ? 1 : 0
25364 e = eMax
25365 } else {
25366 e = Math.floor(Math.log(value) / Math.LN2)
25367 if (value * (c = Math.pow(2, -e)) < 1) {
25368 e--
25369 c *= 2
25370 }
25371 if (e + eBias >= 1) {
25372 value += rt / c
25373 } else {
25374 value += rt * Math.pow(2, 1 - eBias)
25375 }
25376 if (value * c >= 2) {
25377 e++
25378 c /= 2
25379 }
25380
25381 if (e + eBias >= eMax) {
25382 m = 0
25383 e = eMax
25384 } else if (e + eBias >= 1) {
25385 m = (value * c - 1) * Math.pow(2, mLen)
25386 e = e + eBias
25387 } else {
25388 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25389 e = 0
25390 }
25391 }
25392
25393 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
25394
25395 e = (e << mLen) | m
25396 eLen += mLen
25397 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
25398
25399 buffer[offset + i - d] |= s * 128
25400 }
25401
25402 },{}],9:[function(require,module,exports){
25403 if (typeof Object.create === 'function') {
25404 // implementation from standard node.js 'util' module
25405 module.exports = function inherits(ctor, superCtor) {
25406 ctor.super_ = superCtor
25407 ctor.prototype = Object.create(superCtor.prototype, {
25408 constructor: {
25409 value: ctor,
25410 enumerable: false,
25411 writable: true,
25412 configurable: true
25413 }
25414 });
25415 };
25416 } else {
25417 // old school shim for old browsers
25418 module.exports = function inherits(ctor, superCtor) {
25419 ctor.super_ = superCtor
25420 var TempCtor = function () {}
25421 TempCtor.prototype = superCtor.prototype
25422 ctor.prototype = new TempCtor()
25423 ctor.prototype.constructor = ctor
25424 }
25425 }
25426
25427 },{}],10:[function(require,module,exports){
25428 /*!
25429 * Determine if an object is a Buffer
25430 *
25431 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25432 * @license MIT
25433 */
25434
25435 // The _isBuffer check is for Safari 5-7 support, because it's missing
25436 // Object.prototype.constructor. Remove this eventually
25437 module.exports = function (obj) {
25438 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
25439 }
25440
25441 function isBuffer (obj) {
25442 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25443 }
25444
25445 // For Node v0.10 support. Remove this eventually.
25446 function isSlowBuffer (obj) {
25447 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25448 }
25449
25450 },{}],11:[function(require,module,exports){
25451 var toString = {}.toString;
25452
25453 module.exports = Array.isArray || function (arr) {
25454 return toString.call(arr) == '[object Array]';
25455 };
25456
25457 },{}],12:[function(require,module,exports){
25458 (function (process){
25459 'use strict';
25460
25461 if (!process.version ||
25462 process.version.indexOf('v0.') === 0 ||
25463 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25464 module.exports = nextTick;
25465 } else {
25466 module.exports = process.nextTick;
25467 }
25468
25469 function nextTick(fn, arg1, arg2, arg3) {
25470 if (typeof fn !== 'function') {
25471 throw new TypeError('"callback" argument must be a function');
25472 }
25473 var len = arguments.length;
25474 var args, i;
25475 switch (len) {
25476 case 0:
25477 case 1:
25478 return process.nextTick(fn);
25479 case 2:
25480 return process.nextTick(function afterTickOne() {
25481 fn.call(null, arg1);
25482 });
25483 case 3:
25484 return process.nextTick(function afterTickTwo() {
25485 fn.call(null, arg1, arg2);
25486 });
25487 case 4:
25488 return process.nextTick(function afterTickThree() {
25489 fn.call(null, arg1, arg2, arg3);
25490 });
25491 default:
25492 args = new Array(len - 1);
25493 i = 0;
25494 while (i < args.length) {
25495 args[i++] = arguments[i];
25496 }
25497 return process.nextTick(function afterTick() {
25498 fn.apply(null, args);
25499 });
25500 }
25501 }
25502
25503 }).call(this,require('_process'))
25504 },{"_process":13}],13:[function(require,module,exports){
25505 // shim for using process in browser
25506 var process = module.exports = {};
25507
25508 // cached from whatever global is present so that test runners that stub it
25509 // don't break things. But we need to wrap it in a try catch in case it is
25510 // wrapped in strict mode code which doesn't define any globals. It's inside a
25511 // function because try/catches deoptimize in certain engines.
25512
25513 var cachedSetTimeout;
25514 var cachedClearTimeout;
25515
25516 function defaultSetTimout() {
25517 throw new Error('setTimeout has not been defined');
25518 }
25519 function defaultClearTimeout () {
25520 throw new Error('clearTimeout has not been defined');
25521 }
25522 (function () {
25523 try {
25524 if (typeof setTimeout === 'function') {
25525 cachedSetTimeout = setTimeout;
25526 } else {
25527 cachedSetTimeout = defaultSetTimout;
25528 }
25529 } catch (e) {
25530 cachedSetTimeout = defaultSetTimout;
25531 }
25532 try {
25533 if (typeof clearTimeout === 'function') {
25534 cachedClearTimeout = clearTimeout;
25535 } else {
25536 cachedClearTimeout = defaultClearTimeout;
25537 }
25538 } catch (e) {
25539 cachedClearTimeout = defaultClearTimeout;
25540 }
25541 } ())
25542 function runTimeout(fun) {
25543 if (cachedSetTimeout === setTimeout) {
25544 //normal enviroments in sane situations
25545 return setTimeout(fun, 0);
25546 }
25547 // if setTimeout wasn't available but was latter defined
25548 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25549 cachedSetTimeout = setTimeout;
25550 return setTimeout(fun, 0);
25551 }
25552 try {
25553 // when when somebody has screwed with setTimeout but no I.E. maddness
25554 return cachedSetTimeout(fun, 0);
25555 } catch(e){
25556 try {
25557 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25558 return cachedSetTimeout.call(null, fun, 0);
25559 } catch(e){
25560 // 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
25561 return cachedSetTimeout.call(this, fun, 0);
25562 }
25563 }
25564
25565
25566 }
25567 function runClearTimeout(marker) {
25568 if (cachedClearTimeout === clearTimeout) {
25569 //normal enviroments in sane situations
25570 return clearTimeout(marker);
25571 }
25572 // if clearTimeout wasn't available but was latter defined
25573 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25574 cachedClearTimeout = clearTimeout;
25575 return clearTimeout(marker);
25576 }
25577 try {
25578 // when when somebody has screwed with setTimeout but no I.E. maddness
25579 return cachedClearTimeout(marker);
25580 } catch (e){
25581 try {
25582 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25583 return cachedClearTimeout.call(null, marker);
25584 } catch (e){
25585 // 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.
25586 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25587 return cachedClearTimeout.call(this, marker);
25588 }
25589 }
25590
25591
25592
25593 }
25594 var queue = [];
25595 var draining = false;
25596 var currentQueue;
25597 var queueIndex = -1;
25598
25599 function cleanUpNextTick() {
25600 if (!draining || !currentQueue) {
25601 return;
25602 }
25603 draining = false;
25604 if (currentQueue.length) {
25605 queue = currentQueue.concat(queue);
25606 } else {
25607 queueIndex = -1;
25608 }
25609 if (queue.length) {
25610 drainQueue();
25611 }
25612 }
25613
25614 function drainQueue() {
25615 if (draining) {
25616 return;
25617 }
25618 var timeout = runTimeout(cleanUpNextTick);
25619 draining = true;
25620
25621 var len = queue.length;
25622 while(len) {
25623 currentQueue = queue;
25624 queue = [];
25625 while (++queueIndex < len) {
25626 if (currentQueue) {
25627 currentQueue[queueIndex].run();
25628 }
25629 }
25630 queueIndex = -1;
25631 len = queue.length;
25632 }
25633 currentQueue = null;
25634 draining = false;
25635 runClearTimeout(timeout);
25636 }
25637
25638 process.nextTick = function (fun) {
25639 var args = new Array(arguments.length - 1);
25640 if (arguments.length > 1) {
25641 for (var i = 1; i < arguments.length; i++) {
25642 args[i - 1] = arguments[i];
25643 }
25644 }
25645 queue.push(new Item(fun, args));
25646 if (queue.length === 1 && !draining) {
25647 runTimeout(drainQueue);
25648 }
25649 };
25650
25651 // v8 likes predictible objects
25652 function Item(fun, array) {
25653 this.fun = fun;
25654 this.array = array;
25655 }
25656 Item.prototype.run = function () {
25657 this.fun.apply(null, this.array);
25658 };
25659 process.title = 'browser';
25660 process.browser = true;
25661 process.env = {};
25662 process.argv = [];
25663 process.version = ''; // empty string to avoid regexp issues
25664 process.versions = {};
25665
25666 function noop() {}
25667
25668 process.on = noop;
25669 process.addListener = noop;
25670 process.once = noop;
25671 process.off = noop;
25672 process.removeListener = noop;
25673 process.removeAllListeners = noop;
25674 process.emit = noop;
25675
25676 process.binding = function (name) {
25677 throw new Error('process.binding is not supported');
25678 };
25679
25680 process.cwd = function () { return '/' };
25681 process.chdir = function (dir) {
25682 throw new Error('process.chdir is not supported');
25683 };
25684 process.umask = function() { return 0; };
25685
25686 },{}],14:[function(require,module,exports){
25687 module.exports = require("./lib/_stream_duplex.js")
25688
25689 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25690 // a duplex stream is just a stream that is both readable and writable.
25691 // Since JS doesn't have multiple prototypal inheritance, this class
25692 // prototypally inherits from Readable, and then parasitically from
25693 // Writable.
25694
25695 'use strict';
25696
25697 /*<replacement>*/
25698
25699 var objectKeys = Object.keys || function (obj) {
25700 var keys = [];
25701 for (var key in obj) {
25702 keys.push(key);
25703 }return keys;
25704 };
25705 /*</replacement>*/
25706
25707 module.exports = Duplex;
25708
25709 /*<replacement>*/
25710 var processNextTick = require('process-nextick-args');
25711 /*</replacement>*/
25712
25713 /*<replacement>*/
25714 var util = require('core-util-is');
25715 util.inherits = require('inherits');
25716 /*</replacement>*/
25717
25718 var Readable = require('./_stream_readable');
25719 var Writable = require('./_stream_writable');
25720
25721 util.inherits(Duplex, Readable);
25722
25723 var keys = objectKeys(Writable.prototype);
25724 for (var v = 0; v < keys.length; v++) {
25725 var method = keys[v];
25726 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
25727 }
25728
25729 function Duplex(options) {
25730 if (!(this instanceof Duplex)) return new Duplex(options);
25731
25732 Readable.call(this, options);
25733 Writable.call(this, options);
25734
25735 if (options && options.readable === false) this.readable = false;
25736
25737 if (options && options.writable === false) this.writable = false;
25738
25739 this.allowHalfOpen = true;
25740 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
25741
25742 this.once('end', onend);
25743 }
25744
25745 // the no-half-open enforcer
25746 function onend() {
25747 // if we allow half-open state, or if the writable side ended,
25748 // then we're ok.
25749 if (this.allowHalfOpen || this._writableState.ended) return;
25750
25751 // no more data can be written.
25752 // But allow more writes to happen in this tick.
25753 processNextTick(onEndNT, this);
25754 }
25755
25756 function onEndNT(self) {
25757 self.end();
25758 }
25759
25760 function forEach(xs, f) {
25761 for (var i = 0, l = xs.length; i < l; i++) {
25762 f(xs[i], i);
25763 }
25764 }
25765 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25766 // a passthrough stream.
25767 // basically just the most minimal sort of Transform stream.
25768 // Every written chunk gets output as-is.
25769
25770 'use strict';
25771
25772 module.exports = PassThrough;
25773
25774 var Transform = require('./_stream_transform');
25775
25776 /*<replacement>*/
25777 var util = require('core-util-is');
25778 util.inherits = require('inherits');
25779 /*</replacement>*/
25780
25781 util.inherits(PassThrough, Transform);
25782
25783 function PassThrough(options) {
25784 if (!(this instanceof PassThrough)) return new PassThrough(options);
25785
25786 Transform.call(this, options);
25787 }
25788
25789 PassThrough.prototype._transform = function (chunk, encoding, cb) {
25790 cb(null, chunk);
25791 };
25792 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25793 (function (process){
25794 'use strict';
25795
25796 module.exports = Readable;
25797
25798 /*<replacement>*/
25799 var processNextTick = require('process-nextick-args');
25800 /*</replacement>*/
25801
25802 /*<replacement>*/
25803 var isArray = require('isarray');
25804 /*</replacement>*/
25805
25806 /*<replacement>*/
25807 var Duplex;
25808 /*</replacement>*/
25809
25810 Readable.ReadableState = ReadableState;
25811
25812 /*<replacement>*/
25813 var EE = require('events').EventEmitter;
25814
25815 var EElistenerCount = function (emitter, type) {
25816 return emitter.listeners(type).length;
25817 };
25818 /*</replacement>*/
25819
25820 /*<replacement>*/
25821 var Stream;
25822 (function () {
25823 try {
25824 Stream = require('st' + 'ream');
25825 } catch (_) {} finally {
25826 if (!Stream) Stream = require('events').EventEmitter;
25827 }
25828 })();
25829 /*</replacement>*/
25830
25831 var Buffer = require('buffer').Buffer;
25832 /*<replacement>*/
25833 var bufferShim = require('buffer-shims');
25834 /*</replacement>*/
25835
25836 /*<replacement>*/
25837 var util = require('core-util-is');
25838 util.inherits = require('inherits');
25839 /*</replacement>*/
25840
25841 /*<replacement>*/
25842 var debugUtil = require('util');
25843 var debug = void 0;
25844 if (debugUtil && debugUtil.debuglog) {
25845 debug = debugUtil.debuglog('stream');
25846 } else {
25847 debug = function () {};
25848 }
25849 /*</replacement>*/
25850
25851 var BufferList = require('./internal/streams/BufferList');
25852 var StringDecoder;
25853
25854 util.inherits(Readable, Stream);
25855
25856 function prependListener(emitter, event, fn) {
25857 // Sadly this is not cacheable as some libraries bundle their own
25858 // event emitter implementation with them.
25859 if (typeof emitter.prependListener === 'function') {
25860 return emitter.prependListener(event, fn);
25861 } else {
25862 // This is a hack to make sure that our error handler is attached before any
25863 // userland ones. NEVER DO THIS. This is here only because this code needs
25864 // to continue to work with older versions of Node.js that do not include
25865 // the prependListener() method. The goal is to eventually remove this hack.
25866 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]];
25867 }
25868 }
25869
25870 function ReadableState(options, stream) {
25871 Duplex = Duplex || require('./_stream_duplex');
25872
25873 options = options || {};
25874
25875 // object stream flag. Used to make read(n) ignore n and to
25876 // make all the buffer merging and length checks go away
25877 this.objectMode = !!options.objectMode;
25878
25879 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
25880
25881 // the point at which it stops calling _read() to fill the buffer
25882 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25883 var hwm = options.highWaterMark;
25884 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25885 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
25886
25887 // cast to ints.
25888 this.highWaterMark = ~ ~this.highWaterMark;
25889
25890 // A linked list is used to store data chunks instead of an array because the
25891 // linked list can remove elements from the beginning faster than
25892 // array.shift()
25893 this.buffer = new BufferList();
25894 this.length = 0;
25895 this.pipes = null;
25896 this.pipesCount = 0;
25897 this.flowing = null;
25898 this.ended = false;
25899 this.endEmitted = false;
25900 this.reading = false;
25901
25902 // a flag to be able to tell if the onwrite cb is called immediately,
25903 // or on a later tick. We set this to true at first, because any
25904 // actions that shouldn't happen until "later" should generally also
25905 // not happen before the first write call.
25906 this.sync = true;
25907
25908 // whenever we return null, then we set a flag to say
25909 // that we're awaiting a 'readable' event emission.
25910 this.needReadable = false;
25911 this.emittedReadable = false;
25912 this.readableListening = false;
25913 this.resumeScheduled = false;
25914
25915 // Crypto is kind of old and crusty. Historically, its default string
25916 // encoding is 'binary' so we have to make this configurable.
25917 // Everything else in the universe uses 'utf8', though.
25918 this.defaultEncoding = options.defaultEncoding || 'utf8';
25919
25920 // when piping, we only care about 'readable' events that happen
25921 // after read()ing all the bytes and not getting any pushback.
25922 this.ranOut = false;
25923
25924 // the number of writers that are awaiting a drain event in .pipe()s
25925 this.awaitDrain = 0;
25926
25927 // if true, a maybeReadMore has been scheduled
25928 this.readingMore = false;
25929
25930 this.decoder = null;
25931 this.encoding = null;
25932 if (options.encoding) {
25933 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25934 this.decoder = new StringDecoder(options.encoding);
25935 this.encoding = options.encoding;
25936 }
25937 }
25938
25939 function Readable(options) {
25940 Duplex = Duplex || require('./_stream_duplex');
25941
25942 if (!(this instanceof Readable)) return new Readable(options);
25943
25944 this._readableState = new ReadableState(options, this);
25945
25946 // legacy
25947 this.readable = true;
25948
25949 if (options && typeof options.read === 'function') this._read = options.read;
25950
25951 Stream.call(this);
25952 }
25953
25954 // Manually shove something into the read() buffer.
25955 // This returns true if the highWaterMark has not been hit yet,
25956 // similar to how Writable.write() returns true if you should
25957 // write() some more.
25958 Readable.prototype.push = function (chunk, encoding) {
25959 var state = this._readableState;
25960
25961 if (!state.objectMode && typeof chunk === 'string') {
25962 encoding = encoding || state.defaultEncoding;
25963 if (encoding !== state.encoding) {
25964 chunk = bufferShim.from(chunk, encoding);
25965 encoding = '';
25966 }
25967 }
25968
25969 return readableAddChunk(this, state, chunk, encoding, false);
25970 };
25971
25972 // Unshift should *always* be something directly out of read()
25973 Readable.prototype.unshift = function (chunk) {
25974 var state = this._readableState;
25975 return readableAddChunk(this, state, chunk, '', true);
25976 };
25977
25978 Readable.prototype.isPaused = function () {
25979 return this._readableState.flowing === false;
25980 };
25981
25982 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25983 var er = chunkInvalid(state, chunk);
25984 if (er) {
25985 stream.emit('error', er);
25986 } else if (chunk === null) {
25987 state.reading = false;
25988 onEofChunk(stream, state);
25989 } else if (state.objectMode || chunk && chunk.length > 0) {
25990 if (state.ended && !addToFront) {
25991 var e = new Error('stream.push() after EOF');
25992 stream.emit('error', e);
25993 } else if (state.endEmitted && addToFront) {
25994 var _e = new Error('stream.unshift() after end event');
25995 stream.emit('error', _e);
25996 } else {
25997 var skipAdd;
25998 if (state.decoder && !addToFront && !encoding) {
25999 chunk = state.decoder.write(chunk);
26000 skipAdd = !state.objectMode && chunk.length === 0;
26001 }
26002
26003 if (!addToFront) state.reading = false;
26004
26005 // Don't add to the buffer if we've decoded to an empty string chunk and
26006 // we're not in object mode
26007 if (!skipAdd) {
26008 // if we want the data now, just emit it.
26009 if (state.flowing && state.length === 0 && !state.sync) {
26010 stream.emit('data', chunk);
26011 stream.read(0);
26012 } else {
26013 // update the buffer info.
26014 state.length += state.objectMode ? 1 : chunk.length;
26015 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
26016
26017 if (state.needReadable) emitReadable(stream);
26018 }
26019 }
26020
26021 maybeReadMore(stream, state);
26022 }
26023 } else if (!addToFront) {
26024 state.reading = false;
26025 }
26026
26027 return needMoreData(state);
26028 }
26029
26030 // if it's past the high water mark, we can push in some more.
26031 // Also, if we have no data yet, we can stand some
26032 // more bytes. This is to work around cases where hwm=0,
26033 // such as the repl. Also, if the push() triggered a
26034 // readable event, and the user called read(largeNumber) such that
26035 // needReadable was set, then we ought to push more, so that another
26036 // 'readable' event will be triggered.
26037 function needMoreData(state) {
26038 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
26039 }
26040
26041 // backwards compatibility.
26042 Readable.prototype.setEncoding = function (enc) {
26043 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
26044 this._readableState.decoder = new StringDecoder(enc);
26045 this._readableState.encoding = enc;
26046 return this;
26047 };
26048
26049 // Don't raise the hwm > 8MB
26050 var MAX_HWM = 0x800000;
26051 function computeNewHighWaterMark(n) {
26052 if (n >= MAX_HWM) {
26053 n = MAX_HWM;
26054 } else {
26055 // Get the next highest power of 2 to prevent increasing hwm excessively in
26056 // tiny amounts
26057 n--;
26058 n |= n >>> 1;
26059 n |= n >>> 2;
26060 n |= n >>> 4;
26061 n |= n >>> 8;
26062 n |= n >>> 16;
26063 n++;
26064 }
26065 return n;
26066 }
26067
26068 // This function is designed to be inlinable, so please take care when making
26069 // changes to the function body.
26070 function howMuchToRead(n, state) {
26071 if (n <= 0 || state.length === 0 && state.ended) return 0;
26072 if (state.objectMode) return 1;
26073 if (n !== n) {
26074 // Only flow one buffer at a time
26075 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
26076 }
26077 // If we're asking for more than the current hwm, then raise the hwm.
26078 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
26079 if (n <= state.length) return n;
26080 // Don't have enough
26081 if (!state.ended) {
26082 state.needReadable = true;
26083 return 0;
26084 }
26085 return state.length;
26086 }
26087
26088 // you can override either this method, or the async _read(n) below.
26089 Readable.prototype.read = function (n) {
26090 debug('read', n);
26091 n = parseInt(n, 10);
26092 var state = this._readableState;
26093 var nOrig = n;
26094
26095 if (n !== 0) state.emittedReadable = false;
26096
26097 // if we're doing read(0) to trigger a readable event, but we
26098 // already have a bunch of data in the buffer, then just trigger
26099 // the 'readable' event and move on.
26100 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
26101 debug('read: emitReadable', state.length, state.ended);
26102 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
26103 return null;
26104 }
26105
26106 n = howMuchToRead(n, state);
26107
26108 // if we've ended, and we're now clear, then finish it up.
26109 if (n === 0 && state.ended) {
26110 if (state.length === 0) endReadable(this);
26111 return null;
26112 }
26113
26114 // All the actual chunk generation logic needs to be
26115 // *below* the call to _read. The reason is that in certain
26116 // synthetic stream cases, such as passthrough streams, _read
26117 // may be a completely synchronous operation which may change
26118 // the state of the read buffer, providing enough data when
26119 // before there was *not* enough.
26120 //
26121 // So, the steps are:
26122 // 1. Figure out what the state of things will be after we do
26123 // a read from the buffer.
26124 //
26125 // 2. If that resulting state will trigger a _read, then call _read.
26126 // Note that this may be asynchronous, or synchronous. Yes, it is
26127 // deeply ugly to write APIs this way, but that still doesn't mean
26128 // that the Readable class should behave improperly, as streams are
26129 // designed to be sync/async agnostic.
26130 // Take note if the _read call is sync or async (ie, if the read call
26131 // has returned yet), so that we know whether or not it's safe to emit
26132 // 'readable' etc.
26133 //
26134 // 3. Actually pull the requested chunks out of the buffer and return.
26135
26136 // if we need a readable event, then we need to do some reading.
26137 var doRead = state.needReadable;
26138 debug('need readable', doRead);
26139
26140 // if we currently have less than the highWaterMark, then also read some
26141 if (state.length === 0 || state.length - n < state.highWaterMark) {
26142 doRead = true;
26143 debug('length less than watermark', doRead);
26144 }
26145
26146 // however, if we've ended, then there's no point, and if we're already
26147 // reading, then it's unnecessary.
26148 if (state.ended || state.reading) {
26149 doRead = false;
26150 debug('reading or ended', doRead);
26151 } else if (doRead) {
26152 debug('do read');
26153 state.reading = true;
26154 state.sync = true;
26155 // if the length is currently zero, then we *need* a readable event.
26156 if (state.length === 0) state.needReadable = true;
26157 // call internal read method
26158 this._read(state.highWaterMark);
26159 state.sync = false;
26160 // If _read pushed data synchronously, then `reading` will be false,
26161 // and we need to re-evaluate how much data we can return to the user.
26162 if (!state.reading) n = howMuchToRead(nOrig, state);
26163 }
26164
26165 var ret;
26166 if (n > 0) ret = fromList(n, state);else ret = null;
26167
26168 if (ret === null) {
26169 state.needReadable = true;
26170 n = 0;
26171 } else {
26172 state.length -= n;
26173 }
26174
26175 if (state.length === 0) {
26176 // If we have nothing in the buffer, then we want to know
26177 // as soon as we *do* get something into the buffer.
26178 if (!state.ended) state.needReadable = true;
26179
26180 // If we tried to read() past the EOF, then emit end on the next tick.
26181 if (nOrig !== n && state.ended) endReadable(this);
26182 }
26183
26184 if (ret !== null) this.emit('data', ret);
26185
26186 return ret;
26187 };
26188
26189 function chunkInvalid(state, chunk) {
26190 var er = null;
26191 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26192 er = new TypeError('Invalid non-string/buffer chunk');
26193 }
26194 return er;
26195 }
26196
26197 function onEofChunk(stream, state) {
26198 if (state.ended) return;
26199 if (state.decoder) {
26200 var chunk = state.decoder.end();
26201 if (chunk && chunk.length) {
26202 state.buffer.push(chunk);
26203 state.length += state.objectMode ? 1 : chunk.length;
26204 }
26205 }
26206 state.ended = true;
26207
26208 // emit 'readable' now to make sure it gets picked up.
26209 emitReadable(stream);
26210 }
26211
26212 // Don't emit readable right away in sync mode, because this can trigger
26213 // another read() call => stack overflow. This way, it might trigger
26214 // a nextTick recursion warning, but that's not so bad.
26215 function emitReadable(stream) {
26216 var state = stream._readableState;
26217 state.needReadable = false;
26218 if (!state.emittedReadable) {
26219 debug('emitReadable', state.flowing);
26220 state.emittedReadable = true;
26221 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26222 }
26223 }
26224
26225 function emitReadable_(stream) {
26226 debug('emit readable');
26227 stream.emit('readable');
26228 flow(stream);
26229 }
26230
26231 // at this point, the user has presumably seen the 'readable' event,
26232 // and called read() to consume some data. that may have triggered
26233 // in turn another _read(n) call, in which case reading = true if
26234 // it's in progress.
26235 // However, if we're not ended, or reading, and the length < hwm,
26236 // then go ahead and try to read some more preemptively.
26237 function maybeReadMore(stream, state) {
26238 if (!state.readingMore) {
26239 state.readingMore = true;
26240 processNextTick(maybeReadMore_, stream, state);
26241 }
26242 }
26243
26244 function maybeReadMore_(stream, state) {
26245 var len = state.length;
26246 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26247 debug('maybeReadMore read 0');
26248 stream.read(0);
26249 if (len === state.length)
26250 // didn't get any data, stop spinning.
26251 break;else len = state.length;
26252 }
26253 state.readingMore = false;
26254 }
26255
26256 // abstract method. to be overridden in specific implementation classes.
26257 // call cb(er, data) where data is <= n in length.
26258 // for virtual (non-string, non-buffer) streams, "length" is somewhat
26259 // arbitrary, and perhaps not very meaningful.
26260 Readable.prototype._read = function (n) {
26261 this.emit('error', new Error('_read() is not implemented'));
26262 };
26263
26264 Readable.prototype.pipe = function (dest, pipeOpts) {
26265 var src = this;
26266 var state = this._readableState;
26267
26268 switch (state.pipesCount) {
26269 case 0:
26270 state.pipes = dest;
26271 break;
26272 case 1:
26273 state.pipes = [state.pipes, dest];
26274 break;
26275 default:
26276 state.pipes.push(dest);
26277 break;
26278 }
26279 state.pipesCount += 1;
26280 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
26281
26282 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
26283
26284 var endFn = doEnd ? onend : cleanup;
26285 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
26286
26287 dest.on('unpipe', onunpipe);
26288 function onunpipe(readable) {
26289 debug('onunpipe');
26290 if (readable === src) {
26291 cleanup();
26292 }
26293 }
26294
26295 function onend() {
26296 debug('onend');
26297 dest.end();
26298 }
26299
26300 // when the dest drains, it reduces the awaitDrain counter
26301 // on the source. This would be more elegant with a .once()
26302 // handler in flow(), but adding and removing repeatedly is
26303 // too slow.
26304 var ondrain = pipeOnDrain(src);
26305 dest.on('drain', ondrain);
26306
26307 var cleanedUp = false;
26308 function cleanup() {
26309 debug('cleanup');
26310 // cleanup event handlers once the pipe is broken
26311 dest.removeListener('close', onclose);
26312 dest.removeListener('finish', onfinish);
26313 dest.removeListener('drain', ondrain);
26314 dest.removeListener('error', onerror);
26315 dest.removeListener('unpipe', onunpipe);
26316 src.removeListener('end', onend);
26317 src.removeListener('end', cleanup);
26318 src.removeListener('data', ondata);
26319
26320 cleanedUp = true;
26321
26322 // if the reader is waiting for a drain event from this
26323 // specific writer, then it would cause it to never start
26324 // flowing again.
26325 // So, if this is awaiting a drain, then we just call it now.
26326 // If we don't know, then assume that we are waiting for one.
26327 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26328 }
26329
26330 // If the user pushes more data while we're writing to dest then we'll end up
26331 // in ondata again. However, we only want to increase awaitDrain once because
26332 // dest will only emit one 'drain' event for the multiple writes.
26333 // => Introduce a guard on increasing awaitDrain.
26334 var increasedAwaitDrain = false;
26335 src.on('data', ondata);
26336 function ondata(chunk) {
26337 debug('ondata');
26338 increasedAwaitDrain = false;
26339 var ret = dest.write(chunk);
26340 if (false === ret && !increasedAwaitDrain) {
26341 // If the user unpiped during `dest.write()`, it is possible
26342 // to get stuck in a permanently paused state if that write
26343 // also returned false.
26344 // => Check whether `dest` is still a piping destination.
26345 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26346 debug('false write response, pause', src._readableState.awaitDrain);
26347 src._readableState.awaitDrain++;
26348 increasedAwaitDrain = true;
26349 }
26350 src.pause();
26351 }
26352 }
26353
26354 // if the dest has an error, then stop piping into it.
26355 // however, don't suppress the throwing behavior for this.
26356 function onerror(er) {
26357 debug('onerror', er);
26358 unpipe();
26359 dest.removeListener('error', onerror);
26360 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26361 }
26362
26363 // Make sure our error handler is attached before userland ones.
26364 prependListener(dest, 'error', onerror);
26365
26366 // Both close and finish should trigger unpipe, but only once.
26367 function onclose() {
26368 dest.removeListener('finish', onfinish);
26369 unpipe();
26370 }
26371 dest.once('close', onclose);
26372 function onfinish() {
26373 debug('onfinish');
26374 dest.removeListener('close', onclose);
26375 unpipe();
26376 }
26377 dest.once('finish', onfinish);
26378
26379 function unpipe() {
26380 debug('unpipe');
26381 src.unpipe(dest);
26382 }
26383
26384 // tell the dest that it's being piped to
26385 dest.emit('pipe', src);
26386
26387 // start the flow if it hasn't been started already.
26388 if (!state.flowing) {
26389 debug('pipe resume');
26390 src.resume();
26391 }
26392
26393 return dest;
26394 };
26395
26396 function pipeOnDrain(src) {
26397 return function () {
26398 var state = src._readableState;
26399 debug('pipeOnDrain', state.awaitDrain);
26400 if (state.awaitDrain) state.awaitDrain--;
26401 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26402 state.flowing = true;
26403 flow(src);
26404 }
26405 };
26406 }
26407
26408 Readable.prototype.unpipe = function (dest) {
26409 var state = this._readableState;
26410
26411 // if we're not piping anywhere, then do nothing.
26412 if (state.pipesCount === 0) return this;
26413
26414 // just one destination. most common case.
26415 if (state.pipesCount === 1) {
26416 // passed in one, but it's not the right one.
26417 if (dest && dest !== state.pipes) return this;
26418
26419 if (!dest) dest = state.pipes;
26420
26421 // got a match.
26422 state.pipes = null;
26423 state.pipesCount = 0;
26424 state.flowing = false;
26425 if (dest) dest.emit('unpipe', this);
26426 return this;
26427 }
26428
26429 // slow case. multiple pipe destinations.
26430
26431 if (!dest) {
26432 // remove all.
26433 var dests = state.pipes;
26434 var len = state.pipesCount;
26435 state.pipes = null;
26436 state.pipesCount = 0;
26437 state.flowing = false;
26438
26439 for (var i = 0; i < len; i++) {
26440 dests[i].emit('unpipe', this);
26441 }return this;
26442 }
26443
26444 // try to find the right one.
26445 var index = indexOf(state.pipes, dest);
26446 if (index === -1) return this;
26447
26448 state.pipes.splice(index, 1);
26449 state.pipesCount -= 1;
26450 if (state.pipesCount === 1) state.pipes = state.pipes[0];
26451
26452 dest.emit('unpipe', this);
26453
26454 return this;
26455 };
26456
26457 // set up data events if they are asked for
26458 // Ensure readable listeners eventually get something
26459 Readable.prototype.on = function (ev, fn) {
26460 var res = Stream.prototype.on.call(this, ev, fn);
26461
26462 if (ev === 'data') {
26463 // Start flowing on next tick if stream isn't explicitly paused
26464 if (this._readableState.flowing !== false) this.resume();
26465 } else if (ev === 'readable') {
26466 var state = this._readableState;
26467 if (!state.endEmitted && !state.readableListening) {
26468 state.readableListening = state.needReadable = true;
26469 state.emittedReadable = false;
26470 if (!state.reading) {
26471 processNextTick(nReadingNextTick, this);
26472 } else if (state.length) {
26473 emitReadable(this, state);
26474 }
26475 }
26476 }
26477
26478 return res;
26479 };
26480 Readable.prototype.addListener = Readable.prototype.on;
26481
26482 function nReadingNextTick(self) {
26483 debug('readable nexttick read 0');
26484 self.read(0);
26485 }
26486
26487 // pause() and resume() are remnants of the legacy readable stream API
26488 // If the user uses them, then switch into old mode.
26489 Readable.prototype.resume = function () {
26490 var state = this._readableState;
26491 if (!state.flowing) {
26492 debug('resume');
26493 state.flowing = true;
26494 resume(this, state);
26495 }
26496 return this;
26497 };
26498
26499 function resume(stream, state) {
26500 if (!state.resumeScheduled) {
26501 state.resumeScheduled = true;
26502 processNextTick(resume_, stream, state);
26503 }
26504 }
26505
26506 function resume_(stream, state) {
26507 if (!state.reading) {
26508 debug('resume read 0');
26509 stream.read(0);
26510 }
26511
26512 state.resumeScheduled = false;
26513 state.awaitDrain = 0;
26514 stream.emit('resume');
26515 flow(stream);
26516 if (state.flowing && !state.reading) stream.read(0);
26517 }
26518
26519 Readable.prototype.pause = function () {
26520 debug('call pause flowing=%j', this._readableState.flowing);
26521 if (false !== this._readableState.flowing) {
26522 debug('pause');
26523 this._readableState.flowing = false;
26524 this.emit('pause');
26525 }
26526 return this;
26527 };
26528
26529 function flow(stream) {
26530 var state = stream._readableState;
26531 debug('flow', state.flowing);
26532 while (state.flowing && stream.read() !== null) {}
26533 }
26534
26535 // wrap an old-style stream as the async data source.
26536 // This is *not* part of the readable stream interface.
26537 // It is an ugly unfortunate mess of history.
26538 Readable.prototype.wrap = function (stream) {
26539 var state = this._readableState;
26540 var paused = false;
26541
26542 var self = this;
26543 stream.on('end', function () {
26544 debug('wrapped end');
26545 if (state.decoder && !state.ended) {
26546 var chunk = state.decoder.end();
26547 if (chunk && chunk.length) self.push(chunk);
26548 }
26549
26550 self.push(null);
26551 });
26552
26553 stream.on('data', function (chunk) {
26554 debug('wrapped data');
26555 if (state.decoder) chunk = state.decoder.write(chunk);
26556
26557 // don't skip over falsy values in objectMode
26558 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
26559
26560 var ret = self.push(chunk);
26561 if (!ret) {
26562 paused = true;
26563 stream.pause();
26564 }
26565 });
26566
26567 // proxy all the other methods.
26568 // important when wrapping filters and duplexes.
26569 for (var i in stream) {
26570 if (this[i] === undefined && typeof stream[i] === 'function') {
26571 this[i] = function (method) {
26572 return function () {
26573 return stream[method].apply(stream, arguments);
26574 };
26575 }(i);
26576 }
26577 }
26578
26579 // proxy certain important events.
26580 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26581 forEach(events, function (ev) {
26582 stream.on(ev, self.emit.bind(self, ev));
26583 });
26584
26585 // when we try to consume some more bytes, simply unpause the
26586 // underlying stream.
26587 self._read = function (n) {
26588 debug('wrapped _read', n);
26589 if (paused) {
26590 paused = false;
26591 stream.resume();
26592 }
26593 };
26594
26595 return self;
26596 };
26597
26598 // exposed for testing purposes only.
26599 Readable._fromList = fromList;
26600
26601 // Pluck off n bytes from an array of buffers.
26602 // Length is the combined lengths of all the buffers in the list.
26603 // This function is designed to be inlinable, so please take care when making
26604 // changes to the function body.
26605 function fromList(n, state) {
26606 // nothing buffered
26607 if (state.length === 0) return null;
26608
26609 var ret;
26610 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26611 // read it all, truncate the list
26612 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);
26613 state.buffer.clear();
26614 } else {
26615 // read part of list
26616 ret = fromListPartial(n, state.buffer, state.decoder);
26617 }
26618
26619 return ret;
26620 }
26621
26622 // Extracts only enough buffered data to satisfy the amount requested.
26623 // This function is designed to be inlinable, so please take care when making
26624 // changes to the function body.
26625 function fromListPartial(n, list, hasStrings) {
26626 var ret;
26627 if (n < list.head.data.length) {
26628 // slice is the same for buffers and strings
26629 ret = list.head.data.slice(0, n);
26630 list.head.data = list.head.data.slice(n);
26631 } else if (n === list.head.data.length) {
26632 // first chunk is a perfect match
26633 ret = list.shift();
26634 } else {
26635 // result spans more than one buffer
26636 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26637 }
26638 return ret;
26639 }
26640
26641 // Copies a specified amount of characters from the list of buffered data
26642 // chunks.
26643 // This function is designed to be inlinable, so please take care when making
26644 // changes to the function body.
26645 function copyFromBufferString(n, list) {
26646 var p = list.head;
26647 var c = 1;
26648 var ret = p.data;
26649 n -= ret.length;
26650 while (p = p.next) {
26651 var str = p.data;
26652 var nb = n > str.length ? str.length : n;
26653 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26654 n -= nb;
26655 if (n === 0) {
26656 if (nb === str.length) {
26657 ++c;
26658 if (p.next) list.head = p.next;else list.head = list.tail = null;
26659 } else {
26660 list.head = p;
26661 p.data = str.slice(nb);
26662 }
26663 break;
26664 }
26665 ++c;
26666 }
26667 list.length -= c;
26668 return ret;
26669 }
26670
26671 // Copies a specified amount of bytes from the list of buffered data chunks.
26672 // This function is designed to be inlinable, so please take care when making
26673 // changes to the function body.
26674 function copyFromBuffer(n, list) {
26675 var ret = bufferShim.allocUnsafe(n);
26676 var p = list.head;
26677 var c = 1;
26678 p.data.copy(ret);
26679 n -= p.data.length;
26680 while (p = p.next) {
26681 var buf = p.data;
26682 var nb = n > buf.length ? buf.length : n;
26683 buf.copy(ret, ret.length - n, 0, nb);
26684 n -= nb;
26685 if (n === 0) {
26686 if (nb === buf.length) {
26687 ++c;
26688 if (p.next) list.head = p.next;else list.head = list.tail = null;
26689 } else {
26690 list.head = p;
26691 p.data = buf.slice(nb);
26692 }
26693 break;
26694 }
26695 ++c;
26696 }
26697 list.length -= c;
26698 return ret;
26699 }
26700
26701 function endReadable(stream) {
26702 var state = stream._readableState;
26703
26704 // If we get here before consuming all the bytes, then that is a
26705 // bug in node. Should never happen.
26706 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
26707
26708 if (!state.endEmitted) {
26709 state.ended = true;
26710 processNextTick(endReadableNT, state, stream);
26711 }
26712 }
26713
26714 function endReadableNT(state, stream) {
26715 // Check that we didn't get one last unshift.
26716 if (!state.endEmitted && state.length === 0) {
26717 state.endEmitted = true;
26718 stream.readable = false;
26719 stream.emit('end');
26720 }
26721 }
26722
26723 function forEach(xs, f) {
26724 for (var i = 0, l = xs.length; i < l; i++) {
26725 f(xs[i], i);
26726 }
26727 }
26728
26729 function indexOf(xs, x) {
26730 for (var i = 0, l = xs.length; i < l; i++) {
26731 if (xs[i] === x) return i;
26732 }
26733 return -1;
26734 }
26735 }).call(this,require('_process'))
26736 },{"./_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){
26737 // a transform stream is a readable/writable stream where you do
26738 // something with the data. Sometimes it's called a "filter",
26739 // but that's not a great name for it, since that implies a thing where
26740 // some bits pass through, and others are simply ignored. (That would
26741 // be a valid example of a transform, of course.)
26742 //
26743 // While the output is causally related to the input, it's not a
26744 // necessarily symmetric or synchronous transformation. For example,
26745 // a zlib stream might take multiple plain-text writes(), and then
26746 // emit a single compressed chunk some time in the future.
26747 //
26748 // Here's how this works:
26749 //
26750 // The Transform stream has all the aspects of the readable and writable
26751 // stream classes. When you write(chunk), that calls _write(chunk,cb)
26752 // internally, and returns false if there's a lot of pending writes
26753 // buffered up. When you call read(), that calls _read(n) until
26754 // there's enough pending readable data buffered up.
26755 //
26756 // In a transform stream, the written data is placed in a buffer. When
26757 // _read(n) is called, it transforms the queued up data, calling the
26758 // buffered _write cb's as it consumes chunks. If consuming a single
26759 // written chunk would result in multiple output chunks, then the first
26760 // outputted bit calls the readcb, and subsequent chunks just go into
26761 // the read buffer, and will cause it to emit 'readable' if necessary.
26762 //
26763 // This way, back-pressure is actually determined by the reading side,
26764 // since _read has to be called to start processing a new chunk. However,
26765 // a pathological inflate type of transform can cause excessive buffering
26766 // here. For example, imagine a stream where every byte of input is
26767 // interpreted as an integer from 0-255, and then results in that many
26768 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26769 // 1kb of data being output. In this case, you could write a very small
26770 // amount of input, and end up with a very large amount of output. In
26771 // such a pathological inflating mechanism, there'd be no way to tell
26772 // the system to stop doing the transform. A single 4MB write could
26773 // cause the system to run out of memory.
26774 //
26775 // However, even in such a pathological case, only a single written chunk
26776 // would be consumed, and then the rest would wait (un-transformed) until
26777 // the results of the previous transformed chunk were consumed.
26778
26779 'use strict';
26780
26781 module.exports = Transform;
26782
26783 var Duplex = require('./_stream_duplex');
26784
26785 /*<replacement>*/
26786 var util = require('core-util-is');
26787 util.inherits = require('inherits');
26788 /*</replacement>*/
26789
26790 util.inherits(Transform, Duplex);
26791
26792 function TransformState(stream) {
26793 this.afterTransform = function (er, data) {
26794 return afterTransform(stream, er, data);
26795 };
26796
26797 this.needTransform = false;
26798 this.transforming = false;
26799 this.writecb = null;
26800 this.writechunk = null;
26801 this.writeencoding = null;
26802 }
26803
26804 function afterTransform(stream, er, data) {
26805 var ts = stream._transformState;
26806 ts.transforming = false;
26807
26808 var cb = ts.writecb;
26809
26810 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
26811
26812 ts.writechunk = null;
26813 ts.writecb = null;
26814
26815 if (data !== null && data !== undefined) stream.push(data);
26816
26817 cb(er);
26818
26819 var rs = stream._readableState;
26820 rs.reading = false;
26821 if (rs.needReadable || rs.length < rs.highWaterMark) {
26822 stream._read(rs.highWaterMark);
26823 }
26824 }
26825
26826 function Transform(options) {
26827 if (!(this instanceof Transform)) return new Transform(options);
26828
26829 Duplex.call(this, options);
26830
26831 this._transformState = new TransformState(this);
26832
26833 var stream = this;
26834
26835 // start out asking for a readable event once data is transformed.
26836 this._readableState.needReadable = true;
26837
26838 // we have implemented the _read method, and done the other things
26839 // that Readable wants before the first _read call, so unset the
26840 // sync guard flag.
26841 this._readableState.sync = false;
26842
26843 if (options) {
26844 if (typeof options.transform === 'function') this._transform = options.transform;
26845
26846 if (typeof options.flush === 'function') this._flush = options.flush;
26847 }
26848
26849 // When the writable side finishes, then flush out anything remaining.
26850 this.once('prefinish', function () {
26851 if (typeof this._flush === 'function') this._flush(function (er, data) {
26852 done(stream, er, data);
26853 });else done(stream);
26854 });
26855 }
26856
26857 Transform.prototype.push = function (chunk, encoding) {
26858 this._transformState.needTransform = false;
26859 return Duplex.prototype.push.call(this, chunk, encoding);
26860 };
26861
26862 // This is the part where you do stuff!
26863 // override this function in implementation classes.
26864 // 'chunk' is an input chunk.
26865 //
26866 // Call `push(newChunk)` to pass along transformed output
26867 // to the readable side. You may call 'push' zero or more times.
26868 //
26869 // Call `cb(err)` when you are done with this chunk. If you pass
26870 // an error, then that'll put the hurt on the whole operation. If you
26871 // never call cb(), then you'll never get another chunk.
26872 Transform.prototype._transform = function (chunk, encoding, cb) {
26873 throw new Error('_transform() is not implemented');
26874 };
26875
26876 Transform.prototype._write = function (chunk, encoding, cb) {
26877 var ts = this._transformState;
26878 ts.writecb = cb;
26879 ts.writechunk = chunk;
26880 ts.writeencoding = encoding;
26881 if (!ts.transforming) {
26882 var rs = this._readableState;
26883 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26884 }
26885 };
26886
26887 // Doesn't matter what the args are here.
26888 // _transform does all the work.
26889 // That we got here means that the readable side wants more data.
26890 Transform.prototype._read = function (n) {
26891 var ts = this._transformState;
26892
26893 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26894 ts.transforming = true;
26895 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26896 } else {
26897 // mark that we need a transform, so that any data that comes in
26898 // will get processed, now that we've asked for it.
26899 ts.needTransform = true;
26900 }
26901 };
26902
26903 function done(stream, er, data) {
26904 if (er) return stream.emit('error', er);
26905
26906 if (data !== null && data !== undefined) stream.push(data);
26907
26908 // if there's nothing in the write buffer, then that means
26909 // that nothing more will ever be provided
26910 var ws = stream._writableState;
26911 var ts = stream._transformState;
26912
26913 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
26914
26915 if (ts.transforming) throw new Error('Calling transform done when still transforming');
26916
26917 return stream.push(null);
26918 }
26919 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
26920 (function (process){
26921 // A bit simpler than readable streams.
26922 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
26923 // the drain event emission and buffering.
26924
26925 'use strict';
26926
26927 module.exports = Writable;
26928
26929 /*<replacement>*/
26930 var processNextTick = require('process-nextick-args');
26931 /*</replacement>*/
26932
26933 /*<replacement>*/
26934 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
26935 /*</replacement>*/
26936
26937 /*<replacement>*/
26938 var Duplex;
26939 /*</replacement>*/
26940
26941 Writable.WritableState = WritableState;
26942
26943 /*<replacement>*/
26944 var util = require('core-util-is');
26945 util.inherits = require('inherits');
26946 /*</replacement>*/
26947
26948 /*<replacement>*/
26949 var internalUtil = {
26950 deprecate: require('util-deprecate')
26951 };
26952 /*</replacement>*/
26953
26954 /*<replacement>*/
26955 var Stream;
26956 (function () {
26957 try {
26958 Stream = require('st' + 'ream');
26959 } catch (_) {} finally {
26960 if (!Stream) Stream = require('events').EventEmitter;
26961 }
26962 })();
26963 /*</replacement>*/
26964
26965 var Buffer = require('buffer').Buffer;
26966 /*<replacement>*/
26967 var bufferShim = require('buffer-shims');
26968 /*</replacement>*/
26969
26970 util.inherits(Writable, Stream);
26971
26972 function nop() {}
26973
26974 function WriteReq(chunk, encoding, cb) {
26975 this.chunk = chunk;
26976 this.encoding = encoding;
26977 this.callback = cb;
26978 this.next = null;
26979 }
26980
26981 function WritableState(options, stream) {
26982 Duplex = Duplex || require('./_stream_duplex');
26983
26984 options = options || {};
26985
26986 // object stream flag to indicate whether or not this stream
26987 // contains buffers or objects.
26988 this.objectMode = !!options.objectMode;
26989
26990 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26991
26992 // the point at which write() starts returning false
26993 // Note: 0 is a valid value, means that we always return false if
26994 // the entire buffer is not flushed immediately on write()
26995 var hwm = options.highWaterMark;
26996 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26997 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
26998
26999 // cast to ints.
27000 this.highWaterMark = ~ ~this.highWaterMark;
27001
27002 // drain event flag.
27003 this.needDrain = false;
27004 // at the start of calling end()
27005 this.ending = false;
27006 // when end() has been called, and returned
27007 this.ended = false;
27008 // when 'finish' is emitted
27009 this.finished = false;
27010
27011 // should we decode strings into buffers before passing to _write?
27012 // this is here so that some node-core streams can optimize string
27013 // handling at a lower level.
27014 var noDecode = options.decodeStrings === false;
27015 this.decodeStrings = !noDecode;
27016
27017 // Crypto is kind of old and crusty. Historically, its default string
27018 // encoding is 'binary' so we have to make this configurable.
27019 // Everything else in the universe uses 'utf8', though.
27020 this.defaultEncoding = options.defaultEncoding || 'utf8';
27021
27022 // not an actual buffer we keep track of, but a measurement
27023 // of how much we're waiting to get pushed to some underlying
27024 // socket or file.
27025 this.length = 0;
27026
27027 // a flag to see when we're in the middle of a write.
27028 this.writing = false;
27029
27030 // when true all writes will be buffered until .uncork() call
27031 this.corked = 0;
27032
27033 // a flag to be able to tell if the onwrite cb is called immediately,
27034 // or on a later tick. We set this to true at first, because any
27035 // actions that shouldn't happen until "later" should generally also
27036 // not happen before the first write call.
27037 this.sync = true;
27038
27039 // a flag to know if we're processing previously buffered items, which
27040 // may call the _write() callback in the same tick, so that we don't
27041 // end up in an overlapped onwrite situation.
27042 this.bufferProcessing = false;
27043
27044 // the callback that's passed to _write(chunk,cb)
27045 this.onwrite = function (er) {
27046 onwrite(stream, er);
27047 };
27048
27049 // the callback that the user supplies to write(chunk,encoding,cb)
27050 this.writecb = null;
27051
27052 // the amount that is being written when _write is called.
27053 this.writelen = 0;
27054
27055 this.bufferedRequest = null;
27056 this.lastBufferedRequest = null;
27057
27058 // number of pending user-supplied write callbacks
27059 // this must be 0 before 'finish' can be emitted
27060 this.pendingcb = 0;
27061
27062 // emit prefinish if the only thing we're waiting for is _write cbs
27063 // This is relevant for synchronous Transform streams
27064 this.prefinished = false;
27065
27066 // True if the error was already emitted and should not be thrown again
27067 this.errorEmitted = false;
27068
27069 // count buffered requests
27070 this.bufferedRequestCount = 0;
27071
27072 // allocate the first CorkedRequest, there is always
27073 // one allocated and free to use, and we maintain at most two
27074 this.corkedRequestsFree = new CorkedRequest(this);
27075 }
27076
27077 WritableState.prototype.getBuffer = function getBuffer() {
27078 var current = this.bufferedRequest;
27079 var out = [];
27080 while (current) {
27081 out.push(current);
27082 current = current.next;
27083 }
27084 return out;
27085 };
27086
27087 (function () {
27088 try {
27089 Object.defineProperty(WritableState.prototype, 'buffer', {
27090 get: internalUtil.deprecate(function () {
27091 return this.getBuffer();
27092 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
27093 });
27094 } catch (_) {}
27095 })();
27096
27097 // Test _writableState for inheritance to account for Duplex streams,
27098 // whose prototype chain only points to Readable.
27099 var realHasInstance;
27100 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
27101 realHasInstance = Function.prototype[Symbol.hasInstance];
27102 Object.defineProperty(Writable, Symbol.hasInstance, {
27103 value: function (object) {
27104 if (realHasInstance.call(this, object)) return true;
27105
27106 return object && object._writableState instanceof WritableState;
27107 }
27108 });
27109 } else {
27110 realHasInstance = function (object) {
27111 return object instanceof this;
27112 };
27113 }
27114
27115 function Writable(options) {
27116 Duplex = Duplex || require('./_stream_duplex');
27117
27118 // Writable ctor is applied to Duplexes, too.
27119 // `realHasInstance` is necessary because using plain `instanceof`
27120 // would return false, as no `_writableState` property is attached.
27121
27122 // Trying to use the custom `instanceof` for Writable here will also break the
27123 // Node.js LazyTransform implementation, which has a non-trivial getter for
27124 // `_writableState` that would lead to infinite recursion.
27125 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
27126 return new Writable(options);
27127 }
27128
27129 this._writableState = new WritableState(options, this);
27130
27131 // legacy.
27132 this.writable = true;
27133
27134 if (options) {
27135 if (typeof options.write === 'function') this._write = options.write;
27136
27137 if (typeof options.writev === 'function') this._writev = options.writev;
27138 }
27139
27140 Stream.call(this);
27141 }
27142
27143 // Otherwise people can pipe Writable streams, which is just wrong.
27144 Writable.prototype.pipe = function () {
27145 this.emit('error', new Error('Cannot pipe, not readable'));
27146 };
27147
27148 function writeAfterEnd(stream, cb) {
27149 var er = new Error('write after end');
27150 // TODO: defer error events consistently everywhere, not just the cb
27151 stream.emit('error', er);
27152 processNextTick(cb, er);
27153 }
27154
27155 // If we get something that is not a buffer, string, null, or undefined,
27156 // and we're not in objectMode, then that's an error.
27157 // Otherwise stream chunks are all considered to be of length=1, and the
27158 // watermarks determine how many objects to keep in the buffer, rather than
27159 // how many bytes or characters.
27160 function validChunk(stream, state, chunk, cb) {
27161 var valid = true;
27162 var er = false;
27163 // Always throw error if a null is written
27164 // if we are not in object mode then throw
27165 // if it is not a buffer, string, or undefined.
27166 if (chunk === null) {
27167 er = new TypeError('May not write null values to stream');
27168 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27169 er = new TypeError('Invalid non-string/buffer chunk');
27170 }
27171 if (er) {
27172 stream.emit('error', er);
27173 processNextTick(cb, er);
27174 valid = false;
27175 }
27176 return valid;
27177 }
27178
27179 Writable.prototype.write = function (chunk, encoding, cb) {
27180 var state = this._writableState;
27181 var ret = false;
27182
27183 if (typeof encoding === 'function') {
27184 cb = encoding;
27185 encoding = null;
27186 }
27187
27188 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
27189
27190 if (typeof cb !== 'function') cb = nop;
27191
27192 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27193 state.pendingcb++;
27194 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27195 }
27196
27197 return ret;
27198 };
27199
27200 Writable.prototype.cork = function () {
27201 var state = this._writableState;
27202
27203 state.corked++;
27204 };
27205
27206 Writable.prototype.uncork = function () {
27207 var state = this._writableState;
27208
27209 if (state.corked) {
27210 state.corked--;
27211
27212 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27213 }
27214 };
27215
27216 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27217 // node::ParseEncoding() requires lower case.
27218 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27219 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);
27220 this._writableState.defaultEncoding = encoding;
27221 return this;
27222 };
27223
27224 function decodeChunk(state, chunk, encoding) {
27225 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27226 chunk = bufferShim.from(chunk, encoding);
27227 }
27228 return chunk;
27229 }
27230
27231 // if we're already writing something, then just put this
27232 // in the queue, and wait our turn. Otherwise, call _write
27233 // If we return false, then we need a drain event, so set that flag.
27234 function writeOrBuffer(stream, state, chunk, encoding, cb) {
27235 chunk = decodeChunk(state, chunk, encoding);
27236
27237 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27238 var len = state.objectMode ? 1 : chunk.length;
27239
27240 state.length += len;
27241
27242 var ret = state.length < state.highWaterMark;
27243 // we must ensure that previous needDrain will not be reset to false.
27244 if (!ret) state.needDrain = true;
27245
27246 if (state.writing || state.corked) {
27247 var last = state.lastBufferedRequest;
27248 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27249 if (last) {
27250 last.next = state.lastBufferedRequest;
27251 } else {
27252 state.bufferedRequest = state.lastBufferedRequest;
27253 }
27254 state.bufferedRequestCount += 1;
27255 } else {
27256 doWrite(stream, state, false, len, chunk, encoding, cb);
27257 }
27258
27259 return ret;
27260 }
27261
27262 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27263 state.writelen = len;
27264 state.writecb = cb;
27265 state.writing = true;
27266 state.sync = true;
27267 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27268 state.sync = false;
27269 }
27270
27271 function onwriteError(stream, state, sync, er, cb) {
27272 --state.pendingcb;
27273 if (sync) processNextTick(cb, er);else cb(er);
27274
27275 stream._writableState.errorEmitted = true;
27276 stream.emit('error', er);
27277 }
27278
27279 function onwriteStateUpdate(state) {
27280 state.writing = false;
27281 state.writecb = null;
27282 state.length -= state.writelen;
27283 state.writelen = 0;
27284 }
27285
27286 function onwrite(stream, er) {
27287 var state = stream._writableState;
27288 var sync = state.sync;
27289 var cb = state.writecb;
27290
27291 onwriteStateUpdate(state);
27292
27293 if (er) onwriteError(stream, state, sync, er, cb);else {
27294 // Check if we're actually ready to finish, but don't emit yet
27295 var finished = needFinish(state);
27296
27297 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27298 clearBuffer(stream, state);
27299 }
27300
27301 if (sync) {
27302 /*<replacement>*/
27303 asyncWrite(afterWrite, stream, state, finished, cb);
27304 /*</replacement>*/
27305 } else {
27306 afterWrite(stream, state, finished, cb);
27307 }
27308 }
27309 }
27310
27311 function afterWrite(stream, state, finished, cb) {
27312 if (!finished) onwriteDrain(stream, state);
27313 state.pendingcb--;
27314 cb();
27315 finishMaybe(stream, state);
27316 }
27317
27318 // Must force callback to be called on nextTick, so that we don't
27319 // emit 'drain' before the write() consumer gets the 'false' return
27320 // value, and has a chance to attach a 'drain' listener.
27321 function onwriteDrain(stream, state) {
27322 if (state.length === 0 && state.needDrain) {
27323 state.needDrain = false;
27324 stream.emit('drain');
27325 }
27326 }
27327
27328 // if there's something in the buffer waiting, then process it
27329 function clearBuffer(stream, state) {
27330 state.bufferProcessing = true;
27331 var entry = state.bufferedRequest;
27332
27333 if (stream._writev && entry && entry.next) {
27334 // Fast case, write everything using _writev()
27335 var l = state.bufferedRequestCount;
27336 var buffer = new Array(l);
27337 var holder = state.corkedRequestsFree;
27338 holder.entry = entry;
27339
27340 var count = 0;
27341 while (entry) {
27342 buffer[count] = entry;
27343 entry = entry.next;
27344 count += 1;
27345 }
27346
27347 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
27348
27349 // doWrite is almost always async, defer these to save a bit of time
27350 // as the hot path ends with doWrite
27351 state.pendingcb++;
27352 state.lastBufferedRequest = null;
27353 if (holder.next) {
27354 state.corkedRequestsFree = holder.next;
27355 holder.next = null;
27356 } else {
27357 state.corkedRequestsFree = new CorkedRequest(state);
27358 }
27359 } else {
27360 // Slow case, write chunks one-by-one
27361 while (entry) {
27362 var chunk = entry.chunk;
27363 var encoding = entry.encoding;
27364 var cb = entry.callback;
27365 var len = state.objectMode ? 1 : chunk.length;
27366
27367 doWrite(stream, state, false, len, chunk, encoding, cb);
27368 entry = entry.next;
27369 // if we didn't call the onwrite immediately, then
27370 // it means that we need to wait until it does.
27371 // also, that means that the chunk and cb are currently
27372 // being processed, so move the buffer counter past them.
27373 if (state.writing) {
27374 break;
27375 }
27376 }
27377
27378 if (entry === null) state.lastBufferedRequest = null;
27379 }
27380
27381 state.bufferedRequestCount = 0;
27382 state.bufferedRequest = entry;
27383 state.bufferProcessing = false;
27384 }
27385
27386 Writable.prototype._write = function (chunk, encoding, cb) {
27387 cb(new Error('_write() is not implemented'));
27388 };
27389
27390 Writable.prototype._writev = null;
27391
27392 Writable.prototype.end = function (chunk, encoding, cb) {
27393 var state = this._writableState;
27394
27395 if (typeof chunk === 'function') {
27396 cb = chunk;
27397 chunk = null;
27398 encoding = null;
27399 } else if (typeof encoding === 'function') {
27400 cb = encoding;
27401 encoding = null;
27402 }
27403
27404 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
27405
27406 // .end() fully uncorks
27407 if (state.corked) {
27408 state.corked = 1;
27409 this.uncork();
27410 }
27411
27412 // ignore unnecessary end() calls.
27413 if (!state.ending && !state.finished) endWritable(this, state, cb);
27414 };
27415
27416 function needFinish(state) {
27417 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27418 }
27419
27420 function prefinish(stream, state) {
27421 if (!state.prefinished) {
27422 state.prefinished = true;
27423 stream.emit('prefinish');
27424 }
27425 }
27426
27427 function finishMaybe(stream, state) {
27428 var need = needFinish(state);
27429 if (need) {
27430 if (state.pendingcb === 0) {
27431 prefinish(stream, state);
27432 state.finished = true;
27433 stream.emit('finish');
27434 } else {
27435 prefinish(stream, state);
27436 }
27437 }
27438 return need;
27439 }
27440
27441 function endWritable(stream, state, cb) {
27442 state.ending = true;
27443 finishMaybe(stream, state);
27444 if (cb) {
27445 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
27446 }
27447 state.ended = true;
27448 stream.writable = false;
27449 }
27450
27451 // It seems a linked list but it is not
27452 // there will be only 2 of these for each stream
27453 function CorkedRequest(state) {
27454 var _this = this;
27455
27456 this.next = null;
27457 this.entry = null;
27458
27459 this.finish = function (err) {
27460 var entry = _this.entry;
27461 _this.entry = null;
27462 while (entry) {
27463 var cb = entry.callback;
27464 state.pendingcb--;
27465 cb(err);
27466 entry = entry.next;
27467 }
27468 if (state.corkedRequestsFree) {
27469 state.corkedRequestsFree.next = _this;
27470 } else {
27471 state.corkedRequestsFree = _this;
27472 }
27473 };
27474 }
27475 }).call(this,require('_process'))
27476 },{"./_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){
27477 'use strict';
27478
27479 var Buffer = require('buffer').Buffer;
27480 /*<replacement>*/
27481 var bufferShim = require('buffer-shims');
27482 /*</replacement>*/
27483
27484 module.exports = BufferList;
27485
27486 function BufferList() {
27487 this.head = null;
27488 this.tail = null;
27489 this.length = 0;
27490 }
27491
27492 BufferList.prototype.push = function (v) {
27493 var entry = { data: v, next: null };
27494 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27495 this.tail = entry;
27496 ++this.length;
27497 };
27498
27499 BufferList.prototype.unshift = function (v) {
27500 var entry = { data: v, next: this.head };
27501 if (this.length === 0) this.tail = entry;
27502 this.head = entry;
27503 ++this.length;
27504 };
27505
27506 BufferList.prototype.shift = function () {
27507 if (this.length === 0) return;
27508 var ret = this.head.data;
27509 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27510 --this.length;
27511 return ret;
27512 };
27513
27514 BufferList.prototype.clear = function () {
27515 this.head = this.tail = null;
27516 this.length = 0;
27517 };
27518
27519 BufferList.prototype.join = function (s) {
27520 if (this.length === 0) return '';
27521 var p = this.head;
27522 var ret = '' + p.data;
27523 while (p = p.next) {
27524 ret += s + p.data;
27525 }return ret;
27526 };
27527
27528 BufferList.prototype.concat = function (n) {
27529 if (this.length === 0) return bufferShim.alloc(0);
27530 if (this.length === 1) return this.head.data;
27531 var ret = bufferShim.allocUnsafe(n >>> 0);
27532 var p = this.head;
27533 var i = 0;
27534 while (p) {
27535 p.data.copy(ret, i);
27536 i += p.data.length;
27537 p = p.next;
27538 }
27539 return ret;
27540 };
27541 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27542 module.exports = require("./lib/_stream_passthrough.js")
27543
27544 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27545 (function (process){
27546 var Stream = (function (){
27547 try {
27548 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27549 } catch(_){}
27550 }());
27551 exports = module.exports = require('./lib/_stream_readable.js');
27552 exports.Stream = Stream || exports;
27553 exports.Readable = exports;
27554 exports.Writable = require('./lib/_stream_writable.js');
27555 exports.Duplex = require('./lib/_stream_duplex.js');
27556 exports.Transform = require('./lib/_stream_transform.js');
27557 exports.PassThrough = require('./lib/_stream_passthrough.js');
27558
27559 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27560 module.exports = Stream;
27561 }
27562
27563 }).call(this,require('_process'))
27564 },{"./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){
27565 module.exports = require("./lib/_stream_transform.js")
27566
27567 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27568 module.exports = require("./lib/_stream_writable.js")
27569
27570 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27571 // Copyright Joyent, Inc. and other Node contributors.
27572 //
27573 // Permission is hereby granted, free of charge, to any person obtaining a
27574 // copy of this software and associated documentation files (the
27575 // "Software"), to deal in the Software without restriction, including
27576 // without limitation the rights to use, copy, modify, merge, publish,
27577 // distribute, sublicense, and/or sell copies of the Software, and to permit
27578 // persons to whom the Software is furnished to do so, subject to the
27579 // following conditions:
27580 //
27581 // The above copyright notice and this permission notice shall be included
27582 // in all copies or substantial portions of the Software.
27583 //
27584 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27585 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27586 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27587 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27588 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27589 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27590 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27591
27592 module.exports = Stream;
27593
27594 var EE = require('events').EventEmitter;
27595 var inherits = require('inherits');
27596
27597 inherits(Stream, EE);
27598 Stream.Readable = require('readable-stream/readable.js');
27599 Stream.Writable = require('readable-stream/writable.js');
27600 Stream.Duplex = require('readable-stream/duplex.js');
27601 Stream.Transform = require('readable-stream/transform.js');
27602 Stream.PassThrough = require('readable-stream/passthrough.js');
27603
27604 // Backwards-compat with node 0.4.x
27605 Stream.Stream = Stream;
27606
27607
27608
27609 // old-style streams. Note that the pipe method (the only relevant
27610 // part of this class) is overridden in the Readable class.
27611
27612 function Stream() {
27613 EE.call(this);
27614 }
27615
27616 Stream.prototype.pipe = function(dest, options) {
27617 var source = this;
27618
27619 function ondata(chunk) {
27620 if (dest.writable) {
27621 if (false === dest.write(chunk) && source.pause) {
27622 source.pause();
27623 }
27624 }
27625 }
27626
27627 source.on('data', ondata);
27628
27629 function ondrain() {
27630 if (source.readable && source.resume) {
27631 source.resume();
27632 }
27633 }
27634
27635 dest.on('drain', ondrain);
27636
27637 // If the 'end' option is not supplied, dest.end() will be called when
27638 // source gets the 'end' or 'close' events. Only dest.end() once.
27639 if (!dest._isStdio && (!options || options.end !== false)) {
27640 source.on('end', onend);
27641 source.on('close', onclose);
27642 }
27643
27644 var didOnEnd = false;
27645 function onend() {
27646 if (didOnEnd) return;
27647 didOnEnd = true;
27648
27649 dest.end();
27650 }
27651
27652
27653 function onclose() {
27654 if (didOnEnd) return;
27655 didOnEnd = true;
27656
27657 if (typeof dest.destroy === 'function') dest.destroy();
27658 }
27659
27660 // don't leave dangling pipes when there are errors.
27661 function onerror(er) {
27662 cleanup();
27663 if (EE.listenerCount(this, 'error') === 0) {
27664 throw er; // Unhandled stream error in pipe.
27665 }
27666 }
27667
27668 source.on('error', onerror);
27669 dest.on('error', onerror);
27670
27671 // remove all the event listeners that were added.
27672 function cleanup() {
27673 source.removeListener('data', ondata);
27674 dest.removeListener('drain', ondrain);
27675
27676 source.removeListener('end', onend);
27677 source.removeListener('close', onclose);
27678
27679 source.removeListener('error', onerror);
27680 dest.removeListener('error', onerror);
27681
27682 source.removeListener('end', cleanup);
27683 source.removeListener('close', cleanup);
27684
27685 dest.removeListener('close', cleanup);
27686 }
27687
27688 source.on('end', cleanup);
27689 source.on('close', cleanup);
27690
27691 dest.on('close', cleanup);
27692
27693 dest.emit('pipe', source);
27694
27695 // Allow for unix-like usage: A.pipe(B).pipe(C)
27696 return dest;
27697 };
27698
27699 },{"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){
27700 // Copyright Joyent, Inc. and other Node contributors.
27701 //
27702 // Permission is hereby granted, free of charge, to any person obtaining a
27703 // copy of this software and associated documentation files (the
27704 // "Software"), to deal in the Software without restriction, including
27705 // without limitation the rights to use, copy, modify, merge, publish,
27706 // distribute, sublicense, and/or sell copies of the Software, and to permit
27707 // persons to whom the Software is furnished to do so, subject to the
27708 // following conditions:
27709 //
27710 // The above copyright notice and this permission notice shall be included
27711 // in all copies or substantial portions of the Software.
27712 //
27713 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27714 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27715 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27716 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27717 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27718 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27719 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27720
27721 var Buffer = require('buffer').Buffer;
27722
27723 var isBufferEncoding = Buffer.isEncoding
27724 || function(encoding) {
27725 switch (encoding && encoding.toLowerCase()) {
27726 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;
27727 default: return false;
27728 }
27729 }
27730
27731
27732 function assertEncoding(encoding) {
27733 if (encoding && !isBufferEncoding(encoding)) {
27734 throw new Error('Unknown encoding: ' + encoding);
27735 }
27736 }
27737
27738 // StringDecoder provides an interface for efficiently splitting a series of
27739 // buffers into a series of JS strings without breaking apart multi-byte
27740 // characters. CESU-8 is handled as part of the UTF-8 encoding.
27741 //
27742 // @TODO Handling all encodings inside a single object makes it very difficult
27743 // to reason about this code, so it should be split up in the future.
27744 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27745 // points as used by CESU-8.
27746 var StringDecoder = exports.StringDecoder = function(encoding) {
27747 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27748 assertEncoding(encoding);
27749 switch (this.encoding) {
27750 case 'utf8':
27751 // CESU-8 represents each of Surrogate Pair by 3-bytes
27752 this.surrogateSize = 3;
27753 break;
27754 case 'ucs2':
27755 case 'utf16le':
27756 // UTF-16 represents each of Surrogate Pair by 2-bytes
27757 this.surrogateSize = 2;
27758 this.detectIncompleteChar = utf16DetectIncompleteChar;
27759 break;
27760 case 'base64':
27761 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27762 this.surrogateSize = 3;
27763 this.detectIncompleteChar = base64DetectIncompleteChar;
27764 break;
27765 default:
27766 this.write = passThroughWrite;
27767 return;
27768 }
27769
27770 // Enough space to store all bytes of a single character. UTF-8 needs 4
27771 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27772 this.charBuffer = new Buffer(6);
27773 // Number of bytes received for the current incomplete multi-byte character.
27774 this.charReceived = 0;
27775 // Number of bytes expected for the current incomplete multi-byte character.
27776 this.charLength = 0;
27777 };
27778
27779
27780 // write decodes the given buffer and returns it as JS string that is
27781 // guaranteed to not contain any partial multi-byte characters. Any partial
27782 // character found at the end of the buffer is buffered up, and will be
27783 // returned when calling write again with the remaining bytes.
27784 //
27785 // Note: Converting a Buffer containing an orphan surrogate to a String
27786 // currently works, but converting a String to a Buffer (via `new Buffer`, or
27787 // Buffer#write) will replace incomplete surrogates with the unicode
27788 // replacement character. See https://codereview.chromium.org/121173009/ .
27789 StringDecoder.prototype.write = function(buffer) {
27790 var charStr = '';
27791 // if our last write ended with an incomplete multibyte character
27792 while (this.charLength) {
27793 // determine how many remaining bytes this buffer has to offer for this char
27794 var available = (buffer.length >= this.charLength - this.charReceived) ?
27795 this.charLength - this.charReceived :
27796 buffer.length;
27797
27798 // add the new bytes to the char buffer
27799 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27800 this.charReceived += available;
27801
27802 if (this.charReceived < this.charLength) {
27803 // still not enough chars in this buffer? wait for more ...
27804 return '';
27805 }
27806
27807 // remove bytes belonging to the current character from the buffer
27808 buffer = buffer.slice(available, buffer.length);
27809
27810 // get the character that was split
27811 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27812
27813 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27814 var charCode = charStr.charCodeAt(charStr.length - 1);
27815 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27816 this.charLength += this.surrogateSize;
27817 charStr = '';
27818 continue;
27819 }
27820 this.charReceived = this.charLength = 0;
27821
27822 // if there are no more bytes in this buffer, just emit our char
27823 if (buffer.length === 0) {
27824 return charStr;
27825 }
27826 break;
27827 }
27828
27829 // determine and set charLength / charReceived
27830 this.detectIncompleteChar(buffer);
27831
27832 var end = buffer.length;
27833 if (this.charLength) {
27834 // buffer the incomplete character bytes we got
27835 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27836 end -= this.charReceived;
27837 }
27838
27839 charStr += buffer.toString(this.encoding, 0, end);
27840
27841 var end = charStr.length - 1;
27842 var charCode = charStr.charCodeAt(end);
27843 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27844 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27845 var size = this.surrogateSize;
27846 this.charLength += size;
27847 this.charReceived += size;
27848 this.charBuffer.copy(this.charBuffer, size, 0, size);
27849 buffer.copy(this.charBuffer, 0, 0, size);
27850 return charStr.substring(0, end);
27851 }
27852
27853 // or just emit the charStr
27854 return charStr;
27855 };
27856
27857 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
27858 // the end of the given buffer. If so, it sets this.charLength to the byte
27859 // length that character, and sets this.charReceived to the number of bytes
27860 // that are available for this character.
27861 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27862 // determine how many bytes we have to check at the end of this buffer
27863 var i = (buffer.length >= 3) ? 3 : buffer.length;
27864
27865 // Figure out if one of the last i bytes of our buffer announces an
27866 // incomplete char.
27867 for (; i > 0; i--) {
27868 var c = buffer[buffer.length - i];
27869
27870 // See http://en.wikipedia.org/wiki/UTF-8#Description
27871
27872 // 110XXXXX
27873 if (i == 1 && c >> 5 == 0x06) {
27874 this.charLength = 2;
27875 break;
27876 }
27877
27878 // 1110XXXX
27879 if (i <= 2 && c >> 4 == 0x0E) {
27880 this.charLength = 3;
27881 break;
27882 }
27883
27884 // 11110XXX
27885 if (i <= 3 && c >> 3 == 0x1E) {
27886 this.charLength = 4;
27887 break;
27888 }
27889 }
27890 this.charReceived = i;
27891 };
27892
27893 StringDecoder.prototype.end = function(buffer) {
27894 var res = '';
27895 if (buffer && buffer.length)
27896 res = this.write(buffer);
27897
27898 if (this.charReceived) {
27899 var cr = this.charReceived;
27900 var buf = this.charBuffer;
27901 var enc = this.encoding;
27902 res += buf.slice(0, cr).toString(enc);
27903 }
27904
27905 return res;
27906 };
27907
27908 function passThroughWrite(buffer) {
27909 return buffer.toString(this.encoding);
27910 }
27911
27912 function utf16DetectIncompleteChar(buffer) {
27913 this.charReceived = buffer.length % 2;
27914 this.charLength = this.charReceived ? 2 : 0;
27915 }
27916
27917 function base64DetectIncompleteChar(buffer) {
27918 this.charReceived = buffer.length % 3;
27919 this.charLength = this.charReceived ? 3 : 0;
27920 }
27921
27922 },{"buffer":5}],27:[function(require,module,exports){
27923 (function (global){
27924
27925 /**
27926 * Module exports.
27927 */
27928
27929 module.exports = deprecate;
27930
27931 /**
27932 * Mark that a method should not be used.
27933 * Returns a modified function which warns once by default.
27934 *
27935 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27936 *
27937 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27938 * will throw an Error when invoked.
27939 *
27940 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27941 * will invoke `console.trace()` instead of `console.error()`.
27942 *
27943 * @param {Function} fn - the function to deprecate
27944 * @param {String} msg - the string to print to the console when `fn` is invoked
27945 * @returns {Function} a new "deprecated" version of `fn`
27946 * @api public
27947 */
27948
27949 function deprecate (fn, msg) {
27950 if (config('noDeprecation')) {
27951 return fn;
27952 }
27953
27954 var warned = false;
27955 function deprecated() {
27956 if (!warned) {
27957 if (config('throwDeprecation')) {
27958 throw new Error(msg);
27959 } else if (config('traceDeprecation')) {
27960 console.trace(msg);
27961 } else {
27962 console.warn(msg);
27963 }
27964 warned = true;
27965 }
27966 return fn.apply(this, arguments);
27967 }
27968
27969 return deprecated;
27970 }
27971
27972 /**
27973 * Checks `localStorage` for boolean values for the given `name`.
27974 *
27975 * @param {String} name
27976 * @returns {Boolean}
27977 * @api private
27978 */
27979
27980 function config (name) {
27981 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27982 try {
27983 if (!global.localStorage) return false;
27984 } catch (_) {
27985 return false;
27986 }
27987 var val = global.localStorage[name];
27988 if (null == val) return false;
27989 return String(val).toLowerCase() === 'true';
27990 }
27991
27992 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27993 },{}],28:[function(require,module,exports){
27994 arguments[4][9][0].apply(exports,arguments)
27995 },{"dup":9}],29:[function(require,module,exports){
27996 module.exports = function isBuffer(arg) {
27997 return arg && typeof arg === 'object'
27998 && typeof arg.copy === 'function'
27999 && typeof arg.fill === 'function'
28000 && typeof arg.readUInt8 === 'function';
28001 }
28002 },{}],30:[function(require,module,exports){
28003 (function (process,global){
28004 // Copyright Joyent, Inc. and other Node contributors.
28005 //
28006 // Permission is hereby granted, free of charge, to any person obtaining a
28007 // copy of this software and associated documentation files (the
28008 // "Software"), to deal in the Software without restriction, including
28009 // without limitation the rights to use, copy, modify, merge, publish,
28010 // distribute, sublicense, and/or sell copies of the Software, and to permit
28011 // persons to whom the Software is furnished to do so, subject to the
28012 // following conditions:
28013 //
28014 // The above copyright notice and this permission notice shall be included
28015 // in all copies or substantial portions of the Software.
28016 //
28017 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
28018 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28019 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
28020 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
28021 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
28022 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
28023 // USE OR OTHER DEALINGS IN THE SOFTWARE.
28024
28025 var formatRegExp = /%[sdj%]/g;
28026 exports.format = function(f) {
28027 if (!isString(f)) {
28028 var objects = [];
28029 for (var i = 0; i < arguments.length; i++) {
28030 objects.push(inspect(arguments[i]));
28031 }
28032 return objects.join(' ');
28033 }
28034
28035 var i = 1;
28036 var args = arguments;
28037 var len = args.length;
28038 var str = String(f).replace(formatRegExp, function(x) {
28039 if (x === '%%') return '%';
28040 if (i >= len) return x;
28041 switch (x) {
28042 case '%s': return String(args[i++]);
28043 case '%d': return Number(args[i++]);
28044 case '%j':
28045 try {
28046 return JSON.stringify(args[i++]);
28047 } catch (_) {
28048 return '[Circular]';
28049 }
28050 default:
28051 return x;
28052 }
28053 });
28054 for (var x = args[i]; i < len; x = args[++i]) {
28055 if (isNull(x) || !isObject(x)) {
28056 str += ' ' + x;
28057 } else {
28058 str += ' ' + inspect(x);
28059 }
28060 }
28061 return str;
28062 };
28063
28064
28065 // Mark that a method should not be used.
28066 // Returns a modified function which warns once by default.
28067 // If --no-deprecation is set, then it is a no-op.
28068 exports.deprecate = function(fn, msg) {
28069 // Allow for deprecating things in the process of starting up.
28070 if (isUndefined(global.process)) {
28071 return function() {
28072 return exports.deprecate(fn, msg).apply(this, arguments);
28073 };
28074 }
28075
28076 if (process.noDeprecation === true) {
28077 return fn;
28078 }
28079
28080 var warned = false;
28081 function deprecated() {
28082 if (!warned) {
28083 if (process.throwDeprecation) {
28084 throw new Error(msg);
28085 } else if (process.traceDeprecation) {
28086 console.trace(msg);
28087 } else {
28088 console.error(msg);
28089 }
28090 warned = true;
28091 }
28092 return fn.apply(this, arguments);
28093 }
28094
28095 return deprecated;
28096 };
28097
28098
28099 var debugs = {};
28100 var debugEnviron;
28101 exports.debuglog = function(set) {
28102 if (isUndefined(debugEnviron))
28103 debugEnviron = process.env.NODE_DEBUG || '';
28104 set = set.toUpperCase();
28105 if (!debugs[set]) {
28106 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
28107 var pid = process.pid;
28108 debugs[set] = function() {
28109 var msg = exports.format.apply(exports, arguments);
28110 console.error('%s %d: %s', set, pid, msg);
28111 };
28112 } else {
28113 debugs[set] = function() {};
28114 }
28115 }
28116 return debugs[set];
28117 };
28118
28119
28120 /**
28121 * Echos the value of a value. Trys to print the value out
28122 * in the best way possible given the different types.
28123 *
28124 * @param {Object} obj The object to print out.
28125 * @param {Object} opts Optional options object that alters the output.
28126 */
28127 /* legacy: obj, showHidden, depth, colors*/
28128 function inspect(obj, opts) {
28129 // default options
28130 var ctx = {
28131 seen: [],
28132 stylize: stylizeNoColor
28133 };
28134 // legacy...
28135 if (arguments.length >= 3) ctx.depth = arguments[2];
28136 if (arguments.length >= 4) ctx.colors = arguments[3];
28137 if (isBoolean(opts)) {
28138 // legacy...
28139 ctx.showHidden = opts;
28140 } else if (opts) {
28141 // got an "options" object
28142 exports._extend(ctx, opts);
28143 }
28144 // set default options
28145 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28146 if (isUndefined(ctx.depth)) ctx.depth = 2;
28147 if (isUndefined(ctx.colors)) ctx.colors = false;
28148 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28149 if (ctx.colors) ctx.stylize = stylizeWithColor;
28150 return formatValue(ctx, obj, ctx.depth);
28151 }
28152 exports.inspect = inspect;
28153
28154
28155 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28156 inspect.colors = {
28157 'bold' : [1, 22],
28158 'italic' : [3, 23],
28159 'underline' : [4, 24],
28160 'inverse' : [7, 27],
28161 'white' : [37, 39],
28162 'grey' : [90, 39],
28163 'black' : [30, 39],
28164 'blue' : [34, 39],
28165 'cyan' : [36, 39],
28166 'green' : [32, 39],
28167 'magenta' : [35, 39],
28168 'red' : [31, 39],
28169 'yellow' : [33, 39]
28170 };
28171
28172 // Don't use 'blue' not visible on cmd.exe
28173 inspect.styles = {
28174 'special': 'cyan',
28175 'number': 'yellow',
28176 'boolean': 'yellow',
28177 'undefined': 'grey',
28178 'null': 'bold',
28179 'string': 'green',
28180 'date': 'magenta',
28181 // "name": intentionally not styling
28182 'regexp': 'red'
28183 };
28184
28185
28186 function stylizeWithColor(str, styleType) {
28187 var style = inspect.styles[styleType];
28188
28189 if (style) {
28190 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28191 '\u001b[' + inspect.colors[style][1] + 'm';
28192 } else {
28193 return str;
28194 }
28195 }
28196
28197
28198 function stylizeNoColor(str, styleType) {
28199 return str;
28200 }
28201
28202
28203 function arrayToHash(array) {
28204 var hash = {};
28205
28206 array.forEach(function(val, idx) {
28207 hash[val] = true;
28208 });
28209
28210 return hash;
28211 }
28212
28213
28214 function formatValue(ctx, value, recurseTimes) {
28215 // Provide a hook for user-specified inspect functions.
28216 // Check that value is an object with an inspect function on it
28217 if (ctx.customInspect &&
28218 value &&
28219 isFunction(value.inspect) &&
28220 // Filter out the util module, it's inspect function is special
28221 value.inspect !== exports.inspect &&
28222 // Also filter out any prototype objects using the circular check.
28223 !(value.constructor && value.constructor.prototype === value)) {
28224 var ret = value.inspect(recurseTimes, ctx);
28225 if (!isString(ret)) {
28226 ret = formatValue(ctx, ret, recurseTimes);
28227 }
28228 return ret;
28229 }
28230
28231 // Primitive types cannot have properties
28232 var primitive = formatPrimitive(ctx, value);
28233 if (primitive) {
28234 return primitive;
28235 }
28236
28237 // Look up the keys of the object.
28238 var keys = Object.keys(value);
28239 var visibleKeys = arrayToHash(keys);
28240
28241 if (ctx.showHidden) {
28242 keys = Object.getOwnPropertyNames(value);
28243 }
28244
28245 // IE doesn't make error fields non-enumerable
28246 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28247 if (isError(value)
28248 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28249 return formatError(value);
28250 }
28251
28252 // Some type of object without properties can be shortcutted.
28253 if (keys.length === 0) {
28254 if (isFunction(value)) {
28255 var name = value.name ? ': ' + value.name : '';
28256 return ctx.stylize('[Function' + name + ']', 'special');
28257 }
28258 if (isRegExp(value)) {
28259 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28260 }
28261 if (isDate(value)) {
28262 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28263 }
28264 if (isError(value)) {
28265 return formatError(value);
28266 }
28267 }
28268
28269 var base = '', array = false, braces = ['{', '}'];
28270
28271 // Make Array say that they are Array
28272 if (isArray(value)) {
28273 array = true;
28274 braces = ['[', ']'];
28275 }
28276
28277 // Make functions say that they are functions
28278 if (isFunction(value)) {
28279 var n = value.name ? ': ' + value.name : '';
28280 base = ' [Function' + n + ']';
28281 }
28282
28283 // Make RegExps say that they are RegExps
28284 if (isRegExp(value)) {
28285 base = ' ' + RegExp.prototype.toString.call(value);
28286 }
28287
28288 // Make dates with properties first say the date
28289 if (isDate(value)) {
28290 base = ' ' + Date.prototype.toUTCString.call(value);
28291 }
28292
28293 // Make error with message first say the error
28294 if (isError(value)) {
28295 base = ' ' + formatError(value);
28296 }
28297
28298 if (keys.length === 0 && (!array || value.length == 0)) {
28299 return braces[0] + base + braces[1];
28300 }
28301
28302 if (recurseTimes < 0) {
28303 if (isRegExp(value)) {
28304 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28305 } else {
28306 return ctx.stylize('[Object]', 'special');
28307 }
28308 }
28309
28310 ctx.seen.push(value);
28311
28312 var output;
28313 if (array) {
28314 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28315 } else {
28316 output = keys.map(function(key) {
28317 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28318 });
28319 }
28320
28321 ctx.seen.pop();
28322
28323 return reduceToSingleString(output, base, braces);
28324 }
28325
28326
28327 function formatPrimitive(ctx, value) {
28328 if (isUndefined(value))
28329 return ctx.stylize('undefined', 'undefined');
28330 if (isString(value)) {
28331 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28332 .replace(/'/g, "\\'")
28333 .replace(/\\"/g, '"') + '\'';
28334 return ctx.stylize(simple, 'string');
28335 }
28336 if (isNumber(value))
28337 return ctx.stylize('' + value, 'number');
28338 if (isBoolean(value))
28339 return ctx.stylize('' + value, 'boolean');
28340 // For some reason typeof null is "object", so special case here.
28341 if (isNull(value))
28342 return ctx.stylize('null', 'null');
28343 }
28344
28345
28346 function formatError(value) {
28347 return '[' + Error.prototype.toString.call(value) + ']';
28348 }
28349
28350
28351 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28352 var output = [];
28353 for (var i = 0, l = value.length; i < l; ++i) {
28354 if (hasOwnProperty(value, String(i))) {
28355 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28356 String(i), true));
28357 } else {
28358 output.push('');
28359 }
28360 }
28361 keys.forEach(function(key) {
28362 if (!key.match(/^\d+$/)) {
28363 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28364 key, true));
28365 }
28366 });
28367 return output;
28368 }
28369
28370
28371 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28372 var name, str, desc;
28373 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28374 if (desc.get) {
28375 if (desc.set) {
28376 str = ctx.stylize('[Getter/Setter]', 'special');
28377 } else {
28378 str = ctx.stylize('[Getter]', 'special');
28379 }
28380 } else {
28381 if (desc.set) {
28382 str = ctx.stylize('[Setter]', 'special');
28383 }
28384 }
28385 if (!hasOwnProperty(visibleKeys, key)) {
28386 name = '[' + key + ']';
28387 }
28388 if (!str) {
28389 if (ctx.seen.indexOf(desc.value) < 0) {
28390 if (isNull(recurseTimes)) {
28391 str = formatValue(ctx, desc.value, null);
28392 } else {
28393 str = formatValue(ctx, desc.value, recurseTimes - 1);
28394 }
28395 if (str.indexOf('\n') > -1) {
28396 if (array) {
28397 str = str.split('\n').map(function(line) {
28398 return ' ' + line;
28399 }).join('\n').substr(2);
28400 } else {
28401 str = '\n' + str.split('\n').map(function(line) {
28402 return ' ' + line;
28403 }).join('\n');
28404 }
28405 }
28406 } else {
28407 str = ctx.stylize('[Circular]', 'special');
28408 }
28409 }
28410 if (isUndefined(name)) {
28411 if (array && key.match(/^\d+$/)) {
28412 return str;
28413 }
28414 name = JSON.stringify('' + key);
28415 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28416 name = name.substr(1, name.length - 2);
28417 name = ctx.stylize(name, 'name');
28418 } else {
28419 name = name.replace(/'/g, "\\'")
28420 .replace(/\\"/g, '"')
28421 .replace(/(^"|"$)/g, "'");
28422 name = ctx.stylize(name, 'string');
28423 }
28424 }
28425
28426 return name + ': ' + str;
28427 }
28428
28429
28430 function reduceToSingleString(output, base, braces) {
28431 var numLinesEst = 0;
28432 var length = output.reduce(function(prev, cur) {
28433 numLinesEst++;
28434 if (cur.indexOf('\n') >= 0) numLinesEst++;
28435 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28436 }, 0);
28437
28438 if (length > 60) {
28439 return braces[0] +
28440 (base === '' ? '' : base + '\n ') +
28441 ' ' +
28442 output.join(',\n ') +
28443 ' ' +
28444 braces[1];
28445 }
28446
28447 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28448 }
28449
28450
28451 // NOTE: These type checking functions intentionally don't use `instanceof`
28452 // because it is fragile and can be easily faked with `Object.create()`.
28453 function isArray(ar) {
28454 return Array.isArray(ar);
28455 }
28456 exports.isArray = isArray;
28457
28458 function isBoolean(arg) {
28459 return typeof arg === 'boolean';
28460 }
28461 exports.isBoolean = isBoolean;
28462
28463 function isNull(arg) {
28464 return arg === null;
28465 }
28466 exports.isNull = isNull;
28467
28468 function isNullOrUndefined(arg) {
28469 return arg == null;
28470 }
28471 exports.isNullOrUndefined = isNullOrUndefined;
28472
28473 function isNumber(arg) {
28474 return typeof arg === 'number';
28475 }
28476 exports.isNumber = isNumber;
28477
28478 function isString(arg) {
28479 return typeof arg === 'string';
28480 }
28481 exports.isString = isString;
28482
28483 function isSymbol(arg) {
28484 return typeof arg === 'symbol';
28485 }
28486 exports.isSymbol = isSymbol;
28487
28488 function isUndefined(arg) {
28489 return arg === void 0;
28490 }
28491 exports.isUndefined = isUndefined;
28492
28493 function isRegExp(re) {
28494 return isObject(re) && objectToString(re) === '[object RegExp]';
28495 }
28496 exports.isRegExp = isRegExp;
28497
28498 function isObject(arg) {
28499 return typeof arg === 'object' && arg !== null;
28500 }
28501 exports.isObject = isObject;
28502
28503 function isDate(d) {
28504 return isObject(d) && objectToString(d) === '[object Date]';
28505 }
28506 exports.isDate = isDate;
28507
28508 function isError(e) {
28509 return isObject(e) &&
28510 (objectToString(e) === '[object Error]' || e instanceof Error);
28511 }
28512 exports.isError = isError;
28513
28514 function isFunction(arg) {
28515 return typeof arg === 'function';
28516 }
28517 exports.isFunction = isFunction;
28518
28519 function isPrimitive(arg) {
28520 return arg === null ||
28521 typeof arg === 'boolean' ||
28522 typeof arg === 'number' ||
28523 typeof arg === 'string' ||
28524 typeof arg === 'symbol' || // ES6 symbol
28525 typeof arg === 'undefined';
28526 }
28527 exports.isPrimitive = isPrimitive;
28528
28529 exports.isBuffer = require('./support/isBuffer');
28530
28531 function objectToString(o) {
28532 return Object.prototype.toString.call(o);
28533 }
28534
28535
28536 function pad(n) {
28537 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28538 }
28539
28540
28541 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28542 'Oct', 'Nov', 'Dec'];
28543
28544 // 26 Feb 16:19:34
28545 function timestamp() {
28546 var d = new Date();
28547 var time = [pad(d.getHours()),
28548 pad(d.getMinutes()),
28549 pad(d.getSeconds())].join(':');
28550 return [d.getDate(), months[d.getMonth()], time].join(' ');
28551 }
28552
28553
28554 // log is just a thin wrapper to console.log that prepends a timestamp
28555 exports.log = function() {
28556 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
28557 };
28558
28559
28560 /**
28561 * Inherit the prototype methods from one constructor into another.
28562 *
28563 * The Function.prototype.inherits from lang.js rewritten as a standalone
28564 * function (not on Function.prototype). NOTE: If this file is to be loaded
28565 * during bootstrapping this function needs to be rewritten using some native
28566 * functions as prototype setup using normal JavaScript does not work as
28567 * expected during bootstrapping (see mirror.js in r114903).
28568 *
28569 * @param {function} ctor Constructor function which needs to inherit the
28570 * prototype.
28571 * @param {function} superCtor Constructor function to inherit prototype from.
28572 */
28573 exports.inherits = require('inherits');
28574
28575 exports._extend = function(origin, add) {
28576 // Don't do anything if add isn't an object
28577 if (!add || !isObject(add)) return origin;
28578
28579 var keys = Object.keys(add);
28580 var i = keys.length;
28581 while (i--) {
28582 origin[keys[i]] = add[keys[i]];
28583 }
28584 return origin;
28585 };
28586
28587 function hasOwnProperty(obj, prop) {
28588 return Object.prototype.hasOwnProperty.call(obj, prop);
28589 }
28590
28591 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28592 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28593 (function (Buffer){
28594 const createKeccakHash = require('keccak')
28595 const secp256k1 = require('secp256k1')
28596 const assert = require('assert')
28597 const rlp = require('rlp')
28598 const BN = require('bn.js')
28599 const createHash = require('create-hash')
28600 Object.assign(exports, require('ethjs-util'))
28601
28602 /**
28603 * the max integer that this VM can handle (a ```BN```)
28604 * @var {BN} MAX_INTEGER
28605 */
28606 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
28607
28608 /**
28609 * 2^256 (a ```BN```)
28610 * @var {BN} TWO_POW256
28611 */
28612 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
28613
28614 /**
28615 * SHA3-256 hash of null (a ```String```)
28616 * @var {String} SHA3_NULL_S
28617 */
28618 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
28619
28620 /**
28621 * SHA3-256 hash of null (a ```Buffer```)
28622 * @var {Buffer} SHA3_NULL
28623 */
28624 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
28625
28626 /**
28627 * SHA3-256 of an RLP of an empty array (a ```String```)
28628 * @var {String} SHA3_RLP_ARRAY_S
28629 */
28630 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
28631
28632 /**
28633 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28634 * @var {Buffer} SHA3_RLP_ARRAY
28635 */
28636 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
28637
28638 /**
28639 * SHA3-256 hash of the RLP of null (a ```String```)
28640 * @var {String} SHA3_RLP_S
28641 */
28642 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
28643
28644 /**
28645 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28646 * @var {Buffer} SHA3_RLP
28647 */
28648 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
28649
28650 /**
28651 * [`BN`](https://github.com/indutny/bn.js)
28652 * @var {Function}
28653 */
28654 exports.BN = BN
28655
28656 /**
28657 * [`rlp`](https://github.com/ethereumjs/rlp)
28658 * @var {Function}
28659 */
28660 exports.rlp = rlp
28661
28662 /**
28663 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28664 * @var {Object}
28665 */
28666 exports.secp256k1 = secp256k1
28667
28668 /**
28669 * Returns a buffer filled with 0s
28670 * @method zeros
28671 * @param {Number} bytes the number of bytes the buffer should be
28672 * @return {Buffer}
28673 */
28674 exports.zeros = function (bytes) {
28675 return Buffer.allocUnsafe(bytes).fill(0)
28676 }
28677
28678 /**
28679 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28680 * Or it truncates the beginning if it exceeds.
28681 * @method lsetLength
28682 * @param {Buffer|Array} msg the value to pad
28683 * @param {Number} length the number of bytes the output should be
28684 * @param {Boolean} [right=false] whether to start padding form the left or right
28685 * @return {Buffer|Array}
28686 */
28687 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28688 var buf = exports.zeros(length)
28689 msg = exports.toBuffer(msg)
28690 if (right) {
28691 if (msg.length < length) {
28692 msg.copy(buf)
28693 return buf
28694 }
28695 return msg.slice(0, length)
28696 } else {
28697 if (msg.length < length) {
28698 msg.copy(buf, length - msg.length)
28699 return buf
28700 }
28701 return msg.slice(-length)
28702 }
28703 }
28704
28705 /**
28706 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28707 * Or it truncates the beginning if it exceeds.
28708 * @param {Buffer|Array} msg the value to pad
28709 * @param {Number} length the number of bytes the output should be
28710 * @return {Buffer|Array}
28711 */
28712 exports.setLengthRight = function (msg, length) {
28713 return exports.setLength(msg, length, true)
28714 }
28715
28716 /**
28717 * Trims leading zeros from a `Buffer` or an `Array`
28718 * @param {Buffer|Array|String} a
28719 * @return {Buffer|Array|String}
28720 */
28721 exports.unpad = exports.stripZeros = function (a) {
28722 a = exports.stripHexPrefix(a)
28723 var first = a[0]
28724 while (a.length > 0 && first.toString() === '0') {
28725 a = a.slice(1)
28726 first = a[0]
28727 }
28728 return a
28729 }
28730 /**
28731 * 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.
28732 * @param {*} v the value
28733 */
28734 exports.toBuffer = function (v) {
28735 if (!Buffer.isBuffer(v)) {
28736 if (Array.isArray(v)) {
28737 v = Buffer.from(v)
28738 } else if (typeof v === 'string') {
28739 if (exports.isHexPrefixed(v)) {
28740 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28741 } else {
28742 v = Buffer.from(v)
28743 }
28744 } else if (typeof v === 'number') {
28745 v = exports.intToBuffer(v)
28746 } else if (v === null || v === undefined) {
28747 v = Buffer.allocUnsafe(0)
28748 } else if (v.toArray) {
28749 // converts a BN to a Buffer
28750 v = Buffer.from(v.toArray())
28751 } else {
28752 throw new Error('invalid type')
28753 }
28754 }
28755 return v
28756 }
28757
28758 /**
28759 * Converts a `Buffer` to a `Number`
28760 * @param {Buffer} buf
28761 * @return {Number}
28762 * @throws If the input number exceeds 53 bits.
28763 */
28764 exports.bufferToInt = function (buf) {
28765 return new BN(exports.toBuffer(buf)).toNumber()
28766 }
28767
28768 /**
28769 * Converts a `Buffer` into a hex `String`
28770 * @param {Buffer} buf
28771 * @return {String}
28772 */
28773 exports.bufferToHex = function (buf) {
28774 buf = exports.toBuffer(buf)
28775 return '0x' + buf.toString('hex')
28776 }
28777
28778 /**
28779 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28780 * @param {Buffer} num
28781 * @return {BN}
28782 */
28783 exports.fromSigned = function (num) {
28784 return new BN(num).fromTwos(256)
28785 }
28786
28787 /**
28788 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28789 * @param {BN} num
28790 * @return {Buffer}
28791 */
28792 exports.toUnsigned = function (num) {
28793 return Buffer.from(num.toTwos(256).toArray())
28794 }
28795
28796 /**
28797 * Creates SHA-3 hash of the input
28798 * @param {Buffer|Array|String|Number} a the input data
28799 * @param {Number} [bits=256] the SHA width
28800 * @return {Buffer}
28801 */
28802 exports.sha3 = function (a, bits) {
28803 a = exports.toBuffer(a)
28804 if (!bits) bits = 256
28805
28806 return createKeccakHash('keccak' + bits).update(a).digest()
28807 }
28808
28809 /**
28810 * Creates SHA256 hash of the input
28811 * @param {Buffer|Array|String|Number} a the input data
28812 * @return {Buffer}
28813 */
28814 exports.sha256 = function (a) {
28815 a = exports.toBuffer(a)
28816 return createHash('sha256').update(a).digest()
28817 }
28818
28819 /**
28820 * Creates RIPEMD160 hash of the input
28821 * @param {Buffer|Array|String|Number} a the input data
28822 * @param {Boolean} padded whether it should be padded to 256 bits or not
28823 * @return {Buffer}
28824 */
28825 exports.ripemd160 = function (a, padded) {
28826 a = exports.toBuffer(a)
28827 var hash = createHash('rmd160').update(a).digest()
28828 if (padded === true) {
28829 return exports.setLength(hash, 32)
28830 } else {
28831 return hash
28832 }
28833 }
28834
28835 /**
28836 * Creates SHA-3 hash of the RLP encoded version of the input
28837 * @param {Buffer|Array|String|Number} a the input data
28838 * @return {Buffer}
28839 */
28840 exports.rlphash = function (a) {
28841 return exports.sha3(rlp.encode(a))
28842 }
28843
28844 /**
28845 * Checks if the private key satisfies the rules of the curve secp256k1.
28846 * @param {Buffer} privateKey
28847 * @return {Boolean}
28848 */
28849 exports.isValidPrivate = function (privateKey) {
28850 return secp256k1.privateKeyVerify(privateKey)
28851 }
28852
28853 /**
28854 * Checks if the public key satisfies the rules of the curve secp256k1
28855 * and the requirements of Ethereum.
28856 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28857 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28858 * @return {Boolean}
28859 */
28860 exports.isValidPublic = function (publicKey, sanitize) {
28861 if (publicKey.length === 64) {
28862 // Convert to SEC1 for secp256k1
28863 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28864 }
28865
28866 if (!sanitize) {
28867 return false
28868 }
28869
28870 return secp256k1.publicKeyVerify(publicKey)
28871 }
28872
28873 /**
28874 * Returns the ethereum address of a given public key.
28875 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28876 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28877 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28878 * @return {Buffer}
28879 */
28880 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28881 pubKey = exports.toBuffer(pubKey)
28882 if (sanitize && (pubKey.length !== 64)) {
28883 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
28884 }
28885 assert(pubKey.length === 64)
28886 // Only take the lower 160bits of the hash
28887 return exports.sha3(pubKey).slice(-20)
28888 }
28889
28890 /**
28891 * Returns the ethereum public key of a given private key
28892 * @param {Buffer} privateKey A private key must be 256 bits wide
28893 * @return {Buffer}
28894 */
28895 var privateToPublic = exports.privateToPublic = function (privateKey) {
28896 privateKey = exports.toBuffer(privateKey)
28897 // skip the type flag and use the X, Y points
28898 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28899 }
28900
28901 /**
28902 * Converts a public key to the Ethereum format.
28903 * @param {Buffer} publicKey
28904 * @return {Buffer}
28905 */
28906 exports.importPublic = function (publicKey) {
28907 publicKey = exports.toBuffer(publicKey)
28908 if (publicKey.length !== 64) {
28909 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
28910 }
28911 return publicKey
28912 }
28913
28914 /**
28915 * ECDSA sign
28916 * @param {Buffer} msgHash
28917 * @param {Buffer} privateKey
28918 * @return {Object}
28919 */
28920 exports.ecsign = function (msgHash, privateKey) {
28921 var sig = secp256k1.sign(msgHash, privateKey)
28922
28923 var ret = {}
28924 ret.r = sig.signature.slice(0, 32)
28925 ret.s = sig.signature.slice(32, 64)
28926 ret.v = sig.recovery + 27
28927 return ret
28928 }
28929
28930 /**
28931 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28932 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28933 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28934 * used to produce the signature.
28935 * @param message
28936 * @returns {Buffer} hash
28937 */
28938 exports.hashPersonalMessage = function (message) {
28939 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28940 return exports.sha3(Buffer.concat([prefix, message]))
28941 }
28942
28943 /**
28944 * ECDSA public key recovery from signature
28945 * @param {Buffer} msgHash
28946 * @param {Number} v
28947 * @param {Buffer} r
28948 * @param {Buffer} s
28949 * @return {Buffer} publicKey
28950 */
28951 exports.ecrecover = function (msgHash, v, r, s) {
28952 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28953 var recovery = v - 27
28954 if (recovery !== 0 && recovery !== 1) {
28955 throw new Error('Invalid signature v value')
28956 }
28957 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28958 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
28959 }
28960
28961 /**
28962 * Convert signature parameters into the format of `eth_sign` RPC method
28963 * @param {Number} v
28964 * @param {Buffer} r
28965 * @param {Buffer} s
28966 * @return {String} sig
28967 */
28968 exports.toRpcSig = function (v, r, s) {
28969 // NOTE: with potential introduction of chainId this might need to be updated
28970 if (v !== 27 && v !== 28) {
28971 throw new Error('Invalid recovery id')
28972 }
28973
28974 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28975 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28976 return exports.bufferToHex(Buffer.concat([
28977 exports.setLengthLeft(r, 32),
28978 exports.setLengthLeft(s, 32),
28979 exports.toBuffer(v - 27)
28980 ]))
28981 }
28982
28983 /**
28984 * Convert signature format of the `eth_sign` RPC method to signature parameters
28985 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28986 * @param {String} sig
28987 * @return {Object}
28988 */
28989 exports.fromRpcSig = function (sig) {
28990 sig = exports.toBuffer(sig)
28991
28992 // NOTE: with potential introduction of chainId this might need to be updated
28993 if (sig.length !== 65) {
28994 throw new Error('Invalid signature length')
28995 }
28996
28997 var v = sig[64]
28998 // support both versions of `eth_sign` responses
28999 if (v < 27) {
29000 v += 27
29001 }
29002
29003 return {
29004 v: v,
29005 r: sig.slice(0, 32),
29006 s: sig.slice(32, 64)
29007 }
29008 }
29009
29010 /**
29011 * Returns the ethereum address of a given private key
29012 * @param {Buffer} privateKey A private key must be 256 bits wide
29013 * @return {Buffer}
29014 */
29015 exports.privateToAddress = function (privateKey) {
29016 return exports.publicToAddress(privateToPublic(privateKey))
29017 }
29018
29019 /**
29020 * Checks if the address is a valid. Accepts checksummed addresses too
29021 * @param {String} address
29022 * @return {Boolean}
29023 */
29024 exports.isValidAddress = function (address) {
29025 return /^0x[0-9a-fA-F]{40}$/i.test(address)
29026 }
29027
29028 /**
29029 * Returns a checksummed address
29030 * @param {String} address
29031 * @return {String}
29032 */
29033 exports.toChecksumAddress = function (address) {
29034 address = exports.stripHexPrefix(address).toLowerCase()
29035 var hash = exports.sha3(address).toString('hex')
29036 var ret = '0x'
29037
29038 for (var i = 0; i < address.length; i++) {
29039 if (parseInt(hash[i], 16) >= 8) {
29040 ret += address[i].toUpperCase()
29041 } else {
29042 ret += address[i]
29043 }
29044 }
29045
29046 return ret
29047 }
29048
29049 /**
29050 * Checks if the address is a valid checksummed address
29051 * @param {Buffer} address
29052 * @return {Boolean}
29053 */
29054 exports.isValidChecksumAddress = function (address) {
29055 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
29056 }
29057
29058 /**
29059 * Generates an address of a newly created contract
29060 * @param {Buffer} from the address which is creating this new address
29061 * @param {Buffer} nonce the nonce of the from account
29062 * @return {Buffer}
29063 */
29064 exports.generateAddress = function (from, nonce) {
29065 from = exports.toBuffer(from)
29066 nonce = new BN(nonce)
29067
29068 if (nonce.isZero()) {
29069 // in RLP we want to encode null in the case of zero nonce
29070 // read the RLP documentation for an answer if you dare
29071 nonce = null
29072 } else {
29073 nonce = Buffer.from(nonce.toArray())
29074 }
29075
29076 // Only take the lower 160bits of the hash
29077 return exports.rlphash([from, nonce]).slice(-20)
29078 }
29079
29080 /**
29081 * Returns true if the supplied address belongs to a precompiled account
29082 * @param {Buffer|String} address
29083 * @return {Boolean}
29084 */
29085 exports.isPrecompiled = function (address) {
29086 var a = exports.unpad(address)
29087 return a.length === 1 && a[0] > 0 && a[0] < 5
29088 }
29089
29090 /**
29091 * Adds "0x" to a given `String` if it does not already start with "0x"
29092 * @param {String} str
29093 * @return {String}
29094 */
29095 exports.addHexPrefix = function (str) {
29096 if (typeof str !== 'string') {
29097 return str
29098 }
29099
29100 return exports.isHexPrefixed(str) ? str : '0x' + str
29101 }
29102
29103 /**
29104 * Validate ECDSA signature
29105 * @method isValidSignature
29106 * @param {Buffer} v
29107 * @param {Buffer} r
29108 * @param {Buffer} s
29109 * @param {Boolean} [homestead=true]
29110 * @return {Boolean}
29111 */
29112
29113 exports.isValidSignature = function (v, r, s, homestead) {
29114 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
29115 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
29116
29117 if (r.length !== 32 || s.length !== 32) {
29118 return false
29119 }
29120
29121 if (v !== 27 && v !== 28) {
29122 return false
29123 }
29124
29125 r = new BN(r)
29126 s = new BN(s)
29127
29128 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
29129 return false
29130 }
29131
29132 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
29133 return false
29134 }
29135
29136 return true
29137 }
29138
29139 /**
29140 * Converts a `Buffer` or `Array` to JSON
29141 * @param {Buffer|Array} ba
29142 * @return {Array|String|null}
29143 */
29144 exports.baToJSON = function (ba) {
29145 if (Buffer.isBuffer(ba)) {
29146 return '0x' + ba.toString('hex')
29147 } else if (ba instanceof Array) {
29148 var array = []
29149 for (var i = 0; i < ba.length; i++) {
29150 array.push(exports.baToJSON(ba[i]))
29151 }
29152 return array
29153 }
29154 }
29155
29156 /**
29157 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29158 * @param {Object} self the `Object` to define properties on
29159 * @param {Array} fields an array fields to define. Fields can contain:
29160 * * `name` - the name of the properties
29161 * * `length` - the number of bytes the field can have
29162 * * `allowLess` - if the field can be less than the length
29163 * * `allowEmpty`
29164 * @param {*} data data to be validated against the definitions
29165 */
29166 exports.defineProperties = function (self, fields, data) {
29167 self.raw = []
29168 self._fields = []
29169
29170 // attach the `toJSON`
29171 self.toJSON = function (label) {
29172 if (label) {
29173 var obj = {}
29174 self._fields.forEach(function (field) {
29175 obj[field] = '0x' + self[field].toString('hex')
29176 })
29177 return obj
29178 }
29179 return exports.baToJSON(this.raw)
29180 }
29181
29182 self.serialize = function serialize () {
29183 return rlp.encode(self.raw)
29184 }
29185
29186 fields.forEach(function (field, i) {
29187 self._fields.push(field.name)
29188 function getter () {
29189 return self.raw[i]
29190 }
29191 function setter (v) {
29192 v = exports.toBuffer(v)
29193
29194 if (v.toString('hex') === '00' && !field.allowZero) {
29195 v = Buffer.allocUnsafe(0)
29196 }
29197
29198 if (field.allowLess && field.length) {
29199 v = exports.stripZeros(v)
29200 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29201 } else if (!(field.allowZero && v.length === 0) && field.length) {
29202 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29203 }
29204
29205 self.raw[i] = v
29206 }
29207
29208 Object.defineProperty(self, field.name, {
29209 enumerable: true,
29210 configurable: true,
29211 get: getter,
29212 set: setter
29213 })
29214
29215 if (field.default) {
29216 self[field.name] = field.default
29217 }
29218
29219 // attach alias
29220 if (field.alias) {
29221 Object.defineProperty(self, field.alias, {
29222 enumerable: false,
29223 configurable: true,
29224 set: setter,
29225 get: getter
29226 })
29227 }
29228 })
29229
29230 // if the constuctor is passed data
29231 if (data) {
29232 if (typeof data === 'string') {
29233 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29234 }
29235
29236 if (Buffer.isBuffer(data)) {
29237 data = rlp.decode(data)
29238 }
29239
29240 if (Array.isArray(data)) {
29241 if (data.length > self._fields.length) {
29242 throw (new Error('wrong number of fields in data'))
29243 }
29244
29245 // make sure all the items are buffers
29246 data.forEach(function (d, i) {
29247 self[self._fields[i]] = exports.toBuffer(d)
29248 })
29249 } else if (typeof data === 'object') {
29250 const keys = Object.keys(data)
29251 fields.forEach(function (field) {
29252 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29253 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29254 })
29255 } else {
29256 throw new Error('invalid data')
29257 }
29258 }
29259 }
29260
29261 }).call(this,require("buffer").Buffer)
29262 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29263 (function (Buffer){
29264 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29265 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29266 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
29267
29268 function check (buffer) {
29269 if (buffer.length < 8) return false
29270 if (buffer.length > 72) return false
29271 if (buffer[0] !== 0x30) return false
29272 if (buffer[1] !== buffer.length - 2) return false
29273 if (buffer[2] !== 0x02) return false
29274
29275 var lenR = buffer[3]
29276 if (lenR === 0) return false
29277 if (5 + lenR >= buffer.length) return false
29278 if (buffer[4 + lenR] !== 0x02) return false
29279
29280 var lenS = buffer[5 + lenR]
29281 if (lenS === 0) return false
29282 if ((6 + lenR + lenS) !== buffer.length) return false
29283
29284 if (buffer[4] & 0x80) return false
29285 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29286
29287 if (buffer[lenR + 6] & 0x80) return false
29288 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29289 return true
29290 }
29291
29292 function decode (buffer) {
29293 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29294 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29295 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29296 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29297 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29298
29299 var lenR = buffer[3]
29300 if (lenR === 0) throw new Error('R length is zero')
29301 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29302 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29303
29304 var lenS = buffer[5 + lenR]
29305 if (lenS === 0) throw new Error('S length is zero')
29306 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29307
29308 if (buffer[4] & 0x80) throw new Error('R value is negative')
29309 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29310
29311 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29312 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29313
29314 // non-BIP66 - extract R, S values
29315 return {
29316 r: buffer.slice(4, 4 + lenR),
29317 s: buffer.slice(6 + lenR)
29318 }
29319 }
29320
29321 /*
29322 * Expects r and s to be positive DER integers.
29323 *
29324 * The DER format uses the most significant bit as a sign bit (& 0x80).
29325 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29326 *
29327 * Examples:
29328 *
29329 * 0 => 0x00
29330 * 1 => 0x01
29331 * -1 => 0xff
29332 * 127 => 0x7f
29333 * -127 => 0x81
29334 * 128 => 0x0080
29335 * -128 => 0x80
29336 * 255 => 0x00ff
29337 * -255 => 0xff01
29338 * 16300 => 0x3fac
29339 * -16300 => 0xc054
29340 * 62300 => 0x00f35c
29341 * -62300 => 0xff0ca4
29342 */
29343 function encode (r, s) {
29344 var lenR = r.length
29345 var lenS = s.length
29346 if (lenR === 0) throw new Error('R length is zero')
29347 if (lenS === 0) throw new Error('S length is zero')
29348 if (lenR > 33) throw new Error('R length is too long')
29349 if (lenS > 33) throw new Error('S length is too long')
29350 if (r[0] & 0x80) throw new Error('R value is negative')
29351 if (s[0] & 0x80) throw new Error('S value is negative')
29352 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29353 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29354
29355 var signature = new Buffer(6 + lenR + lenS)
29356
29357 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29358 signature[0] = 0x30
29359 signature[1] = signature.length - 2
29360 signature[2] = 0x02
29361 signature[3] = r.length
29362 r.copy(signature, 4)
29363 signature[4 + lenR] = 0x02
29364 signature[5 + lenR] = s.length
29365 s.copy(signature, 6 + lenR)
29366
29367 return signature
29368 }
29369
29370 module.exports = {
29371 check: check,
29372 decode: decode,
29373 encode: encode
29374 }
29375
29376 }).call(this,require("buffer").Buffer)
29377 },{"buffer":5}],33:[function(require,module,exports){
29378 (function (module, exports) {
29379 'use strict';
29380
29381 // Utils
29382 function assert (val, msg) {
29383 if (!val) throw new Error(msg || 'Assertion failed');
29384 }
29385
29386 // Could use `inherits` module, but don't want to move from single file
29387 // architecture yet.
29388 function inherits (ctor, superCtor) {
29389 ctor.super_ = superCtor;
29390 var TempCtor = function () {};
29391 TempCtor.prototype = superCtor.prototype;
29392 ctor.prototype = new TempCtor();
29393 ctor.prototype.constructor = ctor;
29394 }
29395
29396 // BN
29397
29398 function BN (number, base, endian) {
29399 if (BN.isBN(number)) {
29400 return number;
29401 }
29402
29403 this.negative = 0;
29404 this.words = null;
29405 this.length = 0;
29406
29407 // Reduction context
29408 this.red = null;
29409
29410 if (number !== null) {
29411 if (base === 'le' || base === 'be') {
29412 endian = base;
29413 base = 10;
29414 }
29415
29416 this._init(number || 0, base || 10, endian || 'be');
29417 }
29418 }
29419 if (typeof module === 'object') {
29420 module.exports = BN;
29421 } else {
29422 exports.BN = BN;
29423 }
29424
29425 BN.BN = BN;
29426 BN.wordSize = 26;
29427
29428 var Buffer;
29429 try {
29430 Buffer = require('buf' + 'fer').Buffer;
29431 } catch (e) {
29432 }
29433
29434 BN.isBN = function isBN (num) {
29435 if (num instanceof BN) {
29436 return true;
29437 }
29438
29439 return num !== null && typeof num === 'object' &&
29440 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29441 };
29442
29443 BN.max = function max (left, right) {
29444 if (left.cmp(right) > 0) return left;
29445 return right;
29446 };
29447
29448 BN.min = function min (left, right) {
29449 if (left.cmp(right) < 0) return left;
29450 return right;
29451 };
29452
29453 BN.prototype._init = function init (number, base, endian) {
29454 if (typeof number === 'number') {
29455 return this._initNumber(number, base, endian);
29456 }
29457
29458 if (typeof number === 'object') {
29459 return this._initArray(number, base, endian);
29460 }
29461
29462 if (base === 'hex') {
29463 base = 16;
29464 }
29465 assert(base === (base | 0) && base >= 2 && base <= 36);
29466
29467 number = number.toString().replace(/\s+/g, '');
29468 var start = 0;
29469 if (number[0] === '-') {
29470 start++;
29471 }
29472
29473 if (base === 16) {
29474 this._parseHex(number, start);
29475 } else {
29476 this._parseBase(number, base, start);
29477 }
29478
29479 if (number[0] === '-') {
29480 this.negative = 1;
29481 }
29482
29483 this.strip();
29484
29485 if (endian !== 'le') return;
29486
29487 this._initArray(this.toArray(), base, endian);
29488 };
29489
29490 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29491 if (number < 0) {
29492 this.negative = 1;
29493 number = -number;
29494 }
29495 if (number < 0x4000000) {
29496 this.words = [ number & 0x3ffffff ];
29497 this.length = 1;
29498 } else if (number < 0x10000000000000) {
29499 this.words = [
29500 number & 0x3ffffff,
29501 (number / 0x4000000) & 0x3ffffff
29502 ];
29503 this.length = 2;
29504 } else {
29505 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29506 this.words = [
29507 number & 0x3ffffff,
29508 (number / 0x4000000) & 0x3ffffff,
29509 1
29510 ];
29511 this.length = 3;
29512 }
29513
29514 if (endian !== 'le') return;
29515
29516 // Reverse the bytes
29517 this._initArray(this.toArray(), base, endian);
29518 };
29519
29520 BN.prototype._initArray = function _initArray (number, base, endian) {
29521 // Perhaps a Uint8Array
29522 assert(typeof number.length === 'number');
29523 if (number.length <= 0) {
29524 this.words = [ 0 ];
29525 this.length = 1;
29526 return this;
29527 }
29528
29529 this.length = Math.ceil(number.length / 3);
29530 this.words = new Array(this.length);
29531 for (var i = 0; i < this.length; i++) {
29532 this.words[i] = 0;
29533 }
29534
29535 var j, w;
29536 var off = 0;
29537 if (endian === 'be') {
29538 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29539 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29540 this.words[j] |= (w << off) & 0x3ffffff;
29541 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29542 off += 24;
29543 if (off >= 26) {
29544 off -= 26;
29545 j++;
29546 }
29547 }
29548 } else if (endian === 'le') {
29549 for (i = 0, j = 0; i < number.length; i += 3) {
29550 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29551 this.words[j] |= (w << off) & 0x3ffffff;
29552 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29553 off += 24;
29554 if (off >= 26) {
29555 off -= 26;
29556 j++;
29557 }
29558 }
29559 }
29560 return this.strip();
29561 };
29562
29563 function parseHex (str, start, end) {
29564 var r = 0;
29565 var len = Math.min(str.length, end);
29566 for (var i = start; i < len; i++) {
29567 var c = str.charCodeAt(i) - 48;
29568
29569 r <<= 4;
29570
29571 // 'a' - 'f'
29572 if (c >= 49 && c <= 54) {
29573 r |= c - 49 + 0xa;
29574
29575 // 'A' - 'F'
29576 } else if (c >= 17 && c <= 22) {
29577 r |= c - 17 + 0xa;
29578
29579 // '0' - '9'
29580 } else {
29581 r |= c & 0xf;
29582 }
29583 }
29584 return r;
29585 }
29586
29587 BN.prototype._parseHex = function _parseHex (number, start) {
29588 // Create possibly bigger array to ensure that it fits the number
29589 this.length = Math.ceil((number.length - start) / 6);
29590 this.words = new Array(this.length);
29591 for (var i = 0; i < this.length; i++) {
29592 this.words[i] = 0;
29593 }
29594
29595 var j, w;
29596 // Scan 24-bit chunks and add them to the number
29597 var off = 0;
29598 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29599 w = parseHex(number, i, i + 6);
29600 this.words[j] |= (w << off) & 0x3ffffff;
29601 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29602 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29603 off += 24;
29604 if (off >= 26) {
29605 off -= 26;
29606 j++;
29607 }
29608 }
29609 if (i + 6 !== start) {
29610 w = parseHex(number, start, i + 6);
29611 this.words[j] |= (w << off) & 0x3ffffff;
29612 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29613 }
29614 this.strip();
29615 };
29616
29617 function parseBase (str, start, end, mul) {
29618 var r = 0;
29619 var len = Math.min(str.length, end);
29620 for (var i = start; i < len; i++) {
29621 var c = str.charCodeAt(i) - 48;
29622
29623 r *= mul;
29624
29625 // 'a'
29626 if (c >= 49) {
29627 r += c - 49 + 0xa;
29628
29629 // 'A'
29630 } else if (c >= 17) {
29631 r += c - 17 + 0xa;
29632
29633 // '0' - '9'
29634 } else {
29635 r += c;
29636 }
29637 }
29638 return r;
29639 }
29640
29641 BN.prototype._parseBase = function _parseBase (number, base, start) {
29642 // Initialize as zero
29643 this.words = [ 0 ];
29644 this.length = 1;
29645
29646 // Find length of limb in base
29647 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29648 limbLen++;
29649 }
29650 limbLen--;
29651 limbPow = (limbPow / base) | 0;
29652
29653 var total = number.length - start;
29654 var mod = total % limbLen;
29655 var end = Math.min(total, total - mod) + start;
29656
29657 var word = 0;
29658 for (var i = start; i < end; i += limbLen) {
29659 word = parseBase(number, i, i + limbLen, base);
29660
29661 this.imuln(limbPow);
29662 if (this.words[0] + word < 0x4000000) {
29663 this.words[0] += word;
29664 } else {
29665 this._iaddn(word);
29666 }
29667 }
29668
29669 if (mod !== 0) {
29670 var pow = 1;
29671 word = parseBase(number, i, number.length, base);
29672
29673 for (i = 0; i < mod; i++) {
29674 pow *= base;
29675 }
29676
29677 this.imuln(pow);
29678 if (this.words[0] + word < 0x4000000) {
29679 this.words[0] += word;
29680 } else {
29681 this._iaddn(word);
29682 }
29683 }
29684 };
29685
29686 BN.prototype.copy = function copy (dest) {
29687 dest.words = new Array(this.length);
29688 for (var i = 0; i < this.length; i++) {
29689 dest.words[i] = this.words[i];
29690 }
29691 dest.length = this.length;
29692 dest.negative = this.negative;
29693 dest.red = this.red;
29694 };
29695
29696 BN.prototype.clone = function clone () {
29697 var r = new BN(null);
29698 this.copy(r);
29699 return r;
29700 };
29701
29702 BN.prototype._expand = function _expand (size) {
29703 while (this.length < size) {
29704 this.words[this.length++] = 0;
29705 }
29706 return this;
29707 };
29708
29709 // Remove leading `0` from `this`
29710 BN.prototype.strip = function strip () {
29711 while (this.length > 1 && this.words[this.length - 1] === 0) {
29712 this.length--;
29713 }
29714 return this._normSign();
29715 };
29716
29717 BN.prototype._normSign = function _normSign () {
29718 // -0 = 0
29719 if (this.length === 1 && this.words[0] === 0) {
29720 this.negative = 0;
29721 }
29722 return this;
29723 };
29724
29725 BN.prototype.inspect = function inspect () {
29726 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29727 };
29728
29729 /*
29730
29731 var zeros = [];
29732 var groupSizes = [];
29733 var groupBases = [];
29734
29735 var s = '';
29736 var i = -1;
29737 while (++i < BN.wordSize) {
29738 zeros[i] = s;
29739 s += '0';
29740 }
29741 groupSizes[0] = 0;
29742 groupSizes[1] = 0;
29743 groupBases[0] = 0;
29744 groupBases[1] = 0;
29745 var base = 2 - 1;
29746 while (++base < 36 + 1) {
29747 var groupSize = 0;
29748 var groupBase = 1;
29749 while (groupBase < (1 << BN.wordSize) / base) {
29750 groupBase *= base;
29751 groupSize += 1;
29752 }
29753 groupSizes[base] = groupSize;
29754 groupBases[base] = groupBase;
29755 }
29756
29757 */
29758
29759 var zeros = [
29760 '',
29761 '0',
29762 '00',
29763 '000',
29764 '0000',
29765 '00000',
29766 '000000',
29767 '0000000',
29768 '00000000',
29769 '000000000',
29770 '0000000000',
29771 '00000000000',
29772 '000000000000',
29773 '0000000000000',
29774 '00000000000000',
29775 '000000000000000',
29776 '0000000000000000',
29777 '00000000000000000',
29778 '000000000000000000',
29779 '0000000000000000000',
29780 '00000000000000000000',
29781 '000000000000000000000',
29782 '0000000000000000000000',
29783 '00000000000000000000000',
29784 '000000000000000000000000',
29785 '0000000000000000000000000'
29786 ];
29787
29788 var groupSizes = [
29789 0, 0,
29790 25, 16, 12, 11, 10, 9, 8,
29791 8, 7, 7, 7, 7, 6, 6,
29792 6, 6, 6, 6, 6, 5, 5,
29793 5, 5, 5, 5, 5, 5, 5,
29794 5, 5, 5, 5, 5, 5, 5
29795 ];
29796
29797 var groupBases = [
29798 0, 0,
29799 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29800 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29801 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29802 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29803 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29804 ];
29805
29806 BN.prototype.toString = function toString (base, padding) {
29807 base = base || 10;
29808 padding = padding | 0 || 1;
29809
29810 var out;
29811 if (base === 16 || base === 'hex') {
29812 out = '';
29813 var off = 0;
29814 var carry = 0;
29815 for (var i = 0; i < this.length; i++) {
29816 var w = this.words[i];
29817 var word = (((w << off) | carry) & 0xffffff).toString(16);
29818 carry = (w >>> (24 - off)) & 0xffffff;
29819 if (carry !== 0 || i !== this.length - 1) {
29820 out = zeros[6 - word.length] + word + out;
29821 } else {
29822 out = word + out;
29823 }
29824 off += 2;
29825 if (off >= 26) {
29826 off -= 26;
29827 i--;
29828 }
29829 }
29830 if (carry !== 0) {
29831 out = carry.toString(16) + out;
29832 }
29833 while (out.length % padding !== 0) {
29834 out = '0' + out;
29835 }
29836 if (this.negative !== 0) {
29837 out = '-' + out;
29838 }
29839 return out;
29840 }
29841
29842 if (base === (base | 0) && base >= 2 && base <= 36) {
29843 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29844 var groupSize = groupSizes[base];
29845 // var groupBase = Math.pow(base, groupSize);
29846 var groupBase = groupBases[base];
29847 out = '';
29848 var c = this.clone();
29849 c.negative = 0;
29850 while (!c.isZero()) {
29851 var r = c.modn(groupBase).toString(base);
29852 c = c.idivn(groupBase);
29853
29854 if (!c.isZero()) {
29855 out = zeros[groupSize - r.length] + r + out;
29856 } else {
29857 out = r + out;
29858 }
29859 }
29860 if (this.isZero()) {
29861 out = '0' + out;
29862 }
29863 while (out.length % padding !== 0) {
29864 out = '0' + out;
29865 }
29866 if (this.negative !== 0) {
29867 out = '-' + out;
29868 }
29869 return out;
29870 }
29871
29872 assert(false, 'Base should be between 2 and 36');
29873 };
29874
29875 BN.prototype.toNumber = function toNumber () {
29876 var ret = this.words[0];
29877 if (this.length === 2) {
29878 ret += this.words[1] * 0x4000000;
29879 } else if (this.length === 3 && this.words[2] === 0x01) {
29880 // NOTE: at this stage it is known that the top bit is set
29881 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29882 } else if (this.length > 2) {
29883 assert(false, 'Number can only safely store up to 53 bits');
29884 }
29885 return (this.negative !== 0) ? -ret : ret;
29886 };
29887
29888 BN.prototype.toJSON = function toJSON () {
29889 return this.toString(16);
29890 };
29891
29892 BN.prototype.toBuffer = function toBuffer (endian, length) {
29893 assert(typeof Buffer !== 'undefined');
29894 return this.toArrayLike(Buffer, endian, length);
29895 };
29896
29897 BN.prototype.toArray = function toArray (endian, length) {
29898 return this.toArrayLike(Array, endian, length);
29899 };
29900
29901 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29902 var byteLength = this.byteLength();
29903 var reqLength = length || Math.max(1, byteLength);
29904 assert(byteLength <= reqLength, 'byte array longer than desired length');
29905 assert(reqLength > 0, 'Requested array length <= 0');
29906
29907 this.strip();
29908 var littleEndian = endian === 'le';
29909 var res = new ArrayType(reqLength);
29910
29911 var b, i;
29912 var q = this.clone();
29913 if (!littleEndian) {
29914 // Assume big-endian
29915 for (i = 0; i < reqLength - byteLength; i++) {
29916 res[i] = 0;
29917 }
29918
29919 for (i = 0; !q.isZero(); i++) {
29920 b = q.andln(0xff);
29921 q.iushrn(8);
29922
29923 res[reqLength - i - 1] = b;
29924 }
29925 } else {
29926 for (i = 0; !q.isZero(); i++) {
29927 b = q.andln(0xff);
29928 q.iushrn(8);
29929
29930 res[i] = b;
29931 }
29932
29933 for (; i < reqLength; i++) {
29934 res[i] = 0;
29935 }
29936 }
29937
29938 return res;
29939 };
29940
29941 if (Math.clz32) {
29942 BN.prototype._countBits = function _countBits (w) {
29943 return 32 - Math.clz32(w);
29944 };
29945 } else {
29946 BN.prototype._countBits = function _countBits (w) {
29947 var t = w;
29948 var r = 0;
29949 if (t >= 0x1000) {
29950 r += 13;
29951 t >>>= 13;
29952 }
29953 if (t >= 0x40) {
29954 r += 7;
29955 t >>>= 7;
29956 }
29957 if (t >= 0x8) {
29958 r += 4;
29959 t >>>= 4;
29960 }
29961 if (t >= 0x02) {
29962 r += 2;
29963 t >>>= 2;
29964 }
29965 return r + t;
29966 };
29967 }
29968
29969 BN.prototype._zeroBits = function _zeroBits (w) {
29970 // Short-cut
29971 if (w === 0) return 26;
29972
29973 var t = w;
29974 var r = 0;
29975 if ((t & 0x1fff) === 0) {
29976 r += 13;
29977 t >>>= 13;
29978 }
29979 if ((t & 0x7f) === 0) {
29980 r += 7;
29981 t >>>= 7;
29982 }
29983 if ((t & 0xf) === 0) {
29984 r += 4;
29985 t >>>= 4;
29986 }
29987 if ((t & 0x3) === 0) {
29988 r += 2;
29989 t >>>= 2;
29990 }
29991 if ((t & 0x1) === 0) {
29992 r++;
29993 }
29994 return r;
29995 };
29996
29997 // Return number of used bits in a BN
29998 BN.prototype.bitLength = function bitLength () {
29999 var w = this.words[this.length - 1];
30000 var hi = this._countBits(w);
30001 return (this.length - 1) * 26 + hi;
30002 };
30003
30004 function toBitArray (num) {
30005 var w = new Array(num.bitLength());
30006
30007 for (var bit = 0; bit < w.length; bit++) {
30008 var off = (bit / 26) | 0;
30009 var wbit = bit % 26;
30010
30011 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
30012 }
30013
30014 return w;
30015 }
30016
30017 // Number of trailing zero bits
30018 BN.prototype.zeroBits = function zeroBits () {
30019 if (this.isZero()) return 0;
30020
30021 var r = 0;
30022 for (var i = 0; i < this.length; i++) {
30023 var b = this._zeroBits(this.words[i]);
30024 r += b;
30025 if (b !== 26) break;
30026 }
30027 return r;
30028 };
30029
30030 BN.prototype.byteLength = function byteLength () {
30031 return Math.ceil(this.bitLength() / 8);
30032 };
30033
30034 BN.prototype.toTwos = function toTwos (width) {
30035 if (this.negative !== 0) {
30036 return this.abs().inotn(width).iaddn(1);
30037 }
30038 return this.clone();
30039 };
30040
30041 BN.prototype.fromTwos = function fromTwos (width) {
30042 if (this.testn(width - 1)) {
30043 return this.notn(width).iaddn(1).ineg();
30044 }
30045 return this.clone();
30046 };
30047
30048 BN.prototype.isNeg = function isNeg () {
30049 return this.negative !== 0;
30050 };
30051
30052 // Return negative clone of `this`
30053 BN.prototype.neg = function neg () {
30054 return this.clone().ineg();
30055 };
30056
30057 BN.prototype.ineg = function ineg () {
30058 if (!this.isZero()) {
30059 this.negative ^= 1;
30060 }
30061
30062 return this;
30063 };
30064
30065 // Or `num` with `this` in-place
30066 BN.prototype.iuor = function iuor (num) {
30067 while (this.length < num.length) {
30068 this.words[this.length++] = 0;
30069 }
30070
30071 for (var i = 0; i < num.length; i++) {
30072 this.words[i] = this.words[i] | num.words[i];
30073 }
30074
30075 return this.strip();
30076 };
30077
30078 BN.prototype.ior = function ior (num) {
30079 assert((this.negative | num.negative) === 0);
30080 return this.iuor(num);
30081 };
30082
30083 // Or `num` with `this`
30084 BN.prototype.or = function or (num) {
30085 if (this.length > num.length) return this.clone().ior(num);
30086 return num.clone().ior(this);
30087 };
30088
30089 BN.prototype.uor = function uor (num) {
30090 if (this.length > num.length) return this.clone().iuor(num);
30091 return num.clone().iuor(this);
30092 };
30093
30094 // And `num` with `this` in-place
30095 BN.prototype.iuand = function iuand (num) {
30096 // b = min-length(num, this)
30097 var b;
30098 if (this.length > num.length) {
30099 b = num;
30100 } else {
30101 b = this;
30102 }
30103
30104 for (var i = 0; i < b.length; i++) {
30105 this.words[i] = this.words[i] & num.words[i];
30106 }
30107
30108 this.length = b.length;
30109
30110 return this.strip();
30111 };
30112
30113 BN.prototype.iand = function iand (num) {
30114 assert((this.negative | num.negative) === 0);
30115 return this.iuand(num);
30116 };
30117
30118 // And `num` with `this`
30119 BN.prototype.and = function and (num) {
30120 if (this.length > num.length) return this.clone().iand(num);
30121 return num.clone().iand(this);
30122 };
30123
30124 BN.prototype.uand = function uand (num) {
30125 if (this.length > num.length) return this.clone().iuand(num);
30126 return num.clone().iuand(this);
30127 };
30128
30129 // Xor `num` with `this` in-place
30130 BN.prototype.iuxor = function iuxor (num) {
30131 // a.length > b.length
30132 var a;
30133 var b;
30134 if (this.length > num.length) {
30135 a = this;
30136 b = num;
30137 } else {
30138 a = num;
30139 b = this;
30140 }
30141
30142 for (var i = 0; i < b.length; i++) {
30143 this.words[i] = a.words[i] ^ b.words[i];
30144 }
30145
30146 if (this !== a) {
30147 for (; i < a.length; i++) {
30148 this.words[i] = a.words[i];
30149 }
30150 }
30151
30152 this.length = a.length;
30153
30154 return this.strip();
30155 };
30156
30157 BN.prototype.ixor = function ixor (num) {
30158 assert((this.negative | num.negative) === 0);
30159 return this.iuxor(num);
30160 };
30161
30162 // Xor `num` with `this`
30163 BN.prototype.xor = function xor (num) {
30164 if (this.length > num.length) return this.clone().ixor(num);
30165 return num.clone().ixor(this);
30166 };
30167
30168 BN.prototype.uxor = function uxor (num) {
30169 if (this.length > num.length) return this.clone().iuxor(num);
30170 return num.clone().iuxor(this);
30171 };
30172
30173 // Not ``this`` with ``width`` bitwidth
30174 BN.prototype.inotn = function inotn (width) {
30175 assert(typeof width === 'number' && width >= 0);
30176
30177 var bytesNeeded = Math.ceil(width / 26) | 0;
30178 var bitsLeft = width % 26;
30179
30180 // Extend the buffer with leading zeroes
30181 this._expand(bytesNeeded);
30182
30183 if (bitsLeft > 0) {
30184 bytesNeeded--;
30185 }
30186
30187 // Handle complete words
30188 for (var i = 0; i < bytesNeeded; i++) {
30189 this.words[i] = ~this.words[i] & 0x3ffffff;
30190 }
30191
30192 // Handle the residue
30193 if (bitsLeft > 0) {
30194 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
30195 }
30196
30197 // And remove leading zeroes
30198 return this.strip();
30199 };
30200
30201 BN.prototype.notn = function notn (width) {
30202 return this.clone().inotn(width);
30203 };
30204
30205 // Set `bit` of `this`
30206 BN.prototype.setn = function setn (bit, val) {
30207 assert(typeof bit === 'number' && bit >= 0);
30208
30209 var off = (bit / 26) | 0;
30210 var wbit = bit % 26;
30211
30212 this._expand(off + 1);
30213
30214 if (val) {
30215 this.words[off] = this.words[off] | (1 << wbit);
30216 } else {
30217 this.words[off] = this.words[off] & ~(1 << wbit);
30218 }
30219
30220 return this.strip();
30221 };
30222
30223 // Add `num` to `this` in-place
30224 BN.prototype.iadd = function iadd (num) {
30225 var r;
30226
30227 // negative + positive
30228 if (this.negative !== 0 && num.negative === 0) {
30229 this.negative = 0;
30230 r = this.isub(num);
30231 this.negative ^= 1;
30232 return this._normSign();
30233
30234 // positive + negative
30235 } else if (this.negative === 0 && num.negative !== 0) {
30236 num.negative = 0;
30237 r = this.isub(num);
30238 num.negative = 1;
30239 return r._normSign();
30240 }
30241
30242 // a.length > b.length
30243 var a, b;
30244 if (this.length > num.length) {
30245 a = this;
30246 b = num;
30247 } else {
30248 a = num;
30249 b = this;
30250 }
30251
30252 var carry = 0;
30253 for (var i = 0; i < b.length; i++) {
30254 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30255 this.words[i] = r & 0x3ffffff;
30256 carry = r >>> 26;
30257 }
30258 for (; carry !== 0 && i < a.length; i++) {
30259 r = (a.words[i] | 0) + carry;
30260 this.words[i] = r & 0x3ffffff;
30261 carry = r >>> 26;
30262 }
30263
30264 this.length = a.length;
30265 if (carry !== 0) {
30266 this.words[this.length] = carry;
30267 this.length++;
30268 // Copy the rest of the words
30269 } else if (a !== this) {
30270 for (; i < a.length; i++) {
30271 this.words[i] = a.words[i];
30272 }
30273 }
30274
30275 return this;
30276 };
30277
30278 // Add `num` to `this`
30279 BN.prototype.add = function add (num) {
30280 var res;
30281 if (num.negative !== 0 && this.negative === 0) {
30282 num.negative = 0;
30283 res = this.sub(num);
30284 num.negative ^= 1;
30285 return res;
30286 } else if (num.negative === 0 && this.negative !== 0) {
30287 this.negative = 0;
30288 res = num.sub(this);
30289 this.negative = 1;
30290 return res;
30291 }
30292
30293 if (this.length > num.length) return this.clone().iadd(num);
30294
30295 return num.clone().iadd(this);
30296 };
30297
30298 // Subtract `num` from `this` in-place
30299 BN.prototype.isub = function isub (num) {
30300 // this - (-num) = this + num
30301 if (num.negative !== 0) {
30302 num.negative = 0;
30303 var r = this.iadd(num);
30304 num.negative = 1;
30305 return r._normSign();
30306
30307 // -this - num = -(this + num)
30308 } else if (this.negative !== 0) {
30309 this.negative = 0;
30310 this.iadd(num);
30311 this.negative = 1;
30312 return this._normSign();
30313 }
30314
30315 // At this point both numbers are positive
30316 var cmp = this.cmp(num);
30317
30318 // Optimization - zeroify
30319 if (cmp === 0) {
30320 this.negative = 0;
30321 this.length = 1;
30322 this.words[0] = 0;
30323 return this;
30324 }
30325
30326 // a > b
30327 var a, b;
30328 if (cmp > 0) {
30329 a = this;
30330 b = num;
30331 } else {
30332 a = num;
30333 b = this;
30334 }
30335
30336 var carry = 0;
30337 for (var i = 0; i < b.length; i++) {
30338 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30339 carry = r >> 26;
30340 this.words[i] = r & 0x3ffffff;
30341 }
30342 for (; carry !== 0 && i < a.length; i++) {
30343 r = (a.words[i] | 0) + carry;
30344 carry = r >> 26;
30345 this.words[i] = r & 0x3ffffff;
30346 }
30347
30348 // Copy rest of the words
30349 if (carry === 0 && i < a.length && a !== this) {
30350 for (; i < a.length; i++) {
30351 this.words[i] = a.words[i];
30352 }
30353 }
30354
30355 this.length = Math.max(this.length, i);
30356
30357 if (a !== this) {
30358 this.negative = 1;
30359 }
30360
30361 return this.strip();
30362 };
30363
30364 // Subtract `num` from `this`
30365 BN.prototype.sub = function sub (num) {
30366 return this.clone().isub(num);
30367 };
30368
30369 function smallMulTo (self, num, out) {
30370 out.negative = num.negative ^ self.negative;
30371 var len = (self.length + num.length) | 0;
30372 out.length = len;
30373 len = (len - 1) | 0;
30374
30375 // Peel one iteration (compiler can't do it, because of code complexity)
30376 var a = self.words[0] | 0;
30377 var b = num.words[0] | 0;
30378 var r = a * b;
30379
30380 var lo = r & 0x3ffffff;
30381 var carry = (r / 0x4000000) | 0;
30382 out.words[0] = lo;
30383
30384 for (var k = 1; k < len; k++) {
30385 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30386 // note that ncarry could be >= 0x3ffffff
30387 var ncarry = carry >>> 26;
30388 var rword = carry & 0x3ffffff;
30389 var maxJ = Math.min(k, num.length - 1);
30390 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30391 var i = (k - j) | 0;
30392 a = self.words[i] | 0;
30393 b = num.words[j] | 0;
30394 r = a * b + rword;
30395 ncarry += (r / 0x4000000) | 0;
30396 rword = r & 0x3ffffff;
30397 }
30398 out.words[k] = rword | 0;
30399 carry = ncarry | 0;
30400 }
30401 if (carry !== 0) {
30402 out.words[k] = carry | 0;
30403 } else {
30404 out.length--;
30405 }
30406
30407 return out.strip();
30408 }
30409
30410 // TODO(indutny): it may be reasonable to omit it for users who don't need
30411 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30412 // multiplication (like elliptic secp256k1).
30413 var comb10MulTo = function comb10MulTo (self, num, out) {
30414 var a = self.words;
30415 var b = num.words;
30416 var o = out.words;
30417 var c = 0;
30418 var lo;
30419 var mid;
30420 var hi;
30421 var a0 = a[0] | 0;
30422 var al0 = a0 & 0x1fff;
30423 var ah0 = a0 >>> 13;
30424 var a1 = a[1] | 0;
30425 var al1 = a1 & 0x1fff;
30426 var ah1 = a1 >>> 13;
30427 var a2 = a[2] | 0;
30428 var al2 = a2 & 0x1fff;
30429 var ah2 = a2 >>> 13;
30430 var a3 = a[3] | 0;
30431 var al3 = a3 & 0x1fff;
30432 var ah3 = a3 >>> 13;
30433 var a4 = a[4] | 0;
30434 var al4 = a4 & 0x1fff;
30435 var ah4 = a4 >>> 13;
30436 var a5 = a[5] | 0;
30437 var al5 = a5 & 0x1fff;
30438 var ah5 = a5 >>> 13;
30439 var a6 = a[6] | 0;
30440 var al6 = a6 & 0x1fff;
30441 var ah6 = a6 >>> 13;
30442 var a7 = a[7] | 0;
30443 var al7 = a7 & 0x1fff;
30444 var ah7 = a7 >>> 13;
30445 var a8 = a[8] | 0;
30446 var al8 = a8 & 0x1fff;
30447 var ah8 = a8 >>> 13;
30448 var a9 = a[9] | 0;
30449 var al9 = a9 & 0x1fff;
30450 var ah9 = a9 >>> 13;
30451 var b0 = b[0] | 0;
30452 var bl0 = b0 & 0x1fff;
30453 var bh0 = b0 >>> 13;
30454 var b1 = b[1] | 0;
30455 var bl1 = b1 & 0x1fff;
30456 var bh1 = b1 >>> 13;
30457 var b2 = b[2] | 0;
30458 var bl2 = b2 & 0x1fff;
30459 var bh2 = b2 >>> 13;
30460 var b3 = b[3] | 0;
30461 var bl3 = b3 & 0x1fff;
30462 var bh3 = b3 >>> 13;
30463 var b4 = b[4] | 0;
30464 var bl4 = b4 & 0x1fff;
30465 var bh4 = b4 >>> 13;
30466 var b5 = b[5] | 0;
30467 var bl5 = b5 & 0x1fff;
30468 var bh5 = b5 >>> 13;
30469 var b6 = b[6] | 0;
30470 var bl6 = b6 & 0x1fff;
30471 var bh6 = b6 >>> 13;
30472 var b7 = b[7] | 0;
30473 var bl7 = b7 & 0x1fff;
30474 var bh7 = b7 >>> 13;
30475 var b8 = b[8] | 0;
30476 var bl8 = b8 & 0x1fff;
30477 var bh8 = b8 >>> 13;
30478 var b9 = b[9] | 0;
30479 var bl9 = b9 & 0x1fff;
30480 var bh9 = b9 >>> 13;
30481
30482 out.negative = self.negative ^ num.negative;
30483 out.length = 19;
30484 /* k = 0 */
30485 lo = Math.imul(al0, bl0);
30486 mid = Math.imul(al0, bh0);
30487 mid = (mid + Math.imul(ah0, bl0)) | 0;
30488 hi = Math.imul(ah0, bh0);
30489 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30490 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30491 w0 &= 0x3ffffff;
30492 /* k = 1 */
30493 lo = Math.imul(al1, bl0);
30494 mid = Math.imul(al1, bh0);
30495 mid = (mid + Math.imul(ah1, bl0)) | 0;
30496 hi = Math.imul(ah1, bh0);
30497 lo = (lo + Math.imul(al0, bl1)) | 0;
30498 mid = (mid + Math.imul(al0, bh1)) | 0;
30499 mid = (mid + Math.imul(ah0, bl1)) | 0;
30500 hi = (hi + Math.imul(ah0, bh1)) | 0;
30501 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30502 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30503 w1 &= 0x3ffffff;
30504 /* k = 2 */
30505 lo = Math.imul(al2, bl0);
30506 mid = Math.imul(al2, bh0);
30507 mid = (mid + Math.imul(ah2, bl0)) | 0;
30508 hi = Math.imul(ah2, bh0);
30509 lo = (lo + Math.imul(al1, bl1)) | 0;
30510 mid = (mid + Math.imul(al1, bh1)) | 0;
30511 mid = (mid + Math.imul(ah1, bl1)) | 0;
30512 hi = (hi + Math.imul(ah1, bh1)) | 0;
30513 lo = (lo + Math.imul(al0, bl2)) | 0;
30514 mid = (mid + Math.imul(al0, bh2)) | 0;
30515 mid = (mid + Math.imul(ah0, bl2)) | 0;
30516 hi = (hi + Math.imul(ah0, bh2)) | 0;
30517 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30518 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30519 w2 &= 0x3ffffff;
30520 /* k = 3 */
30521 lo = Math.imul(al3, bl0);
30522 mid = Math.imul(al3, bh0);
30523 mid = (mid + Math.imul(ah3, bl0)) | 0;
30524 hi = Math.imul(ah3, bh0);
30525 lo = (lo + Math.imul(al2, bl1)) | 0;
30526 mid = (mid + Math.imul(al2, bh1)) | 0;
30527 mid = (mid + Math.imul(ah2, bl1)) | 0;
30528 hi = (hi + Math.imul(ah2, bh1)) | 0;
30529 lo = (lo + Math.imul(al1, bl2)) | 0;
30530 mid = (mid + Math.imul(al1, bh2)) | 0;
30531 mid = (mid + Math.imul(ah1, bl2)) | 0;
30532 hi = (hi + Math.imul(ah1, bh2)) | 0;
30533 lo = (lo + Math.imul(al0, bl3)) | 0;
30534 mid = (mid + Math.imul(al0, bh3)) | 0;
30535 mid = (mid + Math.imul(ah0, bl3)) | 0;
30536 hi = (hi + Math.imul(ah0, bh3)) | 0;
30537 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30538 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30539 w3 &= 0x3ffffff;
30540 /* k = 4 */
30541 lo = Math.imul(al4, bl0);
30542 mid = Math.imul(al4, bh0);
30543 mid = (mid + Math.imul(ah4, bl0)) | 0;
30544 hi = Math.imul(ah4, bh0);
30545 lo = (lo + Math.imul(al3, bl1)) | 0;
30546 mid = (mid + Math.imul(al3, bh1)) | 0;
30547 mid = (mid + Math.imul(ah3, bl1)) | 0;
30548 hi = (hi + Math.imul(ah3, bh1)) | 0;
30549 lo = (lo + Math.imul(al2, bl2)) | 0;
30550 mid = (mid + Math.imul(al2, bh2)) | 0;
30551 mid = (mid + Math.imul(ah2, bl2)) | 0;
30552 hi = (hi + Math.imul(ah2, bh2)) | 0;
30553 lo = (lo + Math.imul(al1, bl3)) | 0;
30554 mid = (mid + Math.imul(al1, bh3)) | 0;
30555 mid = (mid + Math.imul(ah1, bl3)) | 0;
30556 hi = (hi + Math.imul(ah1, bh3)) | 0;
30557 lo = (lo + Math.imul(al0, bl4)) | 0;
30558 mid = (mid + Math.imul(al0, bh4)) | 0;
30559 mid = (mid + Math.imul(ah0, bl4)) | 0;
30560 hi = (hi + Math.imul(ah0, bh4)) | 0;
30561 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30562 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30563 w4 &= 0x3ffffff;
30564 /* k = 5 */
30565 lo = Math.imul(al5, bl0);
30566 mid = Math.imul(al5, bh0);
30567 mid = (mid + Math.imul(ah5, bl0)) | 0;
30568 hi = Math.imul(ah5, bh0);
30569 lo = (lo + Math.imul(al4, bl1)) | 0;
30570 mid = (mid + Math.imul(al4, bh1)) | 0;
30571 mid = (mid + Math.imul(ah4, bl1)) | 0;
30572 hi = (hi + Math.imul(ah4, bh1)) | 0;
30573 lo = (lo + Math.imul(al3, bl2)) | 0;
30574 mid = (mid + Math.imul(al3, bh2)) | 0;
30575 mid = (mid + Math.imul(ah3, bl2)) | 0;
30576 hi = (hi + Math.imul(ah3, bh2)) | 0;
30577 lo = (lo + Math.imul(al2, bl3)) | 0;
30578 mid = (mid + Math.imul(al2, bh3)) | 0;
30579 mid = (mid + Math.imul(ah2, bl3)) | 0;
30580 hi = (hi + Math.imul(ah2, bh3)) | 0;
30581 lo = (lo + Math.imul(al1, bl4)) | 0;
30582 mid = (mid + Math.imul(al1, bh4)) | 0;
30583 mid = (mid + Math.imul(ah1, bl4)) | 0;
30584 hi = (hi + Math.imul(ah1, bh4)) | 0;
30585 lo = (lo + Math.imul(al0, bl5)) | 0;
30586 mid = (mid + Math.imul(al0, bh5)) | 0;
30587 mid = (mid + Math.imul(ah0, bl5)) | 0;
30588 hi = (hi + Math.imul(ah0, bh5)) | 0;
30589 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30590 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30591 w5 &= 0x3ffffff;
30592 /* k = 6 */
30593 lo = Math.imul(al6, bl0);
30594 mid = Math.imul(al6, bh0);
30595 mid = (mid + Math.imul(ah6, bl0)) | 0;
30596 hi = Math.imul(ah6, bh0);
30597 lo = (lo + Math.imul(al5, bl1)) | 0;
30598 mid = (mid + Math.imul(al5, bh1)) | 0;
30599 mid = (mid + Math.imul(ah5, bl1)) | 0;
30600 hi = (hi + Math.imul(ah5, bh1)) | 0;
30601 lo = (lo + Math.imul(al4, bl2)) | 0;
30602 mid = (mid + Math.imul(al4, bh2)) | 0;
30603 mid = (mid + Math.imul(ah4, bl2)) | 0;
30604 hi = (hi + Math.imul(ah4, bh2)) | 0;
30605 lo = (lo + Math.imul(al3, bl3)) | 0;
30606 mid = (mid + Math.imul(al3, bh3)) | 0;
30607 mid = (mid + Math.imul(ah3, bl3)) | 0;
30608 hi = (hi + Math.imul(ah3, bh3)) | 0;
30609 lo = (lo + Math.imul(al2, bl4)) | 0;
30610 mid = (mid + Math.imul(al2, bh4)) | 0;
30611 mid = (mid + Math.imul(ah2, bl4)) | 0;
30612 hi = (hi + Math.imul(ah2, bh4)) | 0;
30613 lo = (lo + Math.imul(al1, bl5)) | 0;
30614 mid = (mid + Math.imul(al1, bh5)) | 0;
30615 mid = (mid + Math.imul(ah1, bl5)) | 0;
30616 hi = (hi + Math.imul(ah1, bh5)) | 0;
30617 lo = (lo + Math.imul(al0, bl6)) | 0;
30618 mid = (mid + Math.imul(al0, bh6)) | 0;
30619 mid = (mid + Math.imul(ah0, bl6)) | 0;
30620 hi = (hi + Math.imul(ah0, bh6)) | 0;
30621 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30622 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30623 w6 &= 0x3ffffff;
30624 /* k = 7 */
30625 lo = Math.imul(al7, bl0);
30626 mid = Math.imul(al7, bh0);
30627 mid = (mid + Math.imul(ah7, bl0)) | 0;
30628 hi = Math.imul(ah7, bh0);
30629 lo = (lo + Math.imul(al6, bl1)) | 0;
30630 mid = (mid + Math.imul(al6, bh1)) | 0;
30631 mid = (mid + Math.imul(ah6, bl1)) | 0;
30632 hi = (hi + Math.imul(ah6, bh1)) | 0;
30633 lo = (lo + Math.imul(al5, bl2)) | 0;
30634 mid = (mid + Math.imul(al5, bh2)) | 0;
30635 mid = (mid + Math.imul(ah5, bl2)) | 0;
30636 hi = (hi + Math.imul(ah5, bh2)) | 0;
30637 lo = (lo + Math.imul(al4, bl3)) | 0;
30638 mid = (mid + Math.imul(al4, bh3)) | 0;
30639 mid = (mid + Math.imul(ah4, bl3)) | 0;
30640 hi = (hi + Math.imul(ah4, bh3)) | 0;
30641 lo = (lo + Math.imul(al3, bl4)) | 0;
30642 mid = (mid + Math.imul(al3, bh4)) | 0;
30643 mid = (mid + Math.imul(ah3, bl4)) | 0;
30644 hi = (hi + Math.imul(ah3, bh4)) | 0;
30645 lo = (lo + Math.imul(al2, bl5)) | 0;
30646 mid = (mid + Math.imul(al2, bh5)) | 0;
30647 mid = (mid + Math.imul(ah2, bl5)) | 0;
30648 hi = (hi + Math.imul(ah2, bh5)) | 0;
30649 lo = (lo + Math.imul(al1, bl6)) | 0;
30650 mid = (mid + Math.imul(al1, bh6)) | 0;
30651 mid = (mid + Math.imul(ah1, bl6)) | 0;
30652 hi = (hi + Math.imul(ah1, bh6)) | 0;
30653 lo = (lo + Math.imul(al0, bl7)) | 0;
30654 mid = (mid + Math.imul(al0, bh7)) | 0;
30655 mid = (mid + Math.imul(ah0, bl7)) | 0;
30656 hi = (hi + Math.imul(ah0, bh7)) | 0;
30657 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30658 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30659 w7 &= 0x3ffffff;
30660 /* k = 8 */
30661 lo = Math.imul(al8, bl0);
30662 mid = Math.imul(al8, bh0);
30663 mid = (mid + Math.imul(ah8, bl0)) | 0;
30664 hi = Math.imul(ah8, bh0);
30665 lo = (lo + Math.imul(al7, bl1)) | 0;
30666 mid = (mid + Math.imul(al7, bh1)) | 0;
30667 mid = (mid + Math.imul(ah7, bl1)) | 0;
30668 hi = (hi + Math.imul(ah7, bh1)) | 0;
30669 lo = (lo + Math.imul(al6, bl2)) | 0;
30670 mid = (mid + Math.imul(al6, bh2)) | 0;
30671 mid = (mid + Math.imul(ah6, bl2)) | 0;
30672 hi = (hi + Math.imul(ah6, bh2)) | 0;
30673 lo = (lo + Math.imul(al5, bl3)) | 0;
30674 mid = (mid + Math.imul(al5, bh3)) | 0;
30675 mid = (mid + Math.imul(ah5, bl3)) | 0;
30676 hi = (hi + Math.imul(ah5, bh3)) | 0;
30677 lo = (lo + Math.imul(al4, bl4)) | 0;
30678 mid = (mid + Math.imul(al4, bh4)) | 0;
30679 mid = (mid + Math.imul(ah4, bl4)) | 0;
30680 hi = (hi + Math.imul(ah4, bh4)) | 0;
30681 lo = (lo + Math.imul(al3, bl5)) | 0;
30682 mid = (mid + Math.imul(al3, bh5)) | 0;
30683 mid = (mid + Math.imul(ah3, bl5)) | 0;
30684 hi = (hi + Math.imul(ah3, bh5)) | 0;
30685 lo = (lo + Math.imul(al2, bl6)) | 0;
30686 mid = (mid + Math.imul(al2, bh6)) | 0;
30687 mid = (mid + Math.imul(ah2, bl6)) | 0;
30688 hi = (hi + Math.imul(ah2, bh6)) | 0;
30689 lo = (lo + Math.imul(al1, bl7)) | 0;
30690 mid = (mid + Math.imul(al1, bh7)) | 0;
30691 mid = (mid + Math.imul(ah1, bl7)) | 0;
30692 hi = (hi + Math.imul(ah1, bh7)) | 0;
30693 lo = (lo + Math.imul(al0, bl8)) | 0;
30694 mid = (mid + Math.imul(al0, bh8)) | 0;
30695 mid = (mid + Math.imul(ah0, bl8)) | 0;
30696 hi = (hi + Math.imul(ah0, bh8)) | 0;
30697 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30698 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30699 w8 &= 0x3ffffff;
30700 /* k = 9 */
30701 lo = Math.imul(al9, bl0);
30702 mid = Math.imul(al9, bh0);
30703 mid = (mid + Math.imul(ah9, bl0)) | 0;
30704 hi = Math.imul(ah9, bh0);
30705 lo = (lo + Math.imul(al8, bl1)) | 0;
30706 mid = (mid + Math.imul(al8, bh1)) | 0;
30707 mid = (mid + Math.imul(ah8, bl1)) | 0;
30708 hi = (hi + Math.imul(ah8, bh1)) | 0;
30709 lo = (lo + Math.imul(al7, bl2)) | 0;
30710 mid = (mid + Math.imul(al7, bh2)) | 0;
30711 mid = (mid + Math.imul(ah7, bl2)) | 0;
30712 hi = (hi + Math.imul(ah7, bh2)) | 0;
30713 lo = (lo + Math.imul(al6, bl3)) | 0;
30714 mid = (mid + Math.imul(al6, bh3)) | 0;
30715 mid = (mid + Math.imul(ah6, bl3)) | 0;
30716 hi = (hi + Math.imul(ah6, bh3)) | 0;
30717 lo = (lo + Math.imul(al5, bl4)) | 0;
30718 mid = (mid + Math.imul(al5, bh4)) | 0;
30719 mid = (mid + Math.imul(ah5, bl4)) | 0;
30720 hi = (hi + Math.imul(ah5, bh4)) | 0;
30721 lo = (lo + Math.imul(al4, bl5)) | 0;
30722 mid = (mid + Math.imul(al4, bh5)) | 0;
30723 mid = (mid + Math.imul(ah4, bl5)) | 0;
30724 hi = (hi + Math.imul(ah4, bh5)) | 0;
30725 lo = (lo + Math.imul(al3, bl6)) | 0;
30726 mid = (mid + Math.imul(al3, bh6)) | 0;
30727 mid = (mid + Math.imul(ah3, bl6)) | 0;
30728 hi = (hi + Math.imul(ah3, bh6)) | 0;
30729 lo = (lo + Math.imul(al2, bl7)) | 0;
30730 mid = (mid + Math.imul(al2, bh7)) | 0;
30731 mid = (mid + Math.imul(ah2, bl7)) | 0;
30732 hi = (hi + Math.imul(ah2, bh7)) | 0;
30733 lo = (lo + Math.imul(al1, bl8)) | 0;
30734 mid = (mid + Math.imul(al1, bh8)) | 0;
30735 mid = (mid + Math.imul(ah1, bl8)) | 0;
30736 hi = (hi + Math.imul(ah1, bh8)) | 0;
30737 lo = (lo + Math.imul(al0, bl9)) | 0;
30738 mid = (mid + Math.imul(al0, bh9)) | 0;
30739 mid = (mid + Math.imul(ah0, bl9)) | 0;
30740 hi = (hi + Math.imul(ah0, bh9)) | 0;
30741 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30742 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30743 w9 &= 0x3ffffff;
30744 /* k = 10 */
30745 lo = Math.imul(al9, bl1);
30746 mid = Math.imul(al9, bh1);
30747 mid = (mid + Math.imul(ah9, bl1)) | 0;
30748 hi = Math.imul(ah9, bh1);
30749 lo = (lo + Math.imul(al8, bl2)) | 0;
30750 mid = (mid + Math.imul(al8, bh2)) | 0;
30751 mid = (mid + Math.imul(ah8, bl2)) | 0;
30752 hi = (hi + Math.imul(ah8, bh2)) | 0;
30753 lo = (lo + Math.imul(al7, bl3)) | 0;
30754 mid = (mid + Math.imul(al7, bh3)) | 0;
30755 mid = (mid + Math.imul(ah7, bl3)) | 0;
30756 hi = (hi + Math.imul(ah7, bh3)) | 0;
30757 lo = (lo + Math.imul(al6, bl4)) | 0;
30758 mid = (mid + Math.imul(al6, bh4)) | 0;
30759 mid = (mid + Math.imul(ah6, bl4)) | 0;
30760 hi = (hi + Math.imul(ah6, bh4)) | 0;
30761 lo = (lo + Math.imul(al5, bl5)) | 0;
30762 mid = (mid + Math.imul(al5, bh5)) | 0;
30763 mid = (mid + Math.imul(ah5, bl5)) | 0;
30764 hi = (hi + Math.imul(ah5, bh5)) | 0;
30765 lo = (lo + Math.imul(al4, bl6)) | 0;
30766 mid = (mid + Math.imul(al4, bh6)) | 0;
30767 mid = (mid + Math.imul(ah4, bl6)) | 0;
30768 hi = (hi + Math.imul(ah4, bh6)) | 0;
30769 lo = (lo + Math.imul(al3, bl7)) | 0;
30770 mid = (mid + Math.imul(al3, bh7)) | 0;
30771 mid = (mid + Math.imul(ah3, bl7)) | 0;
30772 hi = (hi + Math.imul(ah3, bh7)) | 0;
30773 lo = (lo + Math.imul(al2, bl8)) | 0;
30774 mid = (mid + Math.imul(al2, bh8)) | 0;
30775 mid = (mid + Math.imul(ah2, bl8)) | 0;
30776 hi = (hi + Math.imul(ah2, bh8)) | 0;
30777 lo = (lo + Math.imul(al1, bl9)) | 0;
30778 mid = (mid + Math.imul(al1, bh9)) | 0;
30779 mid = (mid + Math.imul(ah1, bl9)) | 0;
30780 hi = (hi + Math.imul(ah1, bh9)) | 0;
30781 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30782 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30783 w10 &= 0x3ffffff;
30784 /* k = 11 */
30785 lo = Math.imul(al9, bl2);
30786 mid = Math.imul(al9, bh2);
30787 mid = (mid + Math.imul(ah9, bl2)) | 0;
30788 hi = Math.imul(ah9, bh2);
30789 lo = (lo + Math.imul(al8, bl3)) | 0;
30790 mid = (mid + Math.imul(al8, bh3)) | 0;
30791 mid = (mid + Math.imul(ah8, bl3)) | 0;
30792 hi = (hi + Math.imul(ah8, bh3)) | 0;
30793 lo = (lo + Math.imul(al7, bl4)) | 0;
30794 mid = (mid + Math.imul(al7, bh4)) | 0;
30795 mid = (mid + Math.imul(ah7, bl4)) | 0;
30796 hi = (hi + Math.imul(ah7, bh4)) | 0;
30797 lo = (lo + Math.imul(al6, bl5)) | 0;
30798 mid = (mid + Math.imul(al6, bh5)) | 0;
30799 mid = (mid + Math.imul(ah6, bl5)) | 0;
30800 hi = (hi + Math.imul(ah6, bh5)) | 0;
30801 lo = (lo + Math.imul(al5, bl6)) | 0;
30802 mid = (mid + Math.imul(al5, bh6)) | 0;
30803 mid = (mid + Math.imul(ah5, bl6)) | 0;
30804 hi = (hi + Math.imul(ah5, bh6)) | 0;
30805 lo = (lo + Math.imul(al4, bl7)) | 0;
30806 mid = (mid + Math.imul(al4, bh7)) | 0;
30807 mid = (mid + Math.imul(ah4, bl7)) | 0;
30808 hi = (hi + Math.imul(ah4, bh7)) | 0;
30809 lo = (lo + Math.imul(al3, bl8)) | 0;
30810 mid = (mid + Math.imul(al3, bh8)) | 0;
30811 mid = (mid + Math.imul(ah3, bl8)) | 0;
30812 hi = (hi + Math.imul(ah3, bh8)) | 0;
30813 lo = (lo + Math.imul(al2, bl9)) | 0;
30814 mid = (mid + Math.imul(al2, bh9)) | 0;
30815 mid = (mid + Math.imul(ah2, bl9)) | 0;
30816 hi = (hi + Math.imul(ah2, bh9)) | 0;
30817 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30818 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30819 w11 &= 0x3ffffff;
30820 /* k = 12 */
30821 lo = Math.imul(al9, bl3);
30822 mid = Math.imul(al9, bh3);
30823 mid = (mid + Math.imul(ah9, bl3)) | 0;
30824 hi = Math.imul(ah9, bh3);
30825 lo = (lo + Math.imul(al8, bl4)) | 0;
30826 mid = (mid + Math.imul(al8, bh4)) | 0;
30827 mid = (mid + Math.imul(ah8, bl4)) | 0;
30828 hi = (hi + Math.imul(ah8, bh4)) | 0;
30829 lo = (lo + Math.imul(al7, bl5)) | 0;
30830 mid = (mid + Math.imul(al7, bh5)) | 0;
30831 mid = (mid + Math.imul(ah7, bl5)) | 0;
30832 hi = (hi + Math.imul(ah7, bh5)) | 0;
30833 lo = (lo + Math.imul(al6, bl6)) | 0;
30834 mid = (mid + Math.imul(al6, bh6)) | 0;
30835 mid = (mid + Math.imul(ah6, bl6)) | 0;
30836 hi = (hi + Math.imul(ah6, bh6)) | 0;
30837 lo = (lo + Math.imul(al5, bl7)) | 0;
30838 mid = (mid + Math.imul(al5, bh7)) | 0;
30839 mid = (mid + Math.imul(ah5, bl7)) | 0;
30840 hi = (hi + Math.imul(ah5, bh7)) | 0;
30841 lo = (lo + Math.imul(al4, bl8)) | 0;
30842 mid = (mid + Math.imul(al4, bh8)) | 0;
30843 mid = (mid + Math.imul(ah4, bl8)) | 0;
30844 hi = (hi + Math.imul(ah4, bh8)) | 0;
30845 lo = (lo + Math.imul(al3, bl9)) | 0;
30846 mid = (mid + Math.imul(al3, bh9)) | 0;
30847 mid = (mid + Math.imul(ah3, bl9)) | 0;
30848 hi = (hi + Math.imul(ah3, bh9)) | 0;
30849 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30850 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30851 w12 &= 0x3ffffff;
30852 /* k = 13 */
30853 lo = Math.imul(al9, bl4);
30854 mid = Math.imul(al9, bh4);
30855 mid = (mid + Math.imul(ah9, bl4)) | 0;
30856 hi = Math.imul(ah9, bh4);
30857 lo = (lo + Math.imul(al8, bl5)) | 0;
30858 mid = (mid + Math.imul(al8, bh5)) | 0;
30859 mid = (mid + Math.imul(ah8, bl5)) | 0;
30860 hi = (hi + Math.imul(ah8, bh5)) | 0;
30861 lo = (lo + Math.imul(al7, bl6)) | 0;
30862 mid = (mid + Math.imul(al7, bh6)) | 0;
30863 mid = (mid + Math.imul(ah7, bl6)) | 0;
30864 hi = (hi + Math.imul(ah7, bh6)) | 0;
30865 lo = (lo + Math.imul(al6, bl7)) | 0;
30866 mid = (mid + Math.imul(al6, bh7)) | 0;
30867 mid = (mid + Math.imul(ah6, bl7)) | 0;
30868 hi = (hi + Math.imul(ah6, bh7)) | 0;
30869 lo = (lo + Math.imul(al5, bl8)) | 0;
30870 mid = (mid + Math.imul(al5, bh8)) | 0;
30871 mid = (mid + Math.imul(ah5, bl8)) | 0;
30872 hi = (hi + Math.imul(ah5, bh8)) | 0;
30873 lo = (lo + Math.imul(al4, bl9)) | 0;
30874 mid = (mid + Math.imul(al4, bh9)) | 0;
30875 mid = (mid + Math.imul(ah4, bl9)) | 0;
30876 hi = (hi + Math.imul(ah4, bh9)) | 0;
30877 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30878 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30879 w13 &= 0x3ffffff;
30880 /* k = 14 */
30881 lo = Math.imul(al9, bl5);
30882 mid = Math.imul(al9, bh5);
30883 mid = (mid + Math.imul(ah9, bl5)) | 0;
30884 hi = Math.imul(ah9, bh5);
30885 lo = (lo + Math.imul(al8, bl6)) | 0;
30886 mid = (mid + Math.imul(al8, bh6)) | 0;
30887 mid = (mid + Math.imul(ah8, bl6)) | 0;
30888 hi = (hi + Math.imul(ah8, bh6)) | 0;
30889 lo = (lo + Math.imul(al7, bl7)) | 0;
30890 mid = (mid + Math.imul(al7, bh7)) | 0;
30891 mid = (mid + Math.imul(ah7, bl7)) | 0;
30892 hi = (hi + Math.imul(ah7, bh7)) | 0;
30893 lo = (lo + Math.imul(al6, bl8)) | 0;
30894 mid = (mid + Math.imul(al6, bh8)) | 0;
30895 mid = (mid + Math.imul(ah6, bl8)) | 0;
30896 hi = (hi + Math.imul(ah6, bh8)) | 0;
30897 lo = (lo + Math.imul(al5, bl9)) | 0;
30898 mid = (mid + Math.imul(al5, bh9)) | 0;
30899 mid = (mid + Math.imul(ah5, bl9)) | 0;
30900 hi = (hi + Math.imul(ah5, bh9)) | 0;
30901 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30902 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30903 w14 &= 0x3ffffff;
30904 /* k = 15 */
30905 lo = Math.imul(al9, bl6);
30906 mid = Math.imul(al9, bh6);
30907 mid = (mid + Math.imul(ah9, bl6)) | 0;
30908 hi = Math.imul(ah9, bh6);
30909 lo = (lo + Math.imul(al8, bl7)) | 0;
30910 mid = (mid + Math.imul(al8, bh7)) | 0;
30911 mid = (mid + Math.imul(ah8, bl7)) | 0;
30912 hi = (hi + Math.imul(ah8, bh7)) | 0;
30913 lo = (lo + Math.imul(al7, bl8)) | 0;
30914 mid = (mid + Math.imul(al7, bh8)) | 0;
30915 mid = (mid + Math.imul(ah7, bl8)) | 0;
30916 hi = (hi + Math.imul(ah7, bh8)) | 0;
30917 lo = (lo + Math.imul(al6, bl9)) | 0;
30918 mid = (mid + Math.imul(al6, bh9)) | 0;
30919 mid = (mid + Math.imul(ah6, bl9)) | 0;
30920 hi = (hi + Math.imul(ah6, bh9)) | 0;
30921 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30922 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30923 w15 &= 0x3ffffff;
30924 /* k = 16 */
30925 lo = Math.imul(al9, bl7);
30926 mid = Math.imul(al9, bh7);
30927 mid = (mid + Math.imul(ah9, bl7)) | 0;
30928 hi = Math.imul(ah9, bh7);
30929 lo = (lo + Math.imul(al8, bl8)) | 0;
30930 mid = (mid + Math.imul(al8, bh8)) | 0;
30931 mid = (mid + Math.imul(ah8, bl8)) | 0;
30932 hi = (hi + Math.imul(ah8, bh8)) | 0;
30933 lo = (lo + Math.imul(al7, bl9)) | 0;
30934 mid = (mid + Math.imul(al7, bh9)) | 0;
30935 mid = (mid + Math.imul(ah7, bl9)) | 0;
30936 hi = (hi + Math.imul(ah7, bh9)) | 0;
30937 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30938 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30939 w16 &= 0x3ffffff;
30940 /* k = 17 */
30941 lo = Math.imul(al9, bl8);
30942 mid = Math.imul(al9, bh8);
30943 mid = (mid + Math.imul(ah9, bl8)) | 0;
30944 hi = Math.imul(ah9, bh8);
30945 lo = (lo + Math.imul(al8, bl9)) | 0;
30946 mid = (mid + Math.imul(al8, bh9)) | 0;
30947 mid = (mid + Math.imul(ah8, bl9)) | 0;
30948 hi = (hi + Math.imul(ah8, bh9)) | 0;
30949 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30950 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30951 w17 &= 0x3ffffff;
30952 /* k = 18 */
30953 lo = Math.imul(al9, bl9);
30954 mid = Math.imul(al9, bh9);
30955 mid = (mid + Math.imul(ah9, bl9)) | 0;
30956 hi = Math.imul(ah9, bh9);
30957 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30958 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30959 w18 &= 0x3ffffff;
30960 o[0] = w0;
30961 o[1] = w1;
30962 o[2] = w2;
30963 o[3] = w3;
30964 o[4] = w4;
30965 o[5] = w5;
30966 o[6] = w6;
30967 o[7] = w7;
30968 o[8] = w8;
30969 o[9] = w9;
30970 o[10] = w10;
30971 o[11] = w11;
30972 o[12] = w12;
30973 o[13] = w13;
30974 o[14] = w14;
30975 o[15] = w15;
30976 o[16] = w16;
30977 o[17] = w17;
30978 o[18] = w18;
30979 if (c !== 0) {
30980 o[19] = c;
30981 out.length++;
30982 }
30983 return out;
30984 };
30985
30986 // Polyfill comb
30987 if (!Math.imul) {
30988 comb10MulTo = smallMulTo;
30989 }
30990
30991 function bigMulTo (self, num, out) {
30992 out.negative = num.negative ^ self.negative;
30993 out.length = self.length + num.length;
30994
30995 var carry = 0;
30996 var hncarry = 0;
30997 for (var k = 0; k < out.length - 1; k++) {
30998 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30999 // note that ncarry could be >= 0x3ffffff
31000 var ncarry = hncarry;
31001 hncarry = 0;
31002 var rword = carry & 0x3ffffff;
31003 var maxJ = Math.min(k, num.length - 1);
31004 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
31005 var i = k - j;
31006 var a = self.words[i] | 0;
31007 var b = num.words[j] | 0;
31008 var r = a * b;
31009
31010 var lo = r & 0x3ffffff;
31011 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
31012 lo = (lo + rword) | 0;
31013 rword = lo & 0x3ffffff;
31014 ncarry = (ncarry + (lo >>> 26)) | 0;
31015
31016 hncarry += ncarry >>> 26;
31017 ncarry &= 0x3ffffff;
31018 }
31019 out.words[k] = rword;
31020 carry = ncarry;
31021 ncarry = hncarry;
31022 }
31023 if (carry !== 0) {
31024 out.words[k] = carry;
31025 } else {
31026 out.length--;
31027 }
31028
31029 return out.strip();
31030 }
31031
31032 function jumboMulTo (self, num, out) {
31033 var fftm = new FFTM();
31034 return fftm.mulp(self, num, out);
31035 }
31036
31037 BN.prototype.mulTo = function mulTo (num, out) {
31038 var res;
31039 var len = this.length + num.length;
31040 if (this.length === 10 && num.length === 10) {
31041 res = comb10MulTo(this, num, out);
31042 } else if (len < 63) {
31043 res = smallMulTo(this, num, out);
31044 } else if (len < 1024) {
31045 res = bigMulTo(this, num, out);
31046 } else {
31047 res = jumboMulTo(this, num, out);
31048 }
31049
31050 return res;
31051 };
31052
31053 // Cooley-Tukey algorithm for FFT
31054 // slightly revisited to rely on looping instead of recursion
31055
31056 function FFTM (x, y) {
31057 this.x = x;
31058 this.y = y;
31059 }
31060
31061 FFTM.prototype.makeRBT = function makeRBT (N) {
31062 var t = new Array(N);
31063 var l = BN.prototype._countBits(N) - 1;
31064 for (var i = 0; i < N; i++) {
31065 t[i] = this.revBin(i, l, N);
31066 }
31067
31068 return t;
31069 };
31070
31071 // Returns binary-reversed representation of `x`
31072 FFTM.prototype.revBin = function revBin (x, l, N) {
31073 if (x === 0 || x === N - 1) return x;
31074
31075 var rb = 0;
31076 for (var i = 0; i < l; i++) {
31077 rb |= (x & 1) << (l - i - 1);
31078 x >>= 1;
31079 }
31080
31081 return rb;
31082 };
31083
31084 // Performs "tweedling" phase, therefore 'emulating'
31085 // behaviour of the recursive algorithm
31086 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
31087 for (var i = 0; i < N; i++) {
31088 rtws[i] = rws[rbt[i]];
31089 itws[i] = iws[rbt[i]];
31090 }
31091 };
31092
31093 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
31094 this.permute(rbt, rws, iws, rtws, itws, N);
31095
31096 for (var s = 1; s < N; s <<= 1) {
31097 var l = s << 1;
31098
31099 var rtwdf = Math.cos(2 * Math.PI / l);
31100 var itwdf = Math.sin(2 * Math.PI / l);
31101
31102 for (var p = 0; p < N; p += l) {
31103 var rtwdf_ = rtwdf;
31104 var itwdf_ = itwdf;
31105
31106 for (var j = 0; j < s; j++) {
31107 var re = rtws[p + j];
31108 var ie = itws[p + j];
31109
31110 var ro = rtws[p + j + s];
31111 var io = itws[p + j + s];
31112
31113 var rx = rtwdf_ * ro - itwdf_ * io;
31114
31115 io = rtwdf_ * io + itwdf_ * ro;
31116 ro = rx;
31117
31118 rtws[p + j] = re + ro;
31119 itws[p + j] = ie + io;
31120
31121 rtws[p + j + s] = re - ro;
31122 itws[p + j + s] = ie - io;
31123
31124 /* jshint maxdepth : false */
31125 if (j !== l) {
31126 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
31127
31128 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
31129 rtwdf_ = rx;
31130 }
31131 }
31132 }
31133 }
31134 };
31135
31136 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
31137 var N = Math.max(m, n) | 1;
31138 var odd = N & 1;
31139 var i = 0;
31140 for (N = N / 2 | 0; N; N = N >>> 1) {
31141 i++;
31142 }
31143
31144 return 1 << i + 1 + odd;
31145 };
31146
31147 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31148 if (N <= 1) return;
31149
31150 for (var i = 0; i < N / 2; i++) {
31151 var t = rws[i];
31152
31153 rws[i] = rws[N - i - 1];
31154 rws[N - i - 1] = t;
31155
31156 t = iws[i];
31157
31158 iws[i] = -iws[N - i - 1];
31159 iws[N - i - 1] = -t;
31160 }
31161 };
31162
31163 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31164 var carry = 0;
31165 for (var i = 0; i < N / 2; i++) {
31166 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31167 Math.round(ws[2 * i] / N) +
31168 carry;
31169
31170 ws[i] = w & 0x3ffffff;
31171
31172 if (w < 0x4000000) {
31173 carry = 0;
31174 } else {
31175 carry = w / 0x4000000 | 0;
31176 }
31177 }
31178
31179 return ws;
31180 };
31181
31182 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31183 var carry = 0;
31184 for (var i = 0; i < len; i++) {
31185 carry = carry + (ws[i] | 0);
31186
31187 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31188 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31189 }
31190
31191 // Pad with zeroes
31192 for (i = 2 * len; i < N; ++i) {
31193 rws[i] = 0;
31194 }
31195
31196 assert(carry === 0);
31197 assert((carry & ~0x1fff) === 0);
31198 };
31199
31200 FFTM.prototype.stub = function stub (N) {
31201 var ph = new Array(N);
31202 for (var i = 0; i < N; i++) {
31203 ph[i] = 0;
31204 }
31205
31206 return ph;
31207 };
31208
31209 FFTM.prototype.mulp = function mulp (x, y, out) {
31210 var N = 2 * this.guessLen13b(x.length, y.length);
31211
31212 var rbt = this.makeRBT(N);
31213
31214 var _ = this.stub(N);
31215
31216 var rws = new Array(N);
31217 var rwst = new Array(N);
31218 var iwst = new Array(N);
31219
31220 var nrws = new Array(N);
31221 var nrwst = new Array(N);
31222 var niwst = new Array(N);
31223
31224 var rmws = out.words;
31225 rmws.length = N;
31226
31227 this.convert13b(x.words, x.length, rws, N);
31228 this.convert13b(y.words, y.length, nrws, N);
31229
31230 this.transform(rws, _, rwst, iwst, N, rbt);
31231 this.transform(nrws, _, nrwst, niwst, N, rbt);
31232
31233 for (var i = 0; i < N; i++) {
31234 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31235 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31236 rwst[i] = rx;
31237 }
31238
31239 this.conjugate(rwst, iwst, N);
31240 this.transform(rwst, iwst, rmws, _, N, rbt);
31241 this.conjugate(rmws, _, N);
31242 this.normalize13b(rmws, N);
31243
31244 out.negative = x.negative ^ y.negative;
31245 out.length = x.length + y.length;
31246 return out.strip();
31247 };
31248
31249 // Multiply `this` by `num`
31250 BN.prototype.mul = function mul (num) {
31251 var out = new BN(null);
31252 out.words = new Array(this.length + num.length);
31253 return this.mulTo(num, out);
31254 };
31255
31256 // Multiply employing FFT
31257 BN.prototype.mulf = function mulf (num) {
31258 var out = new BN(null);
31259 out.words = new Array(this.length + num.length);
31260 return jumboMulTo(this, num, out);
31261 };
31262
31263 // In-place Multiplication
31264 BN.prototype.imul = function imul (num) {
31265 return this.clone().mulTo(num, this);
31266 };
31267
31268 BN.prototype.imuln = function imuln (num) {
31269 assert(typeof num === 'number');
31270 assert(num < 0x4000000);
31271
31272 // Carry
31273 var carry = 0;
31274 for (var i = 0; i < this.length; i++) {
31275 var w = (this.words[i] | 0) * num;
31276 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31277 carry >>= 26;
31278 carry += (w / 0x4000000) | 0;
31279 // NOTE: lo is 27bit maximum
31280 carry += lo >>> 26;
31281 this.words[i] = lo & 0x3ffffff;
31282 }
31283
31284 if (carry !== 0) {
31285 this.words[i] = carry;
31286 this.length++;
31287 }
31288
31289 return this;
31290 };
31291
31292 BN.prototype.muln = function muln (num) {
31293 return this.clone().imuln(num);
31294 };
31295
31296 // `this` * `this`
31297 BN.prototype.sqr = function sqr () {
31298 return this.mul(this);
31299 };
31300
31301 // `this` * `this` in-place
31302 BN.prototype.isqr = function isqr () {
31303 return this.imul(this.clone());
31304 };
31305
31306 // Math.pow(`this`, `num`)
31307 BN.prototype.pow = function pow (num) {
31308 var w = toBitArray(num);
31309 if (w.length === 0) return new BN(1);
31310
31311 // Skip leading zeroes
31312 var res = this;
31313 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31314 if (w[i] !== 0) break;
31315 }
31316
31317 if (++i < w.length) {
31318 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31319 if (w[i] === 0) continue;
31320
31321 res = res.mul(q);
31322 }
31323 }
31324
31325 return res;
31326 };
31327
31328 // Shift-left in-place
31329 BN.prototype.iushln = function iushln (bits) {
31330 assert(typeof bits === 'number' && bits >= 0);
31331 var r = bits % 26;
31332 var s = (bits - r) / 26;
31333 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31334 var i;
31335
31336 if (r !== 0) {
31337 var carry = 0;
31338
31339 for (i = 0; i < this.length; i++) {
31340 var newCarry = this.words[i] & carryMask;
31341 var c = ((this.words[i] | 0) - newCarry) << r;
31342 this.words[i] = c | carry;
31343 carry = newCarry >>> (26 - r);
31344 }
31345
31346 if (carry) {
31347 this.words[i] = carry;
31348 this.length++;
31349 }
31350 }
31351
31352 if (s !== 0) {
31353 for (i = this.length - 1; i >= 0; i--) {
31354 this.words[i + s] = this.words[i];
31355 }
31356
31357 for (i = 0; i < s; i++) {
31358 this.words[i] = 0;
31359 }
31360
31361 this.length += s;
31362 }
31363
31364 return this.strip();
31365 };
31366
31367 BN.prototype.ishln = function ishln (bits) {
31368 // TODO(indutny): implement me
31369 assert(this.negative === 0);
31370 return this.iushln(bits);
31371 };
31372
31373 // Shift-right in-place
31374 // NOTE: `hint` is a lowest bit before trailing zeroes
31375 // NOTE: if `extended` is present - it will be filled with destroyed bits
31376 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31377 assert(typeof bits === 'number' && bits >= 0);
31378 var h;
31379 if (hint) {
31380 h = (hint - (hint % 26)) / 26;
31381 } else {
31382 h = 0;
31383 }
31384
31385 var r = bits % 26;
31386 var s = Math.min((bits - r) / 26, this.length);
31387 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31388 var maskedWords = extended;
31389
31390 h -= s;
31391 h = Math.max(0, h);
31392
31393 // Extended mode, copy masked part
31394 if (maskedWords) {
31395 for (var i = 0; i < s; i++) {
31396 maskedWords.words[i] = this.words[i];
31397 }
31398 maskedWords.length = s;
31399 }
31400
31401 if (s === 0) {
31402 // No-op, we should not move anything at all
31403 } else if (this.length > s) {
31404 this.length -= s;
31405 for (i = 0; i < this.length; i++) {
31406 this.words[i] = this.words[i + s];
31407 }
31408 } else {
31409 this.words[0] = 0;
31410 this.length = 1;
31411 }
31412
31413 var carry = 0;
31414 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31415 var word = this.words[i] | 0;
31416 this.words[i] = (carry << (26 - r)) | (word >>> r);
31417 carry = word & mask;
31418 }
31419
31420 // Push carried bits as a mask
31421 if (maskedWords && carry !== 0) {
31422 maskedWords.words[maskedWords.length++] = carry;
31423 }
31424
31425 if (this.length === 0) {
31426 this.words[0] = 0;
31427 this.length = 1;
31428 }
31429
31430 return this.strip();
31431 };
31432
31433 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31434 // TODO(indutny): implement me
31435 assert(this.negative === 0);
31436 return this.iushrn(bits, hint, extended);
31437 };
31438
31439 // Shift-left
31440 BN.prototype.shln = function shln (bits) {
31441 return this.clone().ishln(bits);
31442 };
31443
31444 BN.prototype.ushln = function ushln (bits) {
31445 return this.clone().iushln(bits);
31446 };
31447
31448 // Shift-right
31449 BN.prototype.shrn = function shrn (bits) {
31450 return this.clone().ishrn(bits);
31451 };
31452
31453 BN.prototype.ushrn = function ushrn (bits) {
31454 return this.clone().iushrn(bits);
31455 };
31456
31457 // Test if n bit is set
31458 BN.prototype.testn = function testn (bit) {
31459 assert(typeof bit === 'number' && bit >= 0);
31460 var r = bit % 26;
31461 var s = (bit - r) / 26;
31462 var q = 1 << r;
31463
31464 // Fast case: bit is much higher than all existing words
31465 if (this.length <= s) return false;
31466
31467 // Check bit and return
31468 var w = this.words[s];
31469
31470 return !!(w & q);
31471 };
31472
31473 // Return only lowers bits of number (in-place)
31474 BN.prototype.imaskn = function imaskn (bits) {
31475 assert(typeof bits === 'number' && bits >= 0);
31476 var r = bits % 26;
31477 var s = (bits - r) / 26;
31478
31479 assert(this.negative === 0, 'imaskn works only with positive numbers');
31480
31481 if (this.length <= s) {
31482 return this;
31483 }
31484
31485 if (r !== 0) {
31486 s++;
31487 }
31488 this.length = Math.min(s, this.length);
31489
31490 if (r !== 0) {
31491 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31492 this.words[this.length - 1] &= mask;
31493 }
31494
31495 return this.strip();
31496 };
31497
31498 // Return only lowers bits of number
31499 BN.prototype.maskn = function maskn (bits) {
31500 return this.clone().imaskn(bits);
31501 };
31502
31503 // Add plain number `num` to `this`
31504 BN.prototype.iaddn = function iaddn (num) {
31505 assert(typeof num === 'number');
31506 assert(num < 0x4000000);
31507 if (num < 0) return this.isubn(-num);
31508
31509 // Possible sign change
31510 if (this.negative !== 0) {
31511 if (this.length === 1 && (this.words[0] | 0) < num) {
31512 this.words[0] = num - (this.words[0] | 0);
31513 this.negative = 0;
31514 return this;
31515 }
31516
31517 this.negative = 0;
31518 this.isubn(num);
31519 this.negative = 1;
31520 return this;
31521 }
31522
31523 // Add without checks
31524 return this._iaddn(num);
31525 };
31526
31527 BN.prototype._iaddn = function _iaddn (num) {
31528 this.words[0] += num;
31529
31530 // Carry
31531 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31532 this.words[i] -= 0x4000000;
31533 if (i === this.length - 1) {
31534 this.words[i + 1] = 1;
31535 } else {
31536 this.words[i + 1]++;
31537 }
31538 }
31539 this.length = Math.max(this.length, i + 1);
31540
31541 return this;
31542 };
31543
31544 // Subtract plain number `num` from `this`
31545 BN.prototype.isubn = function isubn (num) {
31546 assert(typeof num === 'number');
31547 assert(num < 0x4000000);
31548 if (num < 0) return this.iaddn(-num);
31549
31550 if (this.negative !== 0) {
31551 this.negative = 0;
31552 this.iaddn(num);
31553 this.negative = 1;
31554 return this;
31555 }
31556
31557 this.words[0] -= num;
31558
31559 if (this.length === 1 && this.words[0] < 0) {
31560 this.words[0] = -this.words[0];
31561 this.negative = 1;
31562 } else {
31563 // Carry
31564 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31565 this.words[i] += 0x4000000;
31566 this.words[i + 1] -= 1;
31567 }
31568 }
31569
31570 return this.strip();
31571 };
31572
31573 BN.prototype.addn = function addn (num) {
31574 return this.clone().iaddn(num);
31575 };
31576
31577 BN.prototype.subn = function subn (num) {
31578 return this.clone().isubn(num);
31579 };
31580
31581 BN.prototype.iabs = function iabs () {
31582 this.negative = 0;
31583
31584 return this;
31585 };
31586
31587 BN.prototype.abs = function abs () {
31588 return this.clone().iabs();
31589 };
31590
31591 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31592 var len = num.length + shift;
31593 var i;
31594
31595 this._expand(len);
31596
31597 var w;
31598 var carry = 0;
31599 for (i = 0; i < num.length; i++) {
31600 w = (this.words[i + shift] | 0) + carry;
31601 var right = (num.words[i] | 0) * mul;
31602 w -= right & 0x3ffffff;
31603 carry = (w >> 26) - ((right / 0x4000000) | 0);
31604 this.words[i + shift] = w & 0x3ffffff;
31605 }
31606 for (; i < this.length - shift; i++) {
31607 w = (this.words[i + shift] | 0) + carry;
31608 carry = w >> 26;
31609 this.words[i + shift] = w & 0x3ffffff;
31610 }
31611
31612 if (carry === 0) return this.strip();
31613
31614 // Subtraction overflow
31615 assert(carry === -1);
31616 carry = 0;
31617 for (i = 0; i < this.length; i++) {
31618 w = -(this.words[i] | 0) + carry;
31619 carry = w >> 26;
31620 this.words[i] = w & 0x3ffffff;
31621 }
31622 this.negative = 1;
31623
31624 return this.strip();
31625 };
31626
31627 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31628 var shift = this.length - num.length;
31629
31630 var a = this.clone();
31631 var b = num;
31632
31633 // Normalize
31634 var bhi = b.words[b.length - 1] | 0;
31635 var bhiBits = this._countBits(bhi);
31636 shift = 26 - bhiBits;
31637 if (shift !== 0) {
31638 b = b.ushln(shift);
31639 a.iushln(shift);
31640 bhi = b.words[b.length - 1] | 0;
31641 }
31642
31643 // Initialize quotient
31644 var m = a.length - b.length;
31645 var q;
31646
31647 if (mode !== 'mod') {
31648 q = new BN(null);
31649 q.length = m + 1;
31650 q.words = new Array(q.length);
31651 for (var i = 0; i < q.length; i++) {
31652 q.words[i] = 0;
31653 }
31654 }
31655
31656 var diff = a.clone()._ishlnsubmul(b, 1, m);
31657 if (diff.negative === 0) {
31658 a = diff;
31659 if (q) {
31660 q.words[m] = 1;
31661 }
31662 }
31663
31664 for (var j = m - 1; j >= 0; j--) {
31665 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31666 (a.words[b.length + j - 1] | 0);
31667
31668 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31669 // (0x7ffffff)
31670 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
31671
31672 a._ishlnsubmul(b, qj, j);
31673 while (a.negative !== 0) {
31674 qj--;
31675 a.negative = 0;
31676 a._ishlnsubmul(b, 1, j);
31677 if (!a.isZero()) {
31678 a.negative ^= 1;
31679 }
31680 }
31681 if (q) {
31682 q.words[j] = qj;
31683 }
31684 }
31685 if (q) {
31686 q.strip();
31687 }
31688 a.strip();
31689
31690 // Denormalize
31691 if (mode !== 'div' && shift !== 0) {
31692 a.iushrn(shift);
31693 }
31694
31695 return {
31696 div: q || null,
31697 mod: a
31698 };
31699 };
31700
31701 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31702 // to `div` to request div only, or be absent to
31703 // request both div & mod
31704 // 2) `positive` is true if unsigned mod is requested
31705 BN.prototype.divmod = function divmod (num, mode, positive) {
31706 assert(!num.isZero());
31707
31708 if (this.isZero()) {
31709 return {
31710 div: new BN(0),
31711 mod: new BN(0)
31712 };
31713 }
31714
31715 var div, mod, res;
31716 if (this.negative !== 0 && num.negative === 0) {
31717 res = this.neg().divmod(num, mode);
31718
31719 if (mode !== 'mod') {
31720 div = res.div.neg();
31721 }
31722
31723 if (mode !== 'div') {
31724 mod = res.mod.neg();
31725 if (positive && mod.negative !== 0) {
31726 mod.iadd(num);
31727 }
31728 }
31729
31730 return {
31731 div: div,
31732 mod: mod
31733 };
31734 }
31735
31736 if (this.negative === 0 && num.negative !== 0) {
31737 res = this.divmod(num.neg(), mode);
31738
31739 if (mode !== 'mod') {
31740 div = res.div.neg();
31741 }
31742
31743 return {
31744 div: div,
31745 mod: res.mod
31746 };
31747 }
31748
31749 if ((this.negative & num.negative) !== 0) {
31750 res = this.neg().divmod(num.neg(), mode);
31751
31752 if (mode !== 'div') {
31753 mod = res.mod.neg();
31754 if (positive && mod.negative !== 0) {
31755 mod.isub(num);
31756 }
31757 }
31758
31759 return {
31760 div: res.div,
31761 mod: mod
31762 };
31763 }
31764
31765 // Both numbers are positive at this point
31766
31767 // Strip both numbers to approximate shift value
31768 if (num.length > this.length || this.cmp(num) < 0) {
31769 return {
31770 div: new BN(0),
31771 mod: this
31772 };
31773 }
31774
31775 // Very short reduction
31776 if (num.length === 1) {
31777 if (mode === 'div') {
31778 return {
31779 div: this.divn(num.words[0]),
31780 mod: null
31781 };
31782 }
31783
31784 if (mode === 'mod') {
31785 return {
31786 div: null,
31787 mod: new BN(this.modn(num.words[0]))
31788 };
31789 }
31790
31791 return {
31792 div: this.divn(num.words[0]),
31793 mod: new BN(this.modn(num.words[0]))
31794 };
31795 }
31796
31797 return this._wordDiv(num, mode);
31798 };
31799
31800 // Find `this` / `num`
31801 BN.prototype.div = function div (num) {
31802 return this.divmod(num, 'div', false).div;
31803 };
31804
31805 // Find `this` % `num`
31806 BN.prototype.mod = function mod (num) {
31807 return this.divmod(num, 'mod', false).mod;
31808 };
31809
31810 BN.prototype.umod = function umod (num) {
31811 return this.divmod(num, 'mod', true).mod;
31812 };
31813
31814 // Find Round(`this` / `num`)
31815 BN.prototype.divRound = function divRound (num) {
31816 var dm = this.divmod(num);
31817
31818 // Fast case - exact division
31819 if (dm.mod.isZero()) return dm.div;
31820
31821 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
31822
31823 var half = num.ushrn(1);
31824 var r2 = num.andln(1);
31825 var cmp = mod.cmp(half);
31826
31827 // Round down
31828 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
31829
31830 // Round up
31831 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31832 };
31833
31834 BN.prototype.modn = function modn (num) {
31835 assert(num <= 0x3ffffff);
31836 var p = (1 << 26) % num;
31837
31838 var acc = 0;
31839 for (var i = this.length - 1; i >= 0; i--) {
31840 acc = (p * acc + (this.words[i] | 0)) % num;
31841 }
31842
31843 return acc;
31844 };
31845
31846 // In-place division by number
31847 BN.prototype.idivn = function idivn (num) {
31848 assert(num <= 0x3ffffff);
31849
31850 var carry = 0;
31851 for (var i = this.length - 1; i >= 0; i--) {
31852 var w = (this.words[i] | 0) + carry * 0x4000000;
31853 this.words[i] = (w / num) | 0;
31854 carry = w % num;
31855 }
31856
31857 return this.strip();
31858 };
31859
31860 BN.prototype.divn = function divn (num) {
31861 return this.clone().idivn(num);
31862 };
31863
31864 BN.prototype.egcd = function egcd (p) {
31865 assert(p.negative === 0);
31866 assert(!p.isZero());
31867
31868 var x = this;
31869 var y = p.clone();
31870
31871 if (x.negative !== 0) {
31872 x = x.umod(p);
31873 } else {
31874 x = x.clone();
31875 }
31876
31877 // A * x + B * y = x
31878 var A = new BN(1);
31879 var B = new BN(0);
31880
31881 // C * x + D * y = y
31882 var C = new BN(0);
31883 var D = new BN(1);
31884
31885 var g = 0;
31886
31887 while (x.isEven() && y.isEven()) {
31888 x.iushrn(1);
31889 y.iushrn(1);
31890 ++g;
31891 }
31892
31893 var yp = y.clone();
31894 var xp = x.clone();
31895
31896 while (!x.isZero()) {
31897 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31898 if (i > 0) {
31899 x.iushrn(i);
31900 while (i-- > 0) {
31901 if (A.isOdd() || B.isOdd()) {
31902 A.iadd(yp);
31903 B.isub(xp);
31904 }
31905
31906 A.iushrn(1);
31907 B.iushrn(1);
31908 }
31909 }
31910
31911 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31912 if (j > 0) {
31913 y.iushrn(j);
31914 while (j-- > 0) {
31915 if (C.isOdd() || D.isOdd()) {
31916 C.iadd(yp);
31917 D.isub(xp);
31918 }
31919
31920 C.iushrn(1);
31921 D.iushrn(1);
31922 }
31923 }
31924
31925 if (x.cmp(y) >= 0) {
31926 x.isub(y);
31927 A.isub(C);
31928 B.isub(D);
31929 } else {
31930 y.isub(x);
31931 C.isub(A);
31932 D.isub(B);
31933 }
31934 }
31935
31936 return {
31937 a: C,
31938 b: D,
31939 gcd: y.iushln(g)
31940 };
31941 };
31942
31943 // This is reduced incarnation of the binary EEA
31944 // above, designated to invert members of the
31945 // _prime_ fields F(p) at a maximal speed
31946 BN.prototype._invmp = function _invmp (p) {
31947 assert(p.negative === 0);
31948 assert(!p.isZero());
31949
31950 var a = this;
31951 var b = p.clone();
31952
31953 if (a.negative !== 0) {
31954 a = a.umod(p);
31955 } else {
31956 a = a.clone();
31957 }
31958
31959 var x1 = new BN(1);
31960 var x2 = new BN(0);
31961
31962 var delta = b.clone();
31963
31964 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31965 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31966 if (i > 0) {
31967 a.iushrn(i);
31968 while (i-- > 0) {
31969 if (x1.isOdd()) {
31970 x1.iadd(delta);
31971 }
31972
31973 x1.iushrn(1);
31974 }
31975 }
31976
31977 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31978 if (j > 0) {
31979 b.iushrn(j);
31980 while (j-- > 0) {
31981 if (x2.isOdd()) {
31982 x2.iadd(delta);
31983 }
31984
31985 x2.iushrn(1);
31986 }
31987 }
31988
31989 if (a.cmp(b) >= 0) {
31990 a.isub(b);
31991 x1.isub(x2);
31992 } else {
31993 b.isub(a);
31994 x2.isub(x1);
31995 }
31996 }
31997
31998 var res;
31999 if (a.cmpn(1) === 0) {
32000 res = x1;
32001 } else {
32002 res = x2;
32003 }
32004
32005 if (res.cmpn(0) < 0) {
32006 res.iadd(p);
32007 }
32008
32009 return res;
32010 };
32011
32012 BN.prototype.gcd = function gcd (num) {
32013 if (this.isZero()) return num.abs();
32014 if (num.isZero()) return this.abs();
32015
32016 var a = this.clone();
32017 var b = num.clone();
32018 a.negative = 0;
32019 b.negative = 0;
32020
32021 // Remove common factor of two
32022 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
32023 a.iushrn(1);
32024 b.iushrn(1);
32025 }
32026
32027 do {
32028 while (a.isEven()) {
32029 a.iushrn(1);
32030 }
32031 while (b.isEven()) {
32032 b.iushrn(1);
32033 }
32034
32035 var r = a.cmp(b);
32036 if (r < 0) {
32037 // Swap `a` and `b` to make `a` always bigger than `b`
32038 var t = a;
32039 a = b;
32040 b = t;
32041 } else if (r === 0 || b.cmpn(1) === 0) {
32042 break;
32043 }
32044
32045 a.isub(b);
32046 } while (true);
32047
32048 return b.iushln(shift);
32049 };
32050
32051 // Invert number in the field F(num)
32052 BN.prototype.invm = function invm (num) {
32053 return this.egcd(num).a.umod(num);
32054 };
32055
32056 BN.prototype.isEven = function isEven () {
32057 return (this.words[0] & 1) === 0;
32058 };
32059
32060 BN.prototype.isOdd = function isOdd () {
32061 return (this.words[0] & 1) === 1;
32062 };
32063
32064 // And first word and num
32065 BN.prototype.andln = function andln (num) {
32066 return this.words[0] & num;
32067 };
32068
32069 // Increment at the bit position in-line
32070 BN.prototype.bincn = function bincn (bit) {
32071 assert(typeof bit === 'number');
32072 var r = bit % 26;
32073 var s = (bit - r) / 26;
32074 var q = 1 << r;
32075
32076 // Fast case: bit is much higher than all existing words
32077 if (this.length <= s) {
32078 this._expand(s + 1);
32079 this.words[s] |= q;
32080 return this;
32081 }
32082
32083 // Add bit and propagate, if needed
32084 var carry = q;
32085 for (var i = s; carry !== 0 && i < this.length; i++) {
32086 var w = this.words[i] | 0;
32087 w += carry;
32088 carry = w >>> 26;
32089 w &= 0x3ffffff;
32090 this.words[i] = w;
32091 }
32092 if (carry !== 0) {
32093 this.words[i] = carry;
32094 this.length++;
32095 }
32096 return this;
32097 };
32098
32099 BN.prototype.isZero = function isZero () {
32100 return this.length === 1 && this.words[0] === 0;
32101 };
32102
32103 BN.prototype.cmpn = function cmpn (num) {
32104 var negative = num < 0;
32105
32106 if (this.negative !== 0 && !negative) return -1;
32107 if (this.negative === 0 && negative) return 1;
32108
32109 this.strip();
32110
32111 var res;
32112 if (this.length > 1) {
32113 res = 1;
32114 } else {
32115 if (negative) {
32116 num = -num;
32117 }
32118
32119 assert(num <= 0x3ffffff, 'Number is too big');
32120
32121 var w = this.words[0] | 0;
32122 res = w === num ? 0 : w < num ? -1 : 1;
32123 }
32124 if (this.negative !== 0) return -res | 0;
32125 return res;
32126 };
32127
32128 // Compare two numbers and return:
32129 // 1 - if `this` > `num`
32130 // 0 - if `this` == `num`
32131 // -1 - if `this` < `num`
32132 BN.prototype.cmp = function cmp (num) {
32133 if (this.negative !== 0 && num.negative === 0) return -1;
32134 if (this.negative === 0 && num.negative !== 0) return 1;
32135
32136 var res = this.ucmp(num);
32137 if (this.negative !== 0) return -res | 0;
32138 return res;
32139 };
32140
32141 // Unsigned comparison
32142 BN.prototype.ucmp = function ucmp (num) {
32143 // At this point both numbers have the same sign
32144 if (this.length > num.length) return 1;
32145 if (this.length < num.length) return -1;
32146
32147 var res = 0;
32148 for (var i = this.length - 1; i >= 0; i--) {
32149 var a = this.words[i] | 0;
32150 var b = num.words[i] | 0;
32151
32152 if (a === b) continue;
32153 if (a < b) {
32154 res = -1;
32155 } else if (a > b) {
32156 res = 1;
32157 }
32158 break;
32159 }
32160 return res;
32161 };
32162
32163 BN.prototype.gtn = function gtn (num) {
32164 return this.cmpn(num) === 1;
32165 };
32166
32167 BN.prototype.gt = function gt (num) {
32168 return this.cmp(num) === 1;
32169 };
32170
32171 BN.prototype.gten = function gten (num) {
32172 return this.cmpn(num) >= 0;
32173 };
32174
32175 BN.prototype.gte = function gte (num) {
32176 return this.cmp(num) >= 0;
32177 };
32178
32179 BN.prototype.ltn = function ltn (num) {
32180 return this.cmpn(num) === -1;
32181 };
32182
32183 BN.prototype.lt = function lt (num) {
32184 return this.cmp(num) === -1;
32185 };
32186
32187 BN.prototype.lten = function lten (num) {
32188 return this.cmpn(num) <= 0;
32189 };
32190
32191 BN.prototype.lte = function lte (num) {
32192 return this.cmp(num) <= 0;
32193 };
32194
32195 BN.prototype.eqn = function eqn (num) {
32196 return this.cmpn(num) === 0;
32197 };
32198
32199 BN.prototype.eq = function eq (num) {
32200 return this.cmp(num) === 0;
32201 };
32202
32203 //
32204 // A reduce context, could be using montgomery or something better, depending
32205 // on the `m` itself.
32206 //
32207 BN.red = function red (num) {
32208 return new Red(num);
32209 };
32210
32211 BN.prototype.toRed = function toRed (ctx) {
32212 assert(!this.red, 'Already a number in reduction context');
32213 assert(this.negative === 0, 'red works only with positives');
32214 return ctx.convertTo(this)._forceRed(ctx);
32215 };
32216
32217 BN.prototype.fromRed = function fromRed () {
32218 assert(this.red, 'fromRed works only with numbers in reduction context');
32219 return this.red.convertFrom(this);
32220 };
32221
32222 BN.prototype._forceRed = function _forceRed (ctx) {
32223 this.red = ctx;
32224 return this;
32225 };
32226
32227 BN.prototype.forceRed = function forceRed (ctx) {
32228 assert(!this.red, 'Already a number in reduction context');
32229 return this._forceRed(ctx);
32230 };
32231
32232 BN.prototype.redAdd = function redAdd (num) {
32233 assert(this.red, 'redAdd works only with red numbers');
32234 return this.red.add(this, num);
32235 };
32236
32237 BN.prototype.redIAdd = function redIAdd (num) {
32238 assert(this.red, 'redIAdd works only with red numbers');
32239 return this.red.iadd(this, num);
32240 };
32241
32242 BN.prototype.redSub = function redSub (num) {
32243 assert(this.red, 'redSub works only with red numbers');
32244 return this.red.sub(this, num);
32245 };
32246
32247 BN.prototype.redISub = function redISub (num) {
32248 assert(this.red, 'redISub works only with red numbers');
32249 return this.red.isub(this, num);
32250 };
32251
32252 BN.prototype.redShl = function redShl (num) {
32253 assert(this.red, 'redShl works only with red numbers');
32254 return this.red.shl(this, num);
32255 };
32256
32257 BN.prototype.redMul = function redMul (num) {
32258 assert(this.red, 'redMul works only with red numbers');
32259 this.red._verify2(this, num);
32260 return this.red.mul(this, num);
32261 };
32262
32263 BN.prototype.redIMul = function redIMul (num) {
32264 assert(this.red, 'redMul works only with red numbers');
32265 this.red._verify2(this, num);
32266 return this.red.imul(this, num);
32267 };
32268
32269 BN.prototype.redSqr = function redSqr () {
32270 assert(this.red, 'redSqr works only with red numbers');
32271 this.red._verify1(this);
32272 return this.red.sqr(this);
32273 };
32274
32275 BN.prototype.redISqr = function redISqr () {
32276 assert(this.red, 'redISqr works only with red numbers');
32277 this.red._verify1(this);
32278 return this.red.isqr(this);
32279 };
32280
32281 // Square root over p
32282 BN.prototype.redSqrt = function redSqrt () {
32283 assert(this.red, 'redSqrt works only with red numbers');
32284 this.red._verify1(this);
32285 return this.red.sqrt(this);
32286 };
32287
32288 BN.prototype.redInvm = function redInvm () {
32289 assert(this.red, 'redInvm works only with red numbers');
32290 this.red._verify1(this);
32291 return this.red.invm(this);
32292 };
32293
32294 // Return negative clone of `this` % `red modulo`
32295 BN.prototype.redNeg = function redNeg () {
32296 assert(this.red, 'redNeg works only with red numbers');
32297 this.red._verify1(this);
32298 return this.red.neg(this);
32299 };
32300
32301 BN.prototype.redPow = function redPow (num) {
32302 assert(this.red && !num.red, 'redPow(normalNum)');
32303 this.red._verify1(this);
32304 return this.red.pow(this, num);
32305 };
32306
32307 // Prime numbers with efficient reduction
32308 var primes = {
32309 k256: null,
32310 p224: null,
32311 p192: null,
32312 p25519: null
32313 };
32314
32315 // Pseudo-Mersenne prime
32316 function MPrime (name, p) {
32317 // P = 2 ^ N - K
32318 this.name = name;
32319 this.p = new BN(p, 16);
32320 this.n = this.p.bitLength();
32321 this.k = new BN(1).iushln(this.n).isub(this.p);
32322
32323 this.tmp = this._tmp();
32324 }
32325
32326 MPrime.prototype._tmp = function _tmp () {
32327 var tmp = new BN(null);
32328 tmp.words = new Array(Math.ceil(this.n / 13));
32329 return tmp;
32330 };
32331
32332 MPrime.prototype.ireduce = function ireduce (num) {
32333 // Assumes that `num` is less than `P^2`
32334 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32335 var r = num;
32336 var rlen;
32337
32338 do {
32339 this.split(r, this.tmp);
32340 r = this.imulK(r);
32341 r = r.iadd(this.tmp);
32342 rlen = r.bitLength();
32343 } while (rlen > this.n);
32344
32345 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32346 if (cmp === 0) {
32347 r.words[0] = 0;
32348 r.length = 1;
32349 } else if (cmp > 0) {
32350 r.isub(this.p);
32351 } else {
32352 r.strip();
32353 }
32354
32355 return r;
32356 };
32357
32358 MPrime.prototype.split = function split (input, out) {
32359 input.iushrn(this.n, 0, out);
32360 };
32361
32362 MPrime.prototype.imulK = function imulK (num) {
32363 return num.imul(this.k);
32364 };
32365
32366 function K256 () {
32367 MPrime.call(
32368 this,
32369 'k256',
32370 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32371 }
32372 inherits(K256, MPrime);
32373
32374 K256.prototype.split = function split (input, output) {
32375 // 256 = 9 * 26 + 22
32376 var mask = 0x3fffff;
32377
32378 var outLen = Math.min(input.length, 9);
32379 for (var i = 0; i < outLen; i++) {
32380 output.words[i] = input.words[i];
32381 }
32382 output.length = outLen;
32383
32384 if (input.length <= 9) {
32385 input.words[0] = 0;
32386 input.length = 1;
32387 return;
32388 }
32389
32390 // Shift by 9 limbs
32391 var prev = input.words[9];
32392 output.words[output.length++] = prev & mask;
32393
32394 for (i = 10; i < input.length; i++) {
32395 var next = input.words[i] | 0;
32396 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32397 prev = next;
32398 }
32399 prev >>>= 22;
32400 input.words[i - 10] = prev;
32401 if (prev === 0 && input.length > 10) {
32402 input.length -= 10;
32403 } else {
32404 input.length -= 9;
32405 }
32406 };
32407
32408 K256.prototype.imulK = function imulK (num) {
32409 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32410 num.words[num.length] = 0;
32411 num.words[num.length + 1] = 0;
32412 num.length += 2;
32413
32414 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32415 var lo = 0;
32416 for (var i = 0; i < num.length; i++) {
32417 var w = num.words[i] | 0;
32418 lo += w * 0x3d1;
32419 num.words[i] = lo & 0x3ffffff;
32420 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32421 }
32422
32423 // Fast length reduction
32424 if (num.words[num.length - 1] === 0) {
32425 num.length--;
32426 if (num.words[num.length - 1] === 0) {
32427 num.length--;
32428 }
32429 }
32430 return num;
32431 };
32432
32433 function P224 () {
32434 MPrime.call(
32435 this,
32436 'p224',
32437 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32438 }
32439 inherits(P224, MPrime);
32440
32441 function P192 () {
32442 MPrime.call(
32443 this,
32444 'p192',
32445 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32446 }
32447 inherits(P192, MPrime);
32448
32449 function P25519 () {
32450 // 2 ^ 255 - 19
32451 MPrime.call(
32452 this,
32453 '25519',
32454 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32455 }
32456 inherits(P25519, MPrime);
32457
32458 P25519.prototype.imulK = function imulK (num) {
32459 // K = 0x13
32460 var carry = 0;
32461 for (var i = 0; i < num.length; i++) {
32462 var hi = (num.words[i] | 0) * 0x13 + carry;
32463 var lo = hi & 0x3ffffff;
32464 hi >>>= 26;
32465
32466 num.words[i] = lo;
32467 carry = hi;
32468 }
32469 if (carry !== 0) {
32470 num.words[num.length++] = carry;
32471 }
32472 return num;
32473 };
32474
32475 // Exported mostly for testing purposes, use plain name instead
32476 BN._prime = function prime (name) {
32477 // Cached version of prime
32478 if (primes[name]) return primes[name];
32479
32480 var prime;
32481 if (name === 'k256') {
32482 prime = new K256();
32483 } else if (name === 'p224') {
32484 prime = new P224();
32485 } else if (name === 'p192') {
32486 prime = new P192();
32487 } else if (name === 'p25519') {
32488 prime = new P25519();
32489 } else {
32490 throw new Error('Unknown prime ' + name);
32491 }
32492 primes[name] = prime;
32493
32494 return prime;
32495 };
32496
32497 //
32498 // Base reduction engine
32499 //
32500 function Red (m) {
32501 if (typeof m === 'string') {
32502 var prime = BN._prime(m);
32503 this.m = prime.p;
32504 this.prime = prime;
32505 } else {
32506 assert(m.gtn(1), 'modulus must be greater than 1');
32507 this.m = m;
32508 this.prime = null;
32509 }
32510 }
32511
32512 Red.prototype._verify1 = function _verify1 (a) {
32513 assert(a.negative === 0, 'red works only with positives');
32514 assert(a.red, 'red works only with red numbers');
32515 };
32516
32517 Red.prototype._verify2 = function _verify2 (a, b) {
32518 assert((a.negative | b.negative) === 0, 'red works only with positives');
32519 assert(a.red && a.red === b.red,
32520 'red works only with red numbers');
32521 };
32522
32523 Red.prototype.imod = function imod (a) {
32524 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32525 return a.umod(this.m)._forceRed(this);
32526 };
32527
32528 Red.prototype.neg = function neg (a) {
32529 if (a.isZero()) {
32530 return a.clone();
32531 }
32532
32533 return this.m.sub(a)._forceRed(this);
32534 };
32535
32536 Red.prototype.add = function add (a, b) {
32537 this._verify2(a, b);
32538
32539 var res = a.add(b);
32540 if (res.cmp(this.m) >= 0) {
32541 res.isub(this.m);
32542 }
32543 return res._forceRed(this);
32544 };
32545
32546 Red.prototype.iadd = function iadd (a, b) {
32547 this._verify2(a, b);
32548
32549 var res = a.iadd(b);
32550 if (res.cmp(this.m) >= 0) {
32551 res.isub(this.m);
32552 }
32553 return res;
32554 };
32555
32556 Red.prototype.sub = function sub (a, b) {
32557 this._verify2(a, b);
32558
32559 var res = a.sub(b);
32560 if (res.cmpn(0) < 0) {
32561 res.iadd(this.m);
32562 }
32563 return res._forceRed(this);
32564 };
32565
32566 Red.prototype.isub = function isub (a, b) {
32567 this._verify2(a, b);
32568
32569 var res = a.isub(b);
32570 if (res.cmpn(0) < 0) {
32571 res.iadd(this.m);
32572 }
32573 return res;
32574 };
32575
32576 Red.prototype.shl = function shl (a, num) {
32577 this._verify1(a);
32578 return this.imod(a.ushln(num));
32579 };
32580
32581 Red.prototype.imul = function imul (a, b) {
32582 this._verify2(a, b);
32583 return this.imod(a.imul(b));
32584 };
32585
32586 Red.prototype.mul = function mul (a, b) {
32587 this._verify2(a, b);
32588 return this.imod(a.mul(b));
32589 };
32590
32591 Red.prototype.isqr = function isqr (a) {
32592 return this.imul(a, a.clone());
32593 };
32594
32595 Red.prototype.sqr = function sqr (a) {
32596 return this.mul(a, a);
32597 };
32598
32599 Red.prototype.sqrt = function sqrt (a) {
32600 if (a.isZero()) return a.clone();
32601
32602 var mod3 = this.m.andln(3);
32603 assert(mod3 % 2 === 1);
32604
32605 // Fast case
32606 if (mod3 === 3) {
32607 var pow = this.m.add(new BN(1)).iushrn(2);
32608 return this.pow(a, pow);
32609 }
32610
32611 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32612 //
32613 // Find Q and S, that Q * 2 ^ S = (P - 1)
32614 var q = this.m.subn(1);
32615 var s = 0;
32616 while (!q.isZero() && q.andln(1) === 0) {
32617 s++;
32618 q.iushrn(1);
32619 }
32620 assert(!q.isZero());
32621
32622 var one = new BN(1).toRed(this);
32623 var nOne = one.redNeg();
32624
32625 // Find quadratic non-residue
32626 // NOTE: Max is such because of generalized Riemann hypothesis.
32627 var lpow = this.m.subn(1).iushrn(1);
32628 var z = this.m.bitLength();
32629 z = new BN(2 * z * z).toRed(this);
32630
32631 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32632 z.redIAdd(nOne);
32633 }
32634
32635 var c = this.pow(z, q);
32636 var r = this.pow(a, q.addn(1).iushrn(1));
32637 var t = this.pow(a, q);
32638 var m = s;
32639 while (t.cmp(one) !== 0) {
32640 var tmp = t;
32641 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32642 tmp = tmp.redSqr();
32643 }
32644 assert(i < m);
32645 var b = this.pow(c, new BN(1).iushln(m - i - 1));
32646
32647 r = r.redMul(b);
32648 c = b.redSqr();
32649 t = t.redMul(c);
32650 m = i;
32651 }
32652
32653 return r;
32654 };
32655
32656 Red.prototype.invm = function invm (a) {
32657 var inv = a._invmp(this.m);
32658 if (inv.negative !== 0) {
32659 inv.negative = 0;
32660 return this.imod(inv).redNeg();
32661 } else {
32662 return this.imod(inv);
32663 }
32664 };
32665
32666 Red.prototype.pow = function pow (a, num) {
32667 if (num.isZero()) return new BN(1);
32668 if (num.cmpn(1) === 0) return a.clone();
32669
32670 var windowSize = 4;
32671 var wnd = new Array(1 << windowSize);
32672 wnd[0] = new BN(1).toRed(this);
32673 wnd[1] = a;
32674 for (var i = 2; i < wnd.length; i++) {
32675 wnd[i] = this.mul(wnd[i - 1], a);
32676 }
32677
32678 var res = wnd[0];
32679 var current = 0;
32680 var currentLen = 0;
32681 var start = num.bitLength() % 26;
32682 if (start === 0) {
32683 start = 26;
32684 }
32685
32686 for (i = num.length - 1; i >= 0; i--) {
32687 var word = num.words[i];
32688 for (var j = start - 1; j >= 0; j--) {
32689 var bit = (word >> j) & 1;
32690 if (res !== wnd[0]) {
32691 res = this.sqr(res);
32692 }
32693
32694 if (bit === 0 && current === 0) {
32695 currentLen = 0;
32696 continue;
32697 }
32698
32699 current <<= 1;
32700 current |= bit;
32701 currentLen++;
32702 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
32703
32704 res = this.mul(res, wnd[current]);
32705 currentLen = 0;
32706 current = 0;
32707 }
32708 start = 26;
32709 }
32710
32711 return res;
32712 };
32713
32714 Red.prototype.convertTo = function convertTo (num) {
32715 var r = num.umod(this.m);
32716
32717 return r === num ? r.clone() : r;
32718 };
32719
32720 Red.prototype.convertFrom = function convertFrom (num) {
32721 var res = num.clone();
32722 res.red = null;
32723 return res;
32724 };
32725
32726 //
32727 // Montgomery method engine
32728 //
32729
32730 BN.mont = function mont (num) {
32731 return new Mont(num);
32732 };
32733
32734 function Mont (m) {
32735 Red.call(this, m);
32736
32737 this.shift = this.m.bitLength();
32738 if (this.shift % 26 !== 0) {
32739 this.shift += 26 - (this.shift % 26);
32740 }
32741
32742 this.r = new BN(1).iushln(this.shift);
32743 this.r2 = this.imod(this.r.sqr());
32744 this.rinv = this.r._invmp(this.m);
32745
32746 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32747 this.minv = this.minv.umod(this.r);
32748 this.minv = this.r.sub(this.minv);
32749 }
32750 inherits(Mont, Red);
32751
32752 Mont.prototype.convertTo = function convertTo (num) {
32753 return this.imod(num.ushln(this.shift));
32754 };
32755
32756 Mont.prototype.convertFrom = function convertFrom (num) {
32757 var r = this.imod(num.mul(this.rinv));
32758 r.red = null;
32759 return r;
32760 };
32761
32762 Mont.prototype.imul = function imul (a, b) {
32763 if (a.isZero() || b.isZero()) {
32764 a.words[0] = 0;
32765 a.length = 1;
32766 return a;
32767 }
32768
32769 var t = a.imul(b);
32770 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32771 var u = t.isub(c).iushrn(this.shift);
32772 var res = u;
32773
32774 if (u.cmp(this.m) >= 0) {
32775 res = u.isub(this.m);
32776 } else if (u.cmpn(0) < 0) {
32777 res = u.iadd(this.m);
32778 }
32779
32780 return res._forceRed(this);
32781 };
32782
32783 Mont.prototype.mul = function mul (a, b) {
32784 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
32785
32786 var t = a.mul(b);
32787 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32788 var u = t.isub(c).iushrn(this.shift);
32789 var res = u;
32790 if (u.cmp(this.m) >= 0) {
32791 res = u.isub(this.m);
32792 } else if (u.cmpn(0) < 0) {
32793 res = u.iadd(this.m);
32794 }
32795
32796 return res._forceRed(this);
32797 };
32798
32799 Mont.prototype.invm = function invm (a) {
32800 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32801 var res = this.imod(a._invmp(this.m).mul(this.r2));
32802 return res._forceRed(this);
32803 };
32804 })(typeof module === 'undefined' || module, this);
32805
32806 },{}],34:[function(require,module,exports){
32807 var r;
32808
32809 module.exports = function rand(len) {
32810 if (!r)
32811 r = new Rand(null);
32812
32813 return r.generate(len);
32814 };
32815
32816 function Rand(rand) {
32817 this.rand = rand;
32818 }
32819 module.exports.Rand = Rand;
32820
32821 Rand.prototype.generate = function generate(len) {
32822 return this._rand(len);
32823 };
32824
32825 if (typeof self === 'object') {
32826 if (self.crypto && self.crypto.getRandomValues) {
32827 // Modern browsers
32828 Rand.prototype._rand = function _rand(n) {
32829 var arr = new Uint8Array(n);
32830 self.crypto.getRandomValues(arr);
32831 return arr;
32832 };
32833 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32834 // IE
32835 Rand.prototype._rand = function _rand(n) {
32836 var arr = new Uint8Array(n);
32837 self.msCrypto.getRandomValues(arr);
32838 return arr;
32839 };
32840 } else {
32841 // Old junk
32842 Rand.prototype._rand = function() {
32843 throw new Error('Not implemented yet');
32844 };
32845 }
32846 } else {
32847 // Node.js or Web worker with no crypto support
32848 try {
32849 var crypto = require('crypto');
32850
32851 Rand.prototype._rand = function _rand(n) {
32852 return crypto.randomBytes(n);
32853 };
32854 } catch (e) {
32855 // Emulate crypto API using randy
32856 Rand.prototype._rand = function _rand(n) {
32857 var res = new Uint8Array(n);
32858 for (var i = 0; i < res.length; i++)
32859 res[i] = this.rand.getByte();
32860 return res;
32861 };
32862 }
32863 }
32864
32865 },{"crypto":3}],35:[function(require,module,exports){
32866 (function (Buffer){
32867 var Transform = require('stream').Transform
32868 var inherits = require('inherits')
32869 var StringDecoder = require('string_decoder').StringDecoder
32870 module.exports = CipherBase
32871 inherits(CipherBase, Transform)
32872 function CipherBase (hashMode) {
32873 Transform.call(this)
32874 this.hashMode = typeof hashMode === 'string'
32875 if (this.hashMode) {
32876 this[hashMode] = this._finalOrDigest
32877 } else {
32878 this.final = this._finalOrDigest
32879 }
32880 this._decoder = null
32881 this._encoding = null
32882 }
32883 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32884 if (typeof data === 'string') {
32885 data = new Buffer(data, inputEnc)
32886 }
32887 var outData = this._update(data)
32888 if (this.hashMode) {
32889 return this
32890 }
32891 if (outputEnc) {
32892 outData = this._toString(outData, outputEnc)
32893 }
32894 return outData
32895 }
32896
32897 CipherBase.prototype.setAutoPadding = function () {}
32898
32899 CipherBase.prototype.getAuthTag = function () {
32900 throw new Error('trying to get auth tag in unsupported state')
32901 }
32902
32903 CipherBase.prototype.setAuthTag = function () {
32904 throw new Error('trying to set auth tag in unsupported state')
32905 }
32906
32907 CipherBase.prototype.setAAD = function () {
32908 throw new Error('trying to set aad in unsupported state')
32909 }
32910
32911 CipherBase.prototype._transform = function (data, _, next) {
32912 var err
32913 try {
32914 if (this.hashMode) {
32915 this._update(data)
32916 } else {
32917 this.push(this._update(data))
32918 }
32919 } catch (e) {
32920 err = e
32921 } finally {
32922 next(err)
32923 }
32924 }
32925 CipherBase.prototype._flush = function (done) {
32926 var err
32927 try {
32928 this.push(this._final())
32929 } catch (e) {
32930 err = e
32931 } finally {
32932 done(err)
32933 }
32934 }
32935 CipherBase.prototype._finalOrDigest = function (outputEnc) {
32936 var outData = this._final() || new Buffer('')
32937 if (outputEnc) {
32938 outData = this._toString(outData, outputEnc, true)
32939 }
32940 return outData
32941 }
32942
32943 CipherBase.prototype._toString = function (value, enc, fin) {
32944 if (!this._decoder) {
32945 this._decoder = new StringDecoder(enc)
32946 this._encoding = enc
32947 }
32948 if (this._encoding !== enc) {
32949 throw new Error('can\'t switch encodings')
32950 }
32951 var out = this._decoder.write(value)
32952 if (fin) {
32953 out += this._decoder.end()
32954 }
32955 return out
32956 }
32957
32958 }).call(this,require("buffer").Buffer)
32959 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32960 (function (Buffer){
32961 'use strict';
32962 var inherits = require('inherits')
32963 var md5 = require('./md5')
32964 var rmd160 = require('ripemd160')
32965 var sha = require('sha.js')
32966
32967 var Base = require('cipher-base')
32968
32969 function HashNoConstructor(hash) {
32970 Base.call(this, 'digest')
32971
32972 this._hash = hash
32973 this.buffers = []
32974 }
32975
32976 inherits(HashNoConstructor, Base)
32977
32978 HashNoConstructor.prototype._update = function (data) {
32979 this.buffers.push(data)
32980 }
32981
32982 HashNoConstructor.prototype._final = function () {
32983 var buf = Buffer.concat(this.buffers)
32984 var r = this._hash(buf)
32985 this.buffers = null
32986
32987 return r
32988 }
32989
32990 function Hash(hash) {
32991 Base.call(this, 'digest')
32992
32993 this._hash = hash
32994 }
32995
32996 inherits(Hash, Base)
32997
32998 Hash.prototype._update = function (data) {
32999 this._hash.update(data)
33000 }
33001
33002 Hash.prototype._final = function () {
33003 return this._hash.digest()
33004 }
33005
33006 module.exports = function createHash (alg) {
33007 alg = alg.toLowerCase()
33008 if ('md5' === alg) return new HashNoConstructor(md5)
33009 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
33010
33011 return new Hash(sha(alg))
33012 }
33013
33014 }).call(this,require("buffer").Buffer)
33015 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
33016 (function (Buffer){
33017 'use strict';
33018 var intSize = 4;
33019 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
33020 var chrsz = 8;
33021
33022 function toArray(buf, bigEndian) {
33023 if ((buf.length % intSize) !== 0) {
33024 var len = buf.length + (intSize - (buf.length % intSize));
33025 buf = Buffer.concat([buf, zeroBuffer], len);
33026 }
33027
33028 var arr = [];
33029 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
33030 for (var i = 0; i < buf.length; i += intSize) {
33031 arr.push(fn.call(buf, i));
33032 }
33033 return arr;
33034 }
33035
33036 function toBuffer(arr, size, bigEndian) {
33037 var buf = new Buffer(size);
33038 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
33039 for (var i = 0; i < arr.length; i++) {
33040 fn.call(buf, arr[i], i * 4, true);
33041 }
33042 return buf;
33043 }
33044
33045 function hash(buf, fn, hashSize, bigEndian) {
33046 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
33047 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
33048 return toBuffer(arr, hashSize, bigEndian);
33049 }
33050 exports.hash = hash;
33051 }).call(this,require("buffer").Buffer)
33052 },{"buffer":5}],38:[function(require,module,exports){
33053 'use strict';
33054 /*
33055 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
33056 * Digest Algorithm, as defined in RFC 1321.
33057 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
33058 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
33059 * Distributed under the BSD License
33060 * See http://pajhome.org.uk/crypt/md5 for more info.
33061 */
33062
33063 var helpers = require('./helpers');
33064
33065 /*
33066 * Calculate the MD5 of an array of little-endian words, and a bit length
33067 */
33068 function core_md5(x, len)
33069 {
33070 /* append padding */
33071 x[len >> 5] |= 0x80 << ((len) % 32);
33072 x[(((len + 64) >>> 9) << 4) + 14] = len;
33073
33074 var a = 1732584193;
33075 var b = -271733879;
33076 var c = -1732584194;
33077 var d = 271733878;
33078
33079 for(var i = 0; i < x.length; i += 16)
33080 {
33081 var olda = a;
33082 var oldb = b;
33083 var oldc = c;
33084 var oldd = d;
33085
33086 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
33087 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
33088 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
33089 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
33090 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
33091 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
33092 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
33093 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
33094 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
33095 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
33096 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
33097 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
33098 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
33099 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
33100 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
33101 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
33102
33103 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
33104 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
33105 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
33106 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
33107 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
33108 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
33109 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
33110 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
33111 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
33112 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
33113 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
33114 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
33115 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
33116 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
33117 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
33118 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
33119
33120 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
33121 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
33122 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
33123 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
33124 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
33125 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
33126 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
33127 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
33128 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
33129 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
33130 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
33131 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
33132 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
33133 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
33134 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
33135 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
33136
33137 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
33138 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
33139 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
33140 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33141 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33142 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33143 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33144 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33145 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33146 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33147 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33148 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33149 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33150 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33151 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33152 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
33153
33154 a = safe_add(a, olda);
33155 b = safe_add(b, oldb);
33156 c = safe_add(c, oldc);
33157 d = safe_add(d, oldd);
33158 }
33159 return Array(a, b, c, d);
33160
33161 }
33162
33163 /*
33164 * These functions implement the four basic operations the algorithm uses.
33165 */
33166 function md5_cmn(q, a, b, x, s, t)
33167 {
33168 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
33169 }
33170 function md5_ff(a, b, c, d, x, s, t)
33171 {
33172 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
33173 }
33174 function md5_gg(a, b, c, d, x, s, t)
33175 {
33176 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
33177 }
33178 function md5_hh(a, b, c, d, x, s, t)
33179 {
33180 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33181 }
33182 function md5_ii(a, b, c, d, x, s, t)
33183 {
33184 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
33185 }
33186
33187 /*
33188 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33189 * to work around bugs in some JS interpreters.
33190 */
33191 function safe_add(x, y)
33192 {
33193 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33194 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33195 return (msw << 16) | (lsw & 0xFFFF);
33196 }
33197
33198 /*
33199 * Bitwise rotate a 32-bit number to the left.
33200 */
33201 function bit_rol(num, cnt)
33202 {
33203 return (num << cnt) | (num >>> (32 - cnt));
33204 }
33205
33206 module.exports = function md5(buf) {
33207 return helpers.hash(buf, core_md5, 16);
33208 };
33209 },{"./helpers":37}],39:[function(require,module,exports){
33210 'use strict';
33211
33212 var elliptic = exports;
33213
33214 elliptic.version = require('../package.json').version;
33215 elliptic.utils = require('./elliptic/utils');
33216 elliptic.rand = require('brorand');
33217 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33218 elliptic.curve = require('./elliptic/curve');
33219 elliptic.curves = require('./elliptic/curves');
33220
33221 // Protocols
33222 elliptic.ec = require('./elliptic/ec');
33223 elliptic.eddsa = require('./elliptic/eddsa');
33224
33225 },{"../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){
33226 'use strict';
33227
33228 var BN = require('bn.js');
33229 var elliptic = require('../../elliptic');
33230 var utils = elliptic.utils;
33231 var getNAF = utils.getNAF;
33232 var getJSF = utils.getJSF;
33233 var assert = utils.assert;
33234
33235 function BaseCurve(type, conf) {
33236 this.type = type;
33237 this.p = new BN(conf.p, 16);
33238
33239 // Use Montgomery, when there is no fast reduction for the prime
33240 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33241
33242 // Useful for many curves
33243 this.zero = new BN(0).toRed(this.red);
33244 this.one = new BN(1).toRed(this.red);
33245 this.two = new BN(2).toRed(this.red);
33246
33247 // Curve configuration, optional
33248 this.n = conf.n && new BN(conf.n, 16);
33249 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33250
33251 // Temporary arrays
33252 this._wnafT1 = new Array(4);
33253 this._wnafT2 = new Array(4);
33254 this._wnafT3 = new Array(4);
33255 this._wnafT4 = new Array(4);
33256
33257 // Generalized Greg Maxwell's trick
33258 var adjustCount = this.n && this.p.div(this.n);
33259 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33260 this.redN = null;
33261 } else {
33262 this._maxwellTrick = true;
33263 this.redN = this.n.toRed(this.red);
33264 }
33265 }
33266 module.exports = BaseCurve;
33267
33268 BaseCurve.prototype.point = function point() {
33269 throw new Error('Not implemented');
33270 };
33271
33272 BaseCurve.prototype.validate = function validate() {
33273 throw new Error('Not implemented');
33274 };
33275
33276 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33277 assert(p.precomputed);
33278 var doubles = p._getDoubles();
33279
33280 var naf = getNAF(k, 1);
33281 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33282 I /= 3;
33283
33284 // Translate into more windowed form
33285 var repr = [];
33286 for (var j = 0; j < naf.length; j += doubles.step) {
33287 var nafW = 0;
33288 for (var k = j + doubles.step - 1; k >= j; k--)
33289 nafW = (nafW << 1) + naf[k];
33290 repr.push(nafW);
33291 }
33292
33293 var a = this.jpoint(null, null, null);
33294 var b = this.jpoint(null, null, null);
33295 for (var i = I; i > 0; i--) {
33296 for (var j = 0; j < repr.length; j++) {
33297 var nafW = repr[j];
33298 if (nafW === i)
33299 b = b.mixedAdd(doubles.points[j]);
33300 else if (nafW === -i)
33301 b = b.mixedAdd(doubles.points[j].neg());
33302 }
33303 a = a.add(b);
33304 }
33305 return a.toP();
33306 };
33307
33308 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33309 var w = 4;
33310
33311 // Precompute window
33312 var nafPoints = p._getNAFPoints(w);
33313 w = nafPoints.wnd;
33314 var wnd = nafPoints.points;
33315
33316 // Get NAF form
33317 var naf = getNAF(k, w);
33318
33319 // Add `this`*(N+1) for every w-NAF index
33320 var acc = this.jpoint(null, null, null);
33321 for (var i = naf.length - 1; i >= 0; i--) {
33322 // Count zeroes
33323 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33324 k++;
33325 if (i >= 0)
33326 k++;
33327 acc = acc.dblp(k);
33328
33329 if (i < 0)
33330 break;
33331 var z = naf[i];
33332 assert(z !== 0);
33333 if (p.type === 'affine') {
33334 // J +- P
33335 if (z > 0)
33336 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33337 else
33338 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33339 } else {
33340 // J +- J
33341 if (z > 0)
33342 acc = acc.add(wnd[(z - 1) >> 1]);
33343 else
33344 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33345 }
33346 }
33347 return p.type === 'affine' ? acc.toP() : acc;
33348 };
33349
33350 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33351 points,
33352 coeffs,
33353 len,
33354 jacobianResult) {
33355 var wndWidth = this._wnafT1;
33356 var wnd = this._wnafT2;
33357 var naf = this._wnafT3;
33358
33359 // Fill all arrays
33360 var max = 0;
33361 for (var i = 0; i < len; i++) {
33362 var p = points[i];
33363 var nafPoints = p._getNAFPoints(defW);
33364 wndWidth[i] = nafPoints.wnd;
33365 wnd[i] = nafPoints.points;
33366 }
33367
33368 // Comb small window NAFs
33369 for (var i = len - 1; i >= 1; i -= 2) {
33370 var a = i - 1;
33371 var b = i;
33372 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33373 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33374 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33375 max = Math.max(naf[a].length, max);
33376 max = Math.max(naf[b].length, max);
33377 continue;
33378 }
33379
33380 var comb = [
33381 points[a], /* 1 */
33382 null, /* 3 */
33383 null, /* 5 */
33384 points[b] /* 7 */
33385 ];
33386
33387 // Try to avoid Projective points, if possible
33388 if (points[a].y.cmp(points[b].y) === 0) {
33389 comb[1] = points[a].add(points[b]);
33390 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33391 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33392 comb[1] = points[a].toJ().mixedAdd(points[b]);
33393 comb[2] = points[a].add(points[b].neg());
33394 } else {
33395 comb[1] = points[a].toJ().mixedAdd(points[b]);
33396 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33397 }
33398
33399 var index = [
33400 -3, /* -1 -1 */
33401 -1, /* -1 0 */
33402 -5, /* -1 1 */
33403 -7, /* 0 -1 */
33404 0, /* 0 0 */
33405 7, /* 0 1 */
33406 5, /* 1 -1 */
33407 1, /* 1 0 */
33408 3 /* 1 1 */
33409 ];
33410
33411 var jsf = getJSF(coeffs[a], coeffs[b]);
33412 max = Math.max(jsf[0].length, max);
33413 naf[a] = new Array(max);
33414 naf[b] = new Array(max);
33415 for (var j = 0; j < max; j++) {
33416 var ja = jsf[0][j] | 0;
33417 var jb = jsf[1][j] | 0;
33418
33419 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33420 naf[b][j] = 0;
33421 wnd[a] = comb;
33422 }
33423 }
33424
33425 var acc = this.jpoint(null, null, null);
33426 var tmp = this._wnafT4;
33427 for (var i = max; i >= 0; i--) {
33428 var k = 0;
33429
33430 while (i >= 0) {
33431 var zero = true;
33432 for (var j = 0; j < len; j++) {
33433 tmp[j] = naf[j][i] | 0;
33434 if (tmp[j] !== 0)
33435 zero = false;
33436 }
33437 if (!zero)
33438 break;
33439 k++;
33440 i--;
33441 }
33442 if (i >= 0)
33443 k++;
33444 acc = acc.dblp(k);
33445 if (i < 0)
33446 break;
33447
33448 for (var j = 0; j < len; j++) {
33449 var z = tmp[j];
33450 var p;
33451 if (z === 0)
33452 continue;
33453 else if (z > 0)
33454 p = wnd[j][(z - 1) >> 1];
33455 else if (z < 0)
33456 p = wnd[j][(-z - 1) >> 1].neg();
33457
33458 if (p.type === 'affine')
33459 acc = acc.mixedAdd(p);
33460 else
33461 acc = acc.add(p);
33462 }
33463 }
33464 // Zeroify references
33465 for (var i = 0; i < len; i++)
33466 wnd[i] = null;
33467
33468 if (jacobianResult)
33469 return acc;
33470 else
33471 return acc.toP();
33472 };
33473
33474 function BasePoint(curve, type) {
33475 this.curve = curve;
33476 this.type = type;
33477 this.precomputed = null;
33478 }
33479 BaseCurve.BasePoint = BasePoint;
33480
33481 BasePoint.prototype.eq = function eq(/*other*/) {
33482 throw new Error('Not implemented');
33483 };
33484
33485 BasePoint.prototype.validate = function validate() {
33486 return this.curve.validate(this);
33487 };
33488
33489 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33490 bytes = utils.toArray(bytes, enc);
33491
33492 var len = this.p.byteLength();
33493
33494 // uncompressed, hybrid-odd, hybrid-even
33495 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33496 bytes.length - 1 === 2 * len) {
33497 if (bytes[0] === 0x06)
33498 assert(bytes[bytes.length - 1] % 2 === 0);
33499 else if (bytes[0] === 0x07)
33500 assert(bytes[bytes.length - 1] % 2 === 1);
33501
33502 var res = this.point(bytes.slice(1, 1 + len),
33503 bytes.slice(1 + len, 1 + 2 * len));
33504
33505 return res;
33506 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33507 bytes.length - 1 === len) {
33508 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
33509 }
33510 throw new Error('Unknown point format');
33511 };
33512
33513 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33514 return this.encode(enc, true);
33515 };
33516
33517 BasePoint.prototype._encode = function _encode(compact) {
33518 var len = this.curve.p.byteLength();
33519 var x = this.getX().toArray('be', len);
33520
33521 if (compact)
33522 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33523
33524 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33525 };
33526
33527 BasePoint.prototype.encode = function encode(enc, compact) {
33528 return utils.encode(this._encode(compact), enc);
33529 };
33530
33531 BasePoint.prototype.precompute = function precompute(power) {
33532 if (this.precomputed)
33533 return this;
33534
33535 var precomputed = {
33536 doubles: null,
33537 naf: null,
33538 beta: null
33539 };
33540 precomputed.naf = this._getNAFPoints(8);
33541 precomputed.doubles = this._getDoubles(4, power);
33542 precomputed.beta = this._getBeta();
33543 this.precomputed = precomputed;
33544
33545 return this;
33546 };
33547
33548 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33549 if (!this.precomputed)
33550 return false;
33551
33552 var doubles = this.precomputed.doubles;
33553 if (!doubles)
33554 return false;
33555
33556 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33557 };
33558
33559 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33560 if (this.precomputed && this.precomputed.doubles)
33561 return this.precomputed.doubles;
33562
33563 var doubles = [ this ];
33564 var acc = this;
33565 for (var i = 0; i < power; i += step) {
33566 for (var j = 0; j < step; j++)
33567 acc = acc.dbl();
33568 doubles.push(acc);
33569 }
33570 return {
33571 step: step,
33572 points: doubles
33573 };
33574 };
33575
33576 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33577 if (this.precomputed && this.precomputed.naf)
33578 return this.precomputed.naf;
33579
33580 var res = [ this ];
33581 var max = (1 << wnd) - 1;
33582 var dbl = max === 1 ? null : this.dbl();
33583 for (var i = 1; i < max; i++)
33584 res[i] = res[i - 1].add(dbl);
33585 return {
33586 wnd: wnd,
33587 points: res
33588 };
33589 };
33590
33591 BasePoint.prototype._getBeta = function _getBeta() {
33592 return null;
33593 };
33594
33595 BasePoint.prototype.dblp = function dblp(k) {
33596 var r = this;
33597 for (var i = 0; i < k; i++)
33598 r = r.dbl();
33599 return r;
33600 };
33601
33602 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33603 'use strict';
33604
33605 var curve = require('../curve');
33606 var elliptic = require('../../elliptic');
33607 var BN = require('bn.js');
33608 var inherits = require('inherits');
33609 var Base = curve.base;
33610
33611 var assert = elliptic.utils.assert;
33612
33613 function EdwardsCurve(conf) {
33614 // NOTE: Important as we are creating point in Base.call()
33615 this.twisted = (conf.a | 0) !== 1;
33616 this.mOneA = this.twisted && (conf.a | 0) === -1;
33617 this.extended = this.mOneA;
33618
33619 Base.call(this, 'edwards', conf);
33620
33621 this.a = new BN(conf.a, 16).umod(this.red.m);
33622 this.a = this.a.toRed(this.red);
33623 this.c = new BN(conf.c, 16).toRed(this.red);
33624 this.c2 = this.c.redSqr();
33625 this.d = new BN(conf.d, 16).toRed(this.red);
33626 this.dd = this.d.redAdd(this.d);
33627
33628 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33629 this.oneC = (conf.c | 0) === 1;
33630 }
33631 inherits(EdwardsCurve, Base);
33632 module.exports = EdwardsCurve;
33633
33634 EdwardsCurve.prototype._mulA = function _mulA(num) {
33635 if (this.mOneA)
33636 return num.redNeg();
33637 else
33638 return this.a.redMul(num);
33639 };
33640
33641 EdwardsCurve.prototype._mulC = function _mulC(num) {
33642 if (this.oneC)
33643 return num;
33644 else
33645 return this.c.redMul(num);
33646 };
33647
33648 // Just for compatibility with Short curve
33649 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33650 return this.point(x, y, z, t);
33651 };
33652
33653 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33654 x = new BN(x, 16);
33655 if (!x.red)
33656 x = x.toRed(this.red);
33657
33658 var x2 = x.redSqr();
33659 var rhs = this.c2.redSub(this.a.redMul(x2));
33660 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33661
33662 var y2 = rhs.redMul(lhs.redInvm());
33663 var y = y2.redSqrt();
33664 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33665 throw new Error('invalid point');
33666
33667 var isOdd = y.fromRed().isOdd();
33668 if (odd && !isOdd || !odd && isOdd)
33669 y = y.redNeg();
33670
33671 return this.point(x, y);
33672 };
33673
33674 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33675 y = new BN(y, 16);
33676 if (!y.red)
33677 y = y.toRed(this.red);
33678
33679 // x^2 = (y^2 - 1) / (d y^2 + 1)
33680 var y2 = y.redSqr();
33681 var lhs = y2.redSub(this.one);
33682 var rhs = y2.redMul(this.d).redAdd(this.one);
33683 var x2 = lhs.redMul(rhs.redInvm());
33684
33685 if (x2.cmp(this.zero) === 0) {
33686 if (odd)
33687 throw new Error('invalid point');
33688 else
33689 return this.point(this.zero, y);
33690 }
33691
33692 var x = x2.redSqrt();
33693 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33694 throw new Error('invalid point');
33695
33696 if (x.isOdd() !== odd)
33697 x = x.redNeg();
33698
33699 return this.point(x, y);
33700 };
33701
33702 EdwardsCurve.prototype.validate = function validate(point) {
33703 if (point.isInfinity())
33704 return true;
33705
33706 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33707 point.normalize();
33708
33709 var x2 = point.x.redSqr();
33710 var y2 = point.y.redSqr();
33711 var lhs = x2.redMul(this.a).redAdd(y2);
33712 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
33713
33714 return lhs.cmp(rhs) === 0;
33715 };
33716
33717 function Point(curve, x, y, z, t) {
33718 Base.BasePoint.call(this, curve, 'projective');
33719 if (x === null && y === null && z === null) {
33720 this.x = this.curve.zero;
33721 this.y = this.curve.one;
33722 this.z = this.curve.one;
33723 this.t = this.curve.zero;
33724 this.zOne = true;
33725 } else {
33726 this.x = new BN(x, 16);
33727 this.y = new BN(y, 16);
33728 this.z = z ? new BN(z, 16) : this.curve.one;
33729 this.t = t && new BN(t, 16);
33730 if (!this.x.red)
33731 this.x = this.x.toRed(this.curve.red);
33732 if (!this.y.red)
33733 this.y = this.y.toRed(this.curve.red);
33734 if (!this.z.red)
33735 this.z = this.z.toRed(this.curve.red);
33736 if (this.t && !this.t.red)
33737 this.t = this.t.toRed(this.curve.red);
33738 this.zOne = this.z === this.curve.one;
33739
33740 // Use extended coordinates
33741 if (this.curve.extended && !this.t) {
33742 this.t = this.x.redMul(this.y);
33743 if (!this.zOne)
33744 this.t = this.t.redMul(this.z.redInvm());
33745 }
33746 }
33747 }
33748 inherits(Point, Base.BasePoint);
33749
33750 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33751 return Point.fromJSON(this, obj);
33752 };
33753
33754 EdwardsCurve.prototype.point = function point(x, y, z, t) {
33755 return new Point(this, x, y, z, t);
33756 };
33757
33758 Point.fromJSON = function fromJSON(curve, obj) {
33759 return new Point(curve, obj[0], obj[1], obj[2]);
33760 };
33761
33762 Point.prototype.inspect = function inspect() {
33763 if (this.isInfinity())
33764 return '<EC Point Infinity>';
33765 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33766 ' y: ' + this.y.fromRed().toString(16, 2) +
33767 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33768 };
33769
33770 Point.prototype.isInfinity = function isInfinity() {
33771 // XXX This code assumes that zero is always zero in red
33772 return this.x.cmpn(0) === 0 &&
33773 this.y.cmp(this.z) === 0;
33774 };
33775
33776 Point.prototype._extDbl = function _extDbl() {
33777 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33778 // #doubling-dbl-2008-hwcd
33779 // 4M + 4S
33780
33781 // A = X1^2
33782 var a = this.x.redSqr();
33783 // B = Y1^2
33784 var b = this.y.redSqr();
33785 // C = 2 * Z1^2
33786 var c = this.z.redSqr();
33787 c = c.redIAdd(c);
33788 // D = a * A
33789 var d = this.curve._mulA(a);
33790 // E = (X1 + Y1)^2 - A - B
33791 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33792 // G = D + B
33793 var g = d.redAdd(b);
33794 // F = G - C
33795 var f = g.redSub(c);
33796 // H = D - B
33797 var h = d.redSub(b);
33798 // X3 = E * F
33799 var nx = e.redMul(f);
33800 // Y3 = G * H
33801 var ny = g.redMul(h);
33802 // T3 = E * H
33803 var nt = e.redMul(h);
33804 // Z3 = F * G
33805 var nz = f.redMul(g);
33806 return this.curve.point(nx, ny, nz, nt);
33807 };
33808
33809 Point.prototype._projDbl = function _projDbl() {
33810 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33811 // #doubling-dbl-2008-bbjlp
33812 // #doubling-dbl-2007-bl
33813 // and others
33814 // Generally 3M + 4S or 2M + 4S
33815
33816 // B = (X1 + Y1)^2
33817 var b = this.x.redAdd(this.y).redSqr();
33818 // C = X1^2
33819 var c = this.x.redSqr();
33820 // D = Y1^2
33821 var d = this.y.redSqr();
33822
33823 var nx;
33824 var ny;
33825 var nz;
33826 if (this.curve.twisted) {
33827 // E = a * C
33828 var e = this.curve._mulA(c);
33829 // F = E + D
33830 var f = e.redAdd(d);
33831 if (this.zOne) {
33832 // X3 = (B - C - D) * (F - 2)
33833 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33834 // Y3 = F * (E - D)
33835 ny = f.redMul(e.redSub(d));
33836 // Z3 = F^2 - 2 * F
33837 nz = f.redSqr().redSub(f).redSub(f);
33838 } else {
33839 // H = Z1^2
33840 var h = this.z.redSqr();
33841 // J = F - 2 * H
33842 var j = f.redSub(h).redISub(h);
33843 // X3 = (B-C-D)*J
33844 nx = b.redSub(c).redISub(d).redMul(j);
33845 // Y3 = F * (E - D)
33846 ny = f.redMul(e.redSub(d));
33847 // Z3 = F * J
33848 nz = f.redMul(j);
33849 }
33850 } else {
33851 // E = C + D
33852 var e = c.redAdd(d);
33853 // H = (c * Z1)^2
33854 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33855 // J = E - 2 * H
33856 var j = e.redSub(h).redSub(h);
33857 // X3 = c * (B - E) * J
33858 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33859 // Y3 = c * E * (C - D)
33860 ny = this.curve._mulC(e).redMul(c.redISub(d));
33861 // Z3 = E * J
33862 nz = e.redMul(j);
33863 }
33864 return this.curve.point(nx, ny, nz);
33865 };
33866
33867 Point.prototype.dbl = function dbl() {
33868 if (this.isInfinity())
33869 return this;
33870
33871 // Double in extended coordinates
33872 if (this.curve.extended)
33873 return this._extDbl();
33874 else
33875 return this._projDbl();
33876 };
33877
33878 Point.prototype._extAdd = function _extAdd(p) {
33879 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33880 // #addition-add-2008-hwcd-3
33881 // 8M
33882
33883 // A = (Y1 - X1) * (Y2 - X2)
33884 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33885 // B = (Y1 + X1) * (Y2 + X2)
33886 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33887 // C = T1 * k * T2
33888 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33889 // D = Z1 * 2 * Z2
33890 var d = this.z.redMul(p.z.redAdd(p.z));
33891 // E = B - A
33892 var e = b.redSub(a);
33893 // F = D - C
33894 var f = d.redSub(c);
33895 // G = D + C
33896 var g = d.redAdd(c);
33897 // H = B + A
33898 var h = b.redAdd(a);
33899 // X3 = E * F
33900 var nx = e.redMul(f);
33901 // Y3 = G * H
33902 var ny = g.redMul(h);
33903 // T3 = E * H
33904 var nt = e.redMul(h);
33905 // Z3 = F * G
33906 var nz = f.redMul(g);
33907 return this.curve.point(nx, ny, nz, nt);
33908 };
33909
33910 Point.prototype._projAdd = function _projAdd(p) {
33911 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33912 // #addition-add-2008-bbjlp
33913 // #addition-add-2007-bl
33914 // 10M + 1S
33915
33916 // A = Z1 * Z2
33917 var a = this.z.redMul(p.z);
33918 // B = A^2
33919 var b = a.redSqr();
33920 // C = X1 * X2
33921 var c = this.x.redMul(p.x);
33922 // D = Y1 * Y2
33923 var d = this.y.redMul(p.y);
33924 // E = d * C * D
33925 var e = this.curve.d.redMul(c).redMul(d);
33926 // F = B - E
33927 var f = b.redSub(e);
33928 // G = B + E
33929 var g = b.redAdd(e);
33930 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33931 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33932 var nx = a.redMul(f).redMul(tmp);
33933 var ny;
33934 var nz;
33935 if (this.curve.twisted) {
33936 // Y3 = A * G * (D - a * C)
33937 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33938 // Z3 = F * G
33939 nz = f.redMul(g);
33940 } else {
33941 // Y3 = A * G * (D - C)
33942 ny = a.redMul(g).redMul(d.redSub(c));
33943 // Z3 = c * F * G
33944 nz = this.curve._mulC(f).redMul(g);
33945 }
33946 return this.curve.point(nx, ny, nz);
33947 };
33948
33949 Point.prototype.add = function add(p) {
33950 if (this.isInfinity())
33951 return p;
33952 if (p.isInfinity())
33953 return this;
33954
33955 if (this.curve.extended)
33956 return this._extAdd(p);
33957 else
33958 return this._projAdd(p);
33959 };
33960
33961 Point.prototype.mul = function mul(k) {
33962 if (this._hasDoubles(k))
33963 return this.curve._fixedNafMul(this, k);
33964 else
33965 return this.curve._wnafMul(this, k);
33966 };
33967
33968 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33969 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33970 };
33971
33972 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33973 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33974 };
33975
33976 Point.prototype.normalize = function normalize() {
33977 if (this.zOne)
33978 return this;
33979
33980 // Normalize coordinates
33981 var zi = this.z.redInvm();
33982 this.x = this.x.redMul(zi);
33983 this.y = this.y.redMul(zi);
33984 if (this.t)
33985 this.t = this.t.redMul(zi);
33986 this.z = this.curve.one;
33987 this.zOne = true;
33988 return this;
33989 };
33990
33991 Point.prototype.neg = function neg() {
33992 return this.curve.point(this.x.redNeg(),
33993 this.y,
33994 this.z,
33995 this.t && this.t.redNeg());
33996 };
33997
33998 Point.prototype.getX = function getX() {
33999 this.normalize();
34000 return this.x.fromRed();
34001 };
34002
34003 Point.prototype.getY = function getY() {
34004 this.normalize();
34005 return this.y.fromRed();
34006 };
34007
34008 Point.prototype.eq = function eq(other) {
34009 return this === other ||
34010 this.getX().cmp(other.getX()) === 0 &&
34011 this.getY().cmp(other.getY()) === 0;
34012 };
34013
34014 Point.prototype.eqXToP = function eqXToP(x) {
34015 var rx = x.toRed(this.curve.red).redMul(this.z);
34016 if (this.x.cmp(rx) === 0)
34017 return true;
34018
34019 var xc = x.clone();
34020 var t = this.curve.redN.redMul(this.z);
34021 for (;;) {
34022 xc.iadd(this.curve.n);
34023 if (xc.cmp(this.curve.p) >= 0)
34024 return false;
34025
34026 rx.redIAdd(t);
34027 if (this.x.cmp(rx) === 0)
34028 return true;
34029 }
34030 return false;
34031 };
34032
34033 // Compatibility with BaseCurve
34034 Point.prototype.toP = Point.prototype.normalize;
34035 Point.prototype.mixedAdd = Point.prototype.add;
34036
34037 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
34038 'use strict';
34039
34040 var curve = exports;
34041
34042 curve.base = require('./base');
34043 curve.short = require('./short');
34044 curve.mont = require('./mont');
34045 curve.edwards = require('./edwards');
34046
34047 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
34048 'use strict';
34049
34050 var curve = require('../curve');
34051 var BN = require('bn.js');
34052 var inherits = require('inherits');
34053 var Base = curve.base;
34054
34055 var elliptic = require('../../elliptic');
34056 var utils = elliptic.utils;
34057
34058 function MontCurve(conf) {
34059 Base.call(this, 'mont', conf);
34060
34061 this.a = new BN(conf.a, 16).toRed(this.red);
34062 this.b = new BN(conf.b, 16).toRed(this.red);
34063 this.i4 = new BN(4).toRed(this.red).redInvm();
34064 this.two = new BN(2).toRed(this.red);
34065 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
34066 }
34067 inherits(MontCurve, Base);
34068 module.exports = MontCurve;
34069
34070 MontCurve.prototype.validate = function validate(point) {
34071 var x = point.normalize().x;
34072 var x2 = x.redSqr();
34073 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
34074 var y = rhs.redSqrt();
34075
34076 return y.redSqr().cmp(rhs) === 0;
34077 };
34078
34079 function Point(curve, x, z) {
34080 Base.BasePoint.call(this, curve, 'projective');
34081 if (x === null && z === null) {
34082 this.x = this.curve.one;
34083 this.z = this.curve.zero;
34084 } else {
34085 this.x = new BN(x, 16);
34086 this.z = new BN(z, 16);
34087 if (!this.x.red)
34088 this.x = this.x.toRed(this.curve.red);
34089 if (!this.z.red)
34090 this.z = this.z.toRed(this.curve.red);
34091 }
34092 }
34093 inherits(Point, Base.BasePoint);
34094
34095 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
34096 return this.point(utils.toArray(bytes, enc), 1);
34097 };
34098
34099 MontCurve.prototype.point = function point(x, z) {
34100 return new Point(this, x, z);
34101 };
34102
34103 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
34104 return Point.fromJSON(this, obj);
34105 };
34106
34107 Point.prototype.precompute = function precompute() {
34108 // No-op
34109 };
34110
34111 Point.prototype._encode = function _encode() {
34112 return this.getX().toArray('be', this.curve.p.byteLength());
34113 };
34114
34115 Point.fromJSON = function fromJSON(curve, obj) {
34116 return new Point(curve, obj[0], obj[1] || curve.one);
34117 };
34118
34119 Point.prototype.inspect = function inspect() {
34120 if (this.isInfinity())
34121 return '<EC Point Infinity>';
34122 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34123 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
34124 };
34125
34126 Point.prototype.isInfinity = function isInfinity() {
34127 // XXX This code assumes that zero is always zero in red
34128 return this.z.cmpn(0) === 0;
34129 };
34130
34131 Point.prototype.dbl = function dbl() {
34132 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
34133 // 2M + 2S + 4A
34134
34135 // A = X1 + Z1
34136 var a = this.x.redAdd(this.z);
34137 // AA = A^2
34138 var aa = a.redSqr();
34139 // B = X1 - Z1
34140 var b = this.x.redSub(this.z);
34141 // BB = B^2
34142 var bb = b.redSqr();
34143 // C = AA - BB
34144 var c = aa.redSub(bb);
34145 // X3 = AA * BB
34146 var nx = aa.redMul(bb);
34147 // Z3 = C * (BB + A24 * C)
34148 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34149 return this.curve.point(nx, nz);
34150 };
34151
34152 Point.prototype.add = function add() {
34153 throw new Error('Not supported on Montgomery curve');
34154 };
34155
34156 Point.prototype.diffAdd = function diffAdd(p, diff) {
34157 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34158 // 4M + 2S + 6A
34159
34160 // A = X2 + Z2
34161 var a = this.x.redAdd(this.z);
34162 // B = X2 - Z2
34163 var b = this.x.redSub(this.z);
34164 // C = X3 + Z3
34165 var c = p.x.redAdd(p.z);
34166 // D = X3 - Z3
34167 var d = p.x.redSub(p.z);
34168 // DA = D * A
34169 var da = d.redMul(a);
34170 // CB = C * B
34171 var cb = c.redMul(b);
34172 // X5 = Z1 * (DA + CB)^2
34173 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34174 // Z5 = X1 * (DA - CB)^2
34175 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34176 return this.curve.point(nx, nz);
34177 };
34178
34179 Point.prototype.mul = function mul(k) {
34180 var t = k.clone();
34181 var a = this; // (N / 2) * Q + Q
34182 var b = this.curve.point(null, null); // (N / 2) * Q
34183 var c = this; // Q
34184
34185 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34186 bits.push(t.andln(1));
34187
34188 for (var i = bits.length - 1; i >= 0; i--) {
34189 if (bits[i] === 0) {
34190 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34191 a = a.diffAdd(b, c);
34192 // N * Q = 2 * ((N / 2) * Q + Q))
34193 b = b.dbl();
34194 } else {
34195 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34196 b = a.diffAdd(b, c);
34197 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34198 a = a.dbl();
34199 }
34200 }
34201 return b;
34202 };
34203
34204 Point.prototype.mulAdd = function mulAdd() {
34205 throw new Error('Not supported on Montgomery curve');
34206 };
34207
34208 Point.prototype.jumlAdd = function jumlAdd() {
34209 throw new Error('Not supported on Montgomery curve');
34210 };
34211
34212 Point.prototype.eq = function eq(other) {
34213 return this.getX().cmp(other.getX()) === 0;
34214 };
34215
34216 Point.prototype.normalize = function normalize() {
34217 this.x = this.x.redMul(this.z.redInvm());
34218 this.z = this.curve.one;
34219 return this;
34220 };
34221
34222 Point.prototype.getX = function getX() {
34223 // Normalize coordinates
34224 this.normalize();
34225
34226 return this.x.fromRed();
34227 };
34228
34229 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
34230 'use strict';
34231
34232 var curve = require('../curve');
34233 var elliptic = require('../../elliptic');
34234 var BN = require('bn.js');
34235 var inherits = require('inherits');
34236 var Base = curve.base;
34237
34238 var assert = elliptic.utils.assert;
34239
34240 function ShortCurve(conf) {
34241 Base.call(this, 'short', conf);
34242
34243 this.a = new BN(conf.a, 16).toRed(this.red);
34244 this.b = new BN(conf.b, 16).toRed(this.red);
34245 this.tinv = this.two.redInvm();
34246
34247 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34248 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
34249
34250 // If the curve is endomorphic, precalculate beta and lambda
34251 this.endo = this._getEndomorphism(conf);
34252 this._endoWnafT1 = new Array(4);
34253 this._endoWnafT2 = new Array(4);
34254 }
34255 inherits(ShortCurve, Base);
34256 module.exports = ShortCurve;
34257
34258 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34259 // No efficient endomorphism
34260 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34261 return;
34262
34263 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34264 var beta;
34265 var lambda;
34266 if (conf.beta) {
34267 beta = new BN(conf.beta, 16).toRed(this.red);
34268 } else {
34269 var betas = this._getEndoRoots(this.p);
34270 // Choose the smallest beta
34271 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34272 beta = beta.toRed(this.red);
34273 }
34274 if (conf.lambda) {
34275 lambda = new BN(conf.lambda, 16);
34276 } else {
34277 // Choose the lambda that is matching selected beta
34278 var lambdas = this._getEndoRoots(this.n);
34279 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34280 lambda = lambdas[0];
34281 } else {
34282 lambda = lambdas[1];
34283 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34284 }
34285 }
34286
34287 // Get basis vectors, used for balanced length-two representation
34288 var basis;
34289 if (conf.basis) {
34290 basis = conf.basis.map(function(vec) {
34291 return {
34292 a: new BN(vec.a, 16),
34293 b: new BN(vec.b, 16)
34294 };
34295 });
34296 } else {
34297 basis = this._getEndoBasis(lambda);
34298 }
34299
34300 return {
34301 beta: beta,
34302 lambda: lambda,
34303 basis: basis
34304 };
34305 };
34306
34307 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34308 // Find roots of for x^2 + x + 1 in F
34309 // Root = (-1 +- Sqrt(-3)) / 2
34310 //
34311 var red = num === this.p ? this.red : BN.mont(num);
34312 var tinv = new BN(2).toRed(red).redInvm();
34313 var ntinv = tinv.redNeg();
34314
34315 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
34316
34317 var l1 = ntinv.redAdd(s).fromRed();
34318 var l2 = ntinv.redSub(s).fromRed();
34319 return [ l1, l2 ];
34320 };
34321
34322 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34323 // aprxSqrt >= sqrt(this.n)
34324 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34325
34326 // 3.74
34327 // Run EGCD, until r(L + 1) < aprxSqrt
34328 var u = lambda;
34329 var v = this.n.clone();
34330 var x1 = new BN(1);
34331 var y1 = new BN(0);
34332 var x2 = new BN(0);
34333 var y2 = new BN(1);
34334
34335 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34336 var a0;
34337 var b0;
34338 // First vector
34339 var a1;
34340 var b1;
34341 // Second vector
34342 var a2;
34343 var b2;
34344
34345 var prevR;
34346 var i = 0;
34347 var r;
34348 var x;
34349 while (u.cmpn(0) !== 0) {
34350 var q = v.div(u);
34351 r = v.sub(q.mul(u));
34352 x = x2.sub(q.mul(x1));
34353 var y = y2.sub(q.mul(y1));
34354
34355 if (!a1 && r.cmp(aprxSqrt) < 0) {
34356 a0 = prevR.neg();
34357 b0 = x1;
34358 a1 = r.neg();
34359 b1 = x;
34360 } else if (a1 && ++i === 2) {
34361 break;
34362 }
34363 prevR = r;
34364
34365 v = u;
34366 u = r;
34367 x2 = x1;
34368 x1 = x;
34369 y2 = y1;
34370 y1 = y;
34371 }
34372 a2 = r.neg();
34373 b2 = x;
34374
34375 var len1 = a1.sqr().add(b1.sqr());
34376 var len2 = a2.sqr().add(b2.sqr());
34377 if (len2.cmp(len1) >= 0) {
34378 a2 = a0;
34379 b2 = b0;
34380 }
34381
34382 // Normalize signs
34383 if (a1.negative) {
34384 a1 = a1.neg();
34385 b1 = b1.neg();
34386 }
34387 if (a2.negative) {
34388 a2 = a2.neg();
34389 b2 = b2.neg();
34390 }
34391
34392 return [
34393 { a: a1, b: b1 },
34394 { a: a2, b: b2 }
34395 ];
34396 };
34397
34398 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34399 var basis = this.endo.basis;
34400 var v1 = basis[0];
34401 var v2 = basis[1];
34402
34403 var c1 = v2.b.mul(k).divRound(this.n);
34404 var c2 = v1.b.neg().mul(k).divRound(this.n);
34405
34406 var p1 = c1.mul(v1.a);
34407 var p2 = c2.mul(v2.a);
34408 var q1 = c1.mul(v1.b);
34409 var q2 = c2.mul(v2.b);
34410
34411 // Calculate answer
34412 var k1 = k.sub(p1).sub(p2);
34413 var k2 = q1.add(q2).neg();
34414 return { k1: k1, k2: k2 };
34415 };
34416
34417 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34418 x = new BN(x, 16);
34419 if (!x.red)
34420 x = x.toRed(this.red);
34421
34422 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34423 var y = y2.redSqrt();
34424 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34425 throw new Error('invalid point');
34426
34427 // XXX Is there any way to tell if the number is odd without converting it
34428 // to non-red form?
34429 var isOdd = y.fromRed().isOdd();
34430 if (odd && !isOdd || !odd && isOdd)
34431 y = y.redNeg();
34432
34433 return this.point(x, y);
34434 };
34435
34436 ShortCurve.prototype.validate = function validate(point) {
34437 if (point.inf)
34438 return true;
34439
34440 var x = point.x;
34441 var y = point.y;
34442
34443 var ax = this.a.redMul(x);
34444 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34445 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34446 };
34447
34448 ShortCurve.prototype._endoWnafMulAdd =
34449 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34450 var npoints = this._endoWnafT1;
34451 var ncoeffs = this._endoWnafT2;
34452 for (var i = 0; i < points.length; i++) {
34453 var split = this._endoSplit(coeffs[i]);
34454 var p = points[i];
34455 var beta = p._getBeta();
34456
34457 if (split.k1.negative) {
34458 split.k1.ineg();
34459 p = p.neg(true);
34460 }
34461 if (split.k2.negative) {
34462 split.k2.ineg();
34463 beta = beta.neg(true);
34464 }
34465
34466 npoints[i * 2] = p;
34467 npoints[i * 2 + 1] = beta;
34468 ncoeffs[i * 2] = split.k1;
34469 ncoeffs[i * 2 + 1] = split.k2;
34470 }
34471 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
34472
34473 // Clean-up references to points and coefficients
34474 for (var j = 0; j < i * 2; j++) {
34475 npoints[j] = null;
34476 ncoeffs[j] = null;
34477 }
34478 return res;
34479 };
34480
34481 function Point(curve, x, y, isRed) {
34482 Base.BasePoint.call(this, curve, 'affine');
34483 if (x === null && y === null) {
34484 this.x = null;
34485 this.y = null;
34486 this.inf = true;
34487 } else {
34488 this.x = new BN(x, 16);
34489 this.y = new BN(y, 16);
34490 // Force redgomery representation when loading from JSON
34491 if (isRed) {
34492 this.x.forceRed(this.curve.red);
34493 this.y.forceRed(this.curve.red);
34494 }
34495 if (!this.x.red)
34496 this.x = this.x.toRed(this.curve.red);
34497 if (!this.y.red)
34498 this.y = this.y.toRed(this.curve.red);
34499 this.inf = false;
34500 }
34501 }
34502 inherits(Point, Base.BasePoint);
34503
34504 ShortCurve.prototype.point = function point(x, y, isRed) {
34505 return new Point(this, x, y, isRed);
34506 };
34507
34508 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34509 return Point.fromJSON(this, obj, red);
34510 };
34511
34512 Point.prototype._getBeta = function _getBeta() {
34513 if (!this.curve.endo)
34514 return;
34515
34516 var pre = this.precomputed;
34517 if (pre && pre.beta)
34518 return pre.beta;
34519
34520 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34521 if (pre) {
34522 var curve = this.curve;
34523 var endoMul = function(p) {
34524 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34525 };
34526 pre.beta = beta;
34527 beta.precomputed = {
34528 beta: null,
34529 naf: pre.naf && {
34530 wnd: pre.naf.wnd,
34531 points: pre.naf.points.map(endoMul)
34532 },
34533 doubles: pre.doubles && {
34534 step: pre.doubles.step,
34535 points: pre.doubles.points.map(endoMul)
34536 }
34537 };
34538 }
34539 return beta;
34540 };
34541
34542 Point.prototype.toJSON = function toJSON() {
34543 if (!this.precomputed)
34544 return [ this.x, this.y ];
34545
34546 return [ this.x, this.y, this.precomputed && {
34547 doubles: this.precomputed.doubles && {
34548 step: this.precomputed.doubles.step,
34549 points: this.precomputed.doubles.points.slice(1)
34550 },
34551 naf: this.precomputed.naf && {
34552 wnd: this.precomputed.naf.wnd,
34553 points: this.precomputed.naf.points.slice(1)
34554 }
34555 } ];
34556 };
34557
34558 Point.fromJSON = function fromJSON(curve, obj, red) {
34559 if (typeof obj === 'string')
34560 obj = JSON.parse(obj);
34561 var res = curve.point(obj[0], obj[1], red);
34562 if (!obj[2])
34563 return res;
34564
34565 function obj2point(obj) {
34566 return curve.point(obj[0], obj[1], red);
34567 }
34568
34569 var pre = obj[2];
34570 res.precomputed = {
34571 beta: null,
34572 doubles: pre.doubles && {
34573 step: pre.doubles.step,
34574 points: [ res ].concat(pre.doubles.points.map(obj2point))
34575 },
34576 naf: pre.naf && {
34577 wnd: pre.naf.wnd,
34578 points: [ res ].concat(pre.naf.points.map(obj2point))
34579 }
34580 };
34581 return res;
34582 };
34583
34584 Point.prototype.inspect = function inspect() {
34585 if (this.isInfinity())
34586 return '<EC Point Infinity>';
34587 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34588 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34589 };
34590
34591 Point.prototype.isInfinity = function isInfinity() {
34592 return this.inf;
34593 };
34594
34595 Point.prototype.add = function add(p) {
34596 // O + P = P
34597 if (this.inf)
34598 return p;
34599
34600 // P + O = P
34601 if (p.inf)
34602 return this;
34603
34604 // P + P = 2P
34605 if (this.eq(p))
34606 return this.dbl();
34607
34608 // P + (-P) = O
34609 if (this.neg().eq(p))
34610 return this.curve.point(null, null);
34611
34612 // P + Q = O
34613 if (this.x.cmp(p.x) === 0)
34614 return this.curve.point(null, null);
34615
34616 var c = this.y.redSub(p.y);
34617 if (c.cmpn(0) !== 0)
34618 c = c.redMul(this.x.redSub(p.x).redInvm());
34619 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34620 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34621 return this.curve.point(nx, ny);
34622 };
34623
34624 Point.prototype.dbl = function dbl() {
34625 if (this.inf)
34626 return this;
34627
34628 // 2P = O
34629 var ys1 = this.y.redAdd(this.y);
34630 if (ys1.cmpn(0) === 0)
34631 return this.curve.point(null, null);
34632
34633 var a = this.curve.a;
34634
34635 var x2 = this.x.redSqr();
34636 var dyinv = ys1.redInvm();
34637 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
34638
34639 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34640 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34641 return this.curve.point(nx, ny);
34642 };
34643
34644 Point.prototype.getX = function getX() {
34645 return this.x.fromRed();
34646 };
34647
34648 Point.prototype.getY = function getY() {
34649 return this.y.fromRed();
34650 };
34651
34652 Point.prototype.mul = function mul(k) {
34653 k = new BN(k, 16);
34654
34655 if (this._hasDoubles(k))
34656 return this.curve._fixedNafMul(this, k);
34657 else if (this.curve.endo)
34658 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34659 else
34660 return this.curve._wnafMul(this, k);
34661 };
34662
34663 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34664 var points = [ this, p2 ];
34665 var coeffs = [ k1, k2 ];
34666 if (this.curve.endo)
34667 return this.curve._endoWnafMulAdd(points, coeffs);
34668 else
34669 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34670 };
34671
34672 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34673 var points = [ this, p2 ];
34674 var coeffs = [ k1, k2 ];
34675 if (this.curve.endo)
34676 return this.curve._endoWnafMulAdd(points, coeffs, true);
34677 else
34678 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34679 };
34680
34681 Point.prototype.eq = function eq(p) {
34682 return this === p ||
34683 this.inf === p.inf &&
34684 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34685 };
34686
34687 Point.prototype.neg = function neg(_precompute) {
34688 if (this.inf)
34689 return this;
34690
34691 var res = this.curve.point(this.x, this.y.redNeg());
34692 if (_precompute && this.precomputed) {
34693 var pre = this.precomputed;
34694 var negate = function(p) {
34695 return p.neg();
34696 };
34697 res.precomputed = {
34698 naf: pre.naf && {
34699 wnd: pre.naf.wnd,
34700 points: pre.naf.points.map(negate)
34701 },
34702 doubles: pre.doubles && {
34703 step: pre.doubles.step,
34704 points: pre.doubles.points.map(negate)
34705 }
34706 };
34707 }
34708 return res;
34709 };
34710
34711 Point.prototype.toJ = function toJ() {
34712 if (this.inf)
34713 return this.curve.jpoint(null, null, null);
34714
34715 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34716 return res;
34717 };
34718
34719 function JPoint(curve, x, y, z) {
34720 Base.BasePoint.call(this, curve, 'jacobian');
34721 if (x === null && y === null && z === null) {
34722 this.x = this.curve.one;
34723 this.y = this.curve.one;
34724 this.z = new BN(0);
34725 } else {
34726 this.x = new BN(x, 16);
34727 this.y = new BN(y, 16);
34728 this.z = new BN(z, 16);
34729 }
34730 if (!this.x.red)
34731 this.x = this.x.toRed(this.curve.red);
34732 if (!this.y.red)
34733 this.y = this.y.toRed(this.curve.red);
34734 if (!this.z.red)
34735 this.z = this.z.toRed(this.curve.red);
34736
34737 this.zOne = this.z === this.curve.one;
34738 }
34739 inherits(JPoint, Base.BasePoint);
34740
34741 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34742 return new JPoint(this, x, y, z);
34743 };
34744
34745 JPoint.prototype.toP = function toP() {
34746 if (this.isInfinity())
34747 return this.curve.point(null, null);
34748
34749 var zinv = this.z.redInvm();
34750 var zinv2 = zinv.redSqr();
34751 var ax = this.x.redMul(zinv2);
34752 var ay = this.y.redMul(zinv2).redMul(zinv);
34753
34754 return this.curve.point(ax, ay);
34755 };
34756
34757 JPoint.prototype.neg = function neg() {
34758 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34759 };
34760
34761 JPoint.prototype.add = function add(p) {
34762 // O + P = P
34763 if (this.isInfinity())
34764 return p;
34765
34766 // P + O = P
34767 if (p.isInfinity())
34768 return this;
34769
34770 // 12M + 4S + 7A
34771 var pz2 = p.z.redSqr();
34772 var z2 = this.z.redSqr();
34773 var u1 = this.x.redMul(pz2);
34774 var u2 = p.x.redMul(z2);
34775 var s1 = this.y.redMul(pz2.redMul(p.z));
34776 var s2 = p.y.redMul(z2.redMul(this.z));
34777
34778 var h = u1.redSub(u2);
34779 var r = s1.redSub(s2);
34780 if (h.cmpn(0) === 0) {
34781 if (r.cmpn(0) !== 0)
34782 return this.curve.jpoint(null, null, null);
34783 else
34784 return this.dbl();
34785 }
34786
34787 var h2 = h.redSqr();
34788 var h3 = h2.redMul(h);
34789 var v = u1.redMul(h2);
34790
34791 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34792 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34793 var nz = this.z.redMul(p.z).redMul(h);
34794
34795 return this.curve.jpoint(nx, ny, nz);
34796 };
34797
34798 JPoint.prototype.mixedAdd = function mixedAdd(p) {
34799 // O + P = P
34800 if (this.isInfinity())
34801 return p.toJ();
34802
34803 // P + O = P
34804 if (p.isInfinity())
34805 return this;
34806
34807 // 8M + 3S + 7A
34808 var z2 = this.z.redSqr();
34809 var u1 = this.x;
34810 var u2 = p.x.redMul(z2);
34811 var s1 = this.y;
34812 var s2 = p.y.redMul(z2).redMul(this.z);
34813
34814 var h = u1.redSub(u2);
34815 var r = s1.redSub(s2);
34816 if (h.cmpn(0) === 0) {
34817 if (r.cmpn(0) !== 0)
34818 return this.curve.jpoint(null, null, null);
34819 else
34820 return this.dbl();
34821 }
34822
34823 var h2 = h.redSqr();
34824 var h3 = h2.redMul(h);
34825 var v = u1.redMul(h2);
34826
34827 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34828 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34829 var nz = this.z.redMul(h);
34830
34831 return this.curve.jpoint(nx, ny, nz);
34832 };
34833
34834 JPoint.prototype.dblp = function dblp(pow) {
34835 if (pow === 0)
34836 return this;
34837 if (this.isInfinity())
34838 return this;
34839 if (!pow)
34840 return this.dbl();
34841
34842 if (this.curve.zeroA || this.curve.threeA) {
34843 var r = this;
34844 for (var i = 0; i < pow; i++)
34845 r = r.dbl();
34846 return r;
34847 }
34848
34849 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34850 // N = 1 => 6M + 6S + 9A
34851 var a = this.curve.a;
34852 var tinv = this.curve.tinv;
34853
34854 var jx = this.x;
34855 var jy = this.y;
34856 var jz = this.z;
34857 var jz4 = jz.redSqr().redSqr();
34858
34859 // Reuse results
34860 var jyd = jy.redAdd(jy);
34861 for (var i = 0; i < pow; i++) {
34862 var jx2 = jx.redSqr();
34863 var jyd2 = jyd.redSqr();
34864 var jyd4 = jyd2.redSqr();
34865 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34866
34867 var t1 = jx.redMul(jyd2);
34868 var nx = c.redSqr().redISub(t1.redAdd(t1));
34869 var t2 = t1.redISub(nx);
34870 var dny = c.redMul(t2);
34871 dny = dny.redIAdd(dny).redISub(jyd4);
34872 var nz = jyd.redMul(jz);
34873 if (i + 1 < pow)
34874 jz4 = jz4.redMul(jyd4);
34875
34876 jx = nx;
34877 jz = nz;
34878 jyd = dny;
34879 }
34880
34881 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34882 };
34883
34884 JPoint.prototype.dbl = function dbl() {
34885 if (this.isInfinity())
34886 return this;
34887
34888 if (this.curve.zeroA)
34889 return this._zeroDbl();
34890 else if (this.curve.threeA)
34891 return this._threeDbl();
34892 else
34893 return this._dbl();
34894 };
34895
34896 JPoint.prototype._zeroDbl = function _zeroDbl() {
34897 var nx;
34898 var ny;
34899 var nz;
34900 // Z = 1
34901 if (this.zOne) {
34902 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34903 // #doubling-mdbl-2007-bl
34904 // 1M + 5S + 14A
34905
34906 // XX = X1^2
34907 var xx = this.x.redSqr();
34908 // YY = Y1^2
34909 var yy = this.y.redSqr();
34910 // YYYY = YY^2
34911 var yyyy = yy.redSqr();
34912 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34913 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34914 s = s.redIAdd(s);
34915 // M = 3 * XX + a; a = 0
34916 var m = xx.redAdd(xx).redIAdd(xx);
34917 // T = M ^ 2 - 2*S
34918 var t = m.redSqr().redISub(s).redISub(s);
34919
34920 // 8 * YYYY
34921 var yyyy8 = yyyy.redIAdd(yyyy);
34922 yyyy8 = yyyy8.redIAdd(yyyy8);
34923 yyyy8 = yyyy8.redIAdd(yyyy8);
34924
34925 // X3 = T
34926 nx = t;
34927 // Y3 = M * (S - T) - 8 * YYYY
34928 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34929 // Z3 = 2*Y1
34930 nz = this.y.redAdd(this.y);
34931 } else {
34932 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34933 // #doubling-dbl-2009-l
34934 // 2M + 5S + 13A
34935
34936 // A = X1^2
34937 var a = this.x.redSqr();
34938 // B = Y1^2
34939 var b = this.y.redSqr();
34940 // C = B^2
34941 var c = b.redSqr();
34942 // D = 2 * ((X1 + B)^2 - A - C)
34943 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34944 d = d.redIAdd(d);
34945 // E = 3 * A
34946 var e = a.redAdd(a).redIAdd(a);
34947 // F = E^2
34948 var f = e.redSqr();
34949
34950 // 8 * C
34951 var c8 = c.redIAdd(c);
34952 c8 = c8.redIAdd(c8);
34953 c8 = c8.redIAdd(c8);
34954
34955 // X3 = F - 2 * D
34956 nx = f.redISub(d).redISub(d);
34957 // Y3 = E * (D - X3) - 8 * C
34958 ny = e.redMul(d.redISub(nx)).redISub(c8);
34959 // Z3 = 2 * Y1 * Z1
34960 nz = this.y.redMul(this.z);
34961 nz = nz.redIAdd(nz);
34962 }
34963
34964 return this.curve.jpoint(nx, ny, nz);
34965 };
34966
34967 JPoint.prototype._threeDbl = function _threeDbl() {
34968 var nx;
34969 var ny;
34970 var nz;
34971 // Z = 1
34972 if (this.zOne) {
34973 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34974 // #doubling-mdbl-2007-bl
34975 // 1M + 5S + 15A
34976
34977 // XX = X1^2
34978 var xx = this.x.redSqr();
34979 // YY = Y1^2
34980 var yy = this.y.redSqr();
34981 // YYYY = YY^2
34982 var yyyy = yy.redSqr();
34983 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34984 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34985 s = s.redIAdd(s);
34986 // M = 3 * XX + a
34987 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34988 // T = M^2 - 2 * S
34989 var t = m.redSqr().redISub(s).redISub(s);
34990 // X3 = T
34991 nx = t;
34992 // Y3 = M * (S - T) - 8 * YYYY
34993 var yyyy8 = yyyy.redIAdd(yyyy);
34994 yyyy8 = yyyy8.redIAdd(yyyy8);
34995 yyyy8 = yyyy8.redIAdd(yyyy8);
34996 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34997 // Z3 = 2 * Y1
34998 nz = this.y.redAdd(this.y);
34999 } else {
35000 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
35001 // 3M + 5S
35002
35003 // delta = Z1^2
35004 var delta = this.z.redSqr();
35005 // gamma = Y1^2
35006 var gamma = this.y.redSqr();
35007 // beta = X1 * gamma
35008 var beta = this.x.redMul(gamma);
35009 // alpha = 3 * (X1 - delta) * (X1 + delta)
35010 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
35011 alpha = alpha.redAdd(alpha).redIAdd(alpha);
35012 // X3 = alpha^2 - 8 * beta
35013 var beta4 = beta.redIAdd(beta);
35014 beta4 = beta4.redIAdd(beta4);
35015 var beta8 = beta4.redAdd(beta4);
35016 nx = alpha.redSqr().redISub(beta8);
35017 // Z3 = (Y1 + Z1)^2 - gamma - delta
35018 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
35019 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
35020 var ggamma8 = gamma.redSqr();
35021 ggamma8 = ggamma8.redIAdd(ggamma8);
35022 ggamma8 = ggamma8.redIAdd(ggamma8);
35023 ggamma8 = ggamma8.redIAdd(ggamma8);
35024 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
35025 }
35026
35027 return this.curve.jpoint(nx, ny, nz);
35028 };
35029
35030 JPoint.prototype._dbl = function _dbl() {
35031 var a = this.curve.a;
35032
35033 // 4M + 6S + 10A
35034 var jx = this.x;
35035 var jy = this.y;
35036 var jz = this.z;
35037 var jz4 = jz.redSqr().redSqr();
35038
35039 var jx2 = jx.redSqr();
35040 var jy2 = jy.redSqr();
35041
35042 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
35043
35044 var jxd4 = jx.redAdd(jx);
35045 jxd4 = jxd4.redIAdd(jxd4);
35046 var t1 = jxd4.redMul(jy2);
35047 var nx = c.redSqr().redISub(t1.redAdd(t1));
35048 var t2 = t1.redISub(nx);
35049
35050 var jyd8 = jy2.redSqr();
35051 jyd8 = jyd8.redIAdd(jyd8);
35052 jyd8 = jyd8.redIAdd(jyd8);
35053 jyd8 = jyd8.redIAdd(jyd8);
35054 var ny = c.redMul(t2).redISub(jyd8);
35055 var nz = jy.redAdd(jy).redMul(jz);
35056
35057 return this.curve.jpoint(nx, ny, nz);
35058 };
35059
35060 JPoint.prototype.trpl = function trpl() {
35061 if (!this.curve.zeroA)
35062 return this.dbl().add(this);
35063
35064 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
35065 // 5M + 10S + ...
35066
35067 // XX = X1^2
35068 var xx = this.x.redSqr();
35069 // YY = Y1^2
35070 var yy = this.y.redSqr();
35071 // ZZ = Z1^2
35072 var zz = this.z.redSqr();
35073 // YYYY = YY^2
35074 var yyyy = yy.redSqr();
35075 // M = 3 * XX + a * ZZ2; a = 0
35076 var m = xx.redAdd(xx).redIAdd(xx);
35077 // MM = M^2
35078 var mm = m.redSqr();
35079 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
35080 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
35081 e = e.redIAdd(e);
35082 e = e.redAdd(e).redIAdd(e);
35083 e = e.redISub(mm);
35084 // EE = E^2
35085 var ee = e.redSqr();
35086 // T = 16*YYYY
35087 var t = yyyy.redIAdd(yyyy);
35088 t = t.redIAdd(t);
35089 t = t.redIAdd(t);
35090 t = t.redIAdd(t);
35091 // U = (M + E)^2 - MM - EE - T
35092 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
35093 // X3 = 4 * (X1 * EE - 4 * YY * U)
35094 var yyu4 = yy.redMul(u);
35095 yyu4 = yyu4.redIAdd(yyu4);
35096 yyu4 = yyu4.redIAdd(yyu4);
35097 var nx = this.x.redMul(ee).redISub(yyu4);
35098 nx = nx.redIAdd(nx);
35099 nx = nx.redIAdd(nx);
35100 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
35101 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
35102 ny = ny.redIAdd(ny);
35103 ny = ny.redIAdd(ny);
35104 ny = ny.redIAdd(ny);
35105 // Z3 = (Z1 + E)^2 - ZZ - EE
35106 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
35107
35108 return this.curve.jpoint(nx, ny, nz);
35109 };
35110
35111 JPoint.prototype.mul = function mul(k, kbase) {
35112 k = new BN(k, kbase);
35113
35114 return this.curve._wnafMul(this, k);
35115 };
35116
35117 JPoint.prototype.eq = function eq(p) {
35118 if (p.type === 'affine')
35119 return this.eq(p.toJ());
35120
35121 if (this === p)
35122 return true;
35123
35124 // x1 * z2^2 == x2 * z1^2
35125 var z2 = this.z.redSqr();
35126 var pz2 = p.z.redSqr();
35127 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
35128 return false;
35129
35130 // y1 * z2^3 == y2 * z1^3
35131 var z3 = z2.redMul(this.z);
35132 var pz3 = pz2.redMul(p.z);
35133 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
35134 };
35135
35136 JPoint.prototype.eqXToP = function eqXToP(x) {
35137 var zs = this.z.redSqr();
35138 var rx = x.toRed(this.curve.red).redMul(zs);
35139 if (this.x.cmp(rx) === 0)
35140 return true;
35141
35142 var xc = x.clone();
35143 var t = this.curve.redN.redMul(zs);
35144 for (;;) {
35145 xc.iadd(this.curve.n);
35146 if (xc.cmp(this.curve.p) >= 0)
35147 return false;
35148
35149 rx.redIAdd(t);
35150 if (this.x.cmp(rx) === 0)
35151 return true;
35152 }
35153 return false;
35154 };
35155
35156 JPoint.prototype.inspect = function inspect() {
35157 if (this.isInfinity())
35158 return '<EC JPoint Infinity>';
35159 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35160 ' y: ' + this.y.toString(16, 2) +
35161 ' z: ' + this.z.toString(16, 2) + '>';
35162 };
35163
35164 JPoint.prototype.isInfinity = function isInfinity() {
35165 // XXX This code assumes that zero is always zero in red
35166 return this.z.cmpn(0) === 0;
35167 };
35168
35169 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35170 'use strict';
35171
35172 var curves = exports;
35173
35174 var hash = require('hash.js');
35175 var elliptic = require('../elliptic');
35176
35177 var assert = elliptic.utils.assert;
35178
35179 function PresetCurve(options) {
35180 if (options.type === 'short')
35181 this.curve = new elliptic.curve.short(options);
35182 else if (options.type === 'edwards')
35183 this.curve = new elliptic.curve.edwards(options);
35184 else
35185 this.curve = new elliptic.curve.mont(options);
35186 this.g = this.curve.g;
35187 this.n = this.curve.n;
35188 this.hash = options.hash;
35189
35190 assert(this.g.validate(), 'Invalid curve');
35191 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35192 }
35193 curves.PresetCurve = PresetCurve;
35194
35195 function defineCurve(name, options) {
35196 Object.defineProperty(curves, name, {
35197 configurable: true,
35198 enumerable: true,
35199 get: function() {
35200 var curve = new PresetCurve(options);
35201 Object.defineProperty(curves, name, {
35202 configurable: true,
35203 enumerable: true,
35204 value: curve
35205 });
35206 return curve;
35207 }
35208 });
35209 }
35210
35211 defineCurve('p192', {
35212 type: 'short',
35213 prime: 'p192',
35214 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35215 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35216 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35217 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35218 hash: hash.sha256,
35219 gRed: false,
35220 g: [
35221 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35222 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35223 ]
35224 });
35225
35226 defineCurve('p224', {
35227 type: 'short',
35228 prime: 'p224',
35229 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35230 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35231 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35232 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35233 hash: hash.sha256,
35234 gRed: false,
35235 g: [
35236 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35237 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35238 ]
35239 });
35240
35241 defineCurve('p256', {
35242 type: 'short',
35243 prime: null,
35244 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35245 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35246 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35247 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35248 hash: hash.sha256,
35249 gRed: false,
35250 g: [
35251 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35252 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35253 ]
35254 });
35255
35256 defineCurve('p384', {
35257 type: 'short',
35258 prime: null,
35259 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35260 'fffffffe ffffffff 00000000 00000000 ffffffff',
35261 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35262 'fffffffe ffffffff 00000000 00000000 fffffffc',
35263 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35264 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35265 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35266 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35267 hash: hash.sha384,
35268 gRed: false,
35269 g: [
35270 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35271 '5502f25d bf55296c 3a545e38 72760ab7',
35272 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35273 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35274 ]
35275 });
35276
35277 defineCurve('p521', {
35278 type: 'short',
35279 prime: null,
35280 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35281 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35282 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35283 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35284 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35285 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35286 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35287 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35288 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35289 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35290 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35291 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35292 hash: hash.sha512,
35293 gRed: false,
35294 g: [
35295 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35296 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35297 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35298 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35299 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35300 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35301 ]
35302 });
35303
35304 defineCurve('curve25519', {
35305 type: 'mont',
35306 prime: 'p25519',
35307 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35308 a: '76d06',
35309 b: '1',
35310 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35311 hash: hash.sha256,
35312 gRed: false,
35313 g: [
35314 '9'
35315 ]
35316 });
35317
35318 defineCurve('ed25519', {
35319 type: 'edwards',
35320 prime: 'p25519',
35321 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35322 a: '-1',
35323 c: '1',
35324 // -121665 * (121666^(-1)) (mod P)
35325 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35326 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35327 hash: hash.sha256,
35328 gRed: false,
35329 g: [
35330 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35331
35332 // 4/5
35333 '6666666666666666666666666666666666666666666666666666666666666658'
35334 ]
35335 });
35336
35337 var pre;
35338 try {
35339 pre = require('./precomputed/secp256k1');
35340 } catch (e) {
35341 pre = undefined;
35342 }
35343
35344 defineCurve('secp256k1', {
35345 type: 'short',
35346 prime: 'k256',
35347 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35348 a: '0',
35349 b: '7',
35350 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35351 h: '1',
35352 hash: hash.sha256,
35353
35354 // Precomputed endomorphism
35355 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35356 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35357 basis: [
35358 {
35359 a: '3086d221a7d46bcde86c90e49284eb15',
35360 b: '-e4437ed6010e88286f547fa90abfe4c3'
35361 },
35362 {
35363 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35364 b: '3086d221a7d46bcde86c90e49284eb15'
35365 }
35366 ],
35367
35368 gRed: false,
35369 g: [
35370 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35371 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35372 pre
35373 ]
35374 });
35375
35376 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35377 'use strict';
35378
35379 var BN = require('bn.js');
35380 var elliptic = require('../../elliptic');
35381 var utils = elliptic.utils;
35382 var assert = utils.assert;
35383
35384 var KeyPair = require('./key');
35385 var Signature = require('./signature');
35386
35387 function EC(options) {
35388 if (!(this instanceof EC))
35389 return new EC(options);
35390
35391 // Shortcut `elliptic.ec(curve-name)`
35392 if (typeof options === 'string') {
35393 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35394
35395 options = elliptic.curves[options];
35396 }
35397
35398 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35399 if (options instanceof elliptic.curves.PresetCurve)
35400 options = { curve: options };
35401
35402 this.curve = options.curve.curve;
35403 this.n = this.curve.n;
35404 this.nh = this.n.ushrn(1);
35405 this.g = this.curve.g;
35406
35407 // Point on curve
35408 this.g = options.curve.g;
35409 this.g.precompute(options.curve.n.bitLength() + 1);
35410
35411 // Hash for function for DRBG
35412 this.hash = options.hash || options.curve.hash;
35413 }
35414 module.exports = EC;
35415
35416 EC.prototype.keyPair = function keyPair(options) {
35417 return new KeyPair(this, options);
35418 };
35419
35420 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35421 return KeyPair.fromPrivate(this, priv, enc);
35422 };
35423
35424 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35425 return KeyPair.fromPublic(this, pub, enc);
35426 };
35427
35428 EC.prototype.genKeyPair = function genKeyPair(options) {
35429 if (!options)
35430 options = {};
35431
35432 // Instantiate Hmac_DRBG
35433 var drbg = new elliptic.hmacDRBG({
35434 hash: this.hash,
35435 pers: options.pers,
35436 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35437 nonce: this.n.toArray()
35438 });
35439
35440 var bytes = this.n.byteLength();
35441 var ns2 = this.n.sub(new BN(2));
35442 do {
35443 var priv = new BN(drbg.generate(bytes));
35444 if (priv.cmp(ns2) > 0)
35445 continue;
35446
35447 priv.iaddn(1);
35448 return this.keyFromPrivate(priv);
35449 } while (true);
35450 };
35451
35452 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35453 var delta = msg.byteLength() * 8 - this.n.bitLength();
35454 if (delta > 0)
35455 msg = msg.ushrn(delta);
35456 if (!truncOnly && msg.cmp(this.n) >= 0)
35457 return msg.sub(this.n);
35458 else
35459 return msg;
35460 };
35461
35462 EC.prototype.sign = function sign(msg, key, enc, options) {
35463 if (typeof enc === 'object') {
35464 options = enc;
35465 enc = null;
35466 }
35467 if (!options)
35468 options = {};
35469
35470 key = this.keyFromPrivate(key, enc);
35471 msg = this._truncateToN(new BN(msg, 16));
35472
35473 // Zero-extend key to provide enough entropy
35474 var bytes = this.n.byteLength();
35475 var bkey = key.getPrivate().toArray('be', bytes);
35476
35477 // Zero-extend nonce to have the same byte size as N
35478 var nonce = msg.toArray('be', bytes);
35479
35480 // Instantiate Hmac_DRBG
35481 var drbg = new elliptic.hmacDRBG({
35482 hash: this.hash,
35483 entropy: bkey,
35484 nonce: nonce,
35485 pers: options.pers,
35486 persEnc: options.persEnc
35487 });
35488
35489 // Number of bytes to generate
35490 var ns1 = this.n.sub(new BN(1));
35491
35492 for (var iter = 0; true; iter++) {
35493 var k = options.k ?
35494 options.k(iter) :
35495 new BN(drbg.generate(this.n.byteLength()));
35496 k = this._truncateToN(k, true);
35497 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35498 continue;
35499
35500 var kp = this.g.mul(k);
35501 if (kp.isInfinity())
35502 continue;
35503
35504 var kpX = kp.getX();
35505 var r = kpX.umod(this.n);
35506 if (r.cmpn(0) === 0)
35507 continue;
35508
35509 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35510 s = s.umod(this.n);
35511 if (s.cmpn(0) === 0)
35512 continue;
35513
35514 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35515 (kpX.cmp(r) !== 0 ? 2 : 0);
35516
35517 // Use complement of `s`, if it is > `n / 2`
35518 if (options.canonical && s.cmp(this.nh) > 0) {
35519 s = this.n.sub(s);
35520 recoveryParam ^= 1;
35521 }
35522
35523 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35524 }
35525 };
35526
35527 EC.prototype.verify = function verify(msg, signature, key, enc) {
35528 msg = this._truncateToN(new BN(msg, 16));
35529 key = this.keyFromPublic(key, enc);
35530 signature = new Signature(signature, 'hex');
35531
35532 // Perform primitive values validation
35533 var r = signature.r;
35534 var s = signature.s;
35535 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35536 return false;
35537 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35538 return false;
35539
35540 // Validate signature
35541 var sinv = s.invm(this.n);
35542 var u1 = sinv.mul(msg).umod(this.n);
35543 var u2 = sinv.mul(r).umod(this.n);
35544
35545 if (!this.curve._maxwellTrick) {
35546 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35547 if (p.isInfinity())
35548 return false;
35549
35550 return p.getX().umod(this.n).cmp(r) === 0;
35551 }
35552
35553 // NOTE: Greg Maxwell's trick, inspired by:
35554 // https://git.io/vad3K
35555
35556 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35557 if (p.isInfinity())
35558 return false;
35559
35560 // Compare `p.x` of Jacobian point with `r`,
35561 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35562 // inverse of `p.z^2`
35563 return p.eqXToP(r);
35564 };
35565
35566 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35567 assert((3 & j) === j, 'The recovery param is more than two bits');
35568 signature = new Signature(signature, enc);
35569
35570 var n = this.n;
35571 var e = new BN(msg);
35572 var r = signature.r;
35573 var s = signature.s;
35574
35575 // A set LSB signifies that the y-coordinate is odd
35576 var isYOdd = j & 1;
35577 var isSecondKey = j >> 1;
35578 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35579 throw new Error('Unable to find sencond key candinate');
35580
35581 // 1.1. Let x = r + jn.
35582 if (isSecondKey)
35583 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35584 else
35585 r = this.curve.pointFromX(r, isYOdd);
35586
35587 var rInv = signature.r.invm(n);
35588 var s1 = n.sub(e).mul(rInv).umod(n);
35589 var s2 = s.mul(rInv).umod(n);
35590
35591 // 1.6.1 Compute Q = r^-1 (sR - eG)
35592 // Q = r^-1 (sR + -eG)
35593 return this.g.mulAdd(s1, r, s2);
35594 };
35595
35596 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35597 signature = new Signature(signature, enc);
35598 if (signature.recoveryParam !== null)
35599 return signature.recoveryParam;
35600
35601 for (var i = 0; i < 4; i++) {
35602 var Qprime;
35603 try {
35604 Qprime = this.recoverPubKey(e, signature, i);
35605 } catch (e) {
35606 continue;
35607 }
35608
35609 if (Qprime.eq(Q))
35610 return i;
35611 }
35612 throw new Error('Unable to find valid recovery factor');
35613 };
35614
35615 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35616 'use strict';
35617
35618 var BN = require('bn.js');
35619 var elliptic = require('../../elliptic');
35620 var utils = elliptic.utils;
35621 var assert = utils.assert;
35622
35623 function KeyPair(ec, options) {
35624 this.ec = ec;
35625 this.priv = null;
35626 this.pub = null;
35627
35628 // KeyPair(ec, { priv: ..., pub: ... })
35629 if (options.priv)
35630 this._importPrivate(options.priv, options.privEnc);
35631 if (options.pub)
35632 this._importPublic(options.pub, options.pubEnc);
35633 }
35634 module.exports = KeyPair;
35635
35636 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35637 if (pub instanceof KeyPair)
35638 return pub;
35639
35640 return new KeyPair(ec, {
35641 pub: pub,
35642 pubEnc: enc
35643 });
35644 };
35645
35646 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35647 if (priv instanceof KeyPair)
35648 return priv;
35649
35650 return new KeyPair(ec, {
35651 priv: priv,
35652 privEnc: enc
35653 });
35654 };
35655
35656 KeyPair.prototype.validate = function validate() {
35657 var pub = this.getPublic();
35658
35659 if (pub.isInfinity())
35660 return { result: false, reason: 'Invalid public key' };
35661 if (!pub.validate())
35662 return { result: false, reason: 'Public key is not a point' };
35663 if (!pub.mul(this.ec.curve.n).isInfinity())
35664 return { result: false, reason: 'Public key * N != O' };
35665
35666 return { result: true, reason: null };
35667 };
35668
35669 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35670 // compact is optional argument
35671 if (typeof compact === 'string') {
35672 enc = compact;
35673 compact = null;
35674 }
35675
35676 if (!this.pub)
35677 this.pub = this.ec.g.mul(this.priv);
35678
35679 if (!enc)
35680 return this.pub;
35681
35682 return this.pub.encode(enc, compact);
35683 };
35684
35685 KeyPair.prototype.getPrivate = function getPrivate(enc) {
35686 if (enc === 'hex')
35687 return this.priv.toString(16, 2);
35688 else
35689 return this.priv;
35690 };
35691
35692 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35693 this.priv = new BN(key, enc || 16);
35694
35695 // Ensure that the priv won't be bigger than n, otherwise we may fail
35696 // in fixed multiplication method
35697 this.priv = this.priv.umod(this.ec.curve.n);
35698 };
35699
35700 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35701 if (key.x || key.y) {
35702 // Montgomery points only have an `x` coordinate.
35703 // Weierstrass/Edwards points on the other hand have both `x` and
35704 // `y` coordinates.
35705 if (this.ec.curve.type === 'mont') {
35706 assert(key.x, 'Need x coordinate');
35707 } else if (this.ec.curve.type === 'short' ||
35708 this.ec.curve.type === 'edwards') {
35709 assert(key.x && key.y, 'Need both x and y coordinate');
35710 }
35711 this.pub = this.ec.curve.point(key.x, key.y);
35712 return;
35713 }
35714 this.pub = this.ec.curve.decodePoint(key, enc);
35715 };
35716
35717 // ECDH
35718 KeyPair.prototype.derive = function derive(pub) {
35719 return pub.mul(this.priv).getX();
35720 };
35721
35722 // ECDSA
35723 KeyPair.prototype.sign = function sign(msg, enc, options) {
35724 return this.ec.sign(msg, this, enc, options);
35725 };
35726
35727 KeyPair.prototype.verify = function verify(msg, signature) {
35728 return this.ec.verify(msg, signature, this);
35729 };
35730
35731 KeyPair.prototype.inspect = function inspect() {
35732 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35733 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35734 };
35735
35736 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35737 'use strict';
35738
35739 var BN = require('bn.js');
35740
35741 var elliptic = require('../../elliptic');
35742 var utils = elliptic.utils;
35743 var assert = utils.assert;
35744
35745 function Signature(options, enc) {
35746 if (options instanceof Signature)
35747 return options;
35748
35749 if (this._importDER(options, enc))
35750 return;
35751
35752 assert(options.r && options.s, 'Signature without r or s');
35753 this.r = new BN(options.r, 16);
35754 this.s = new BN(options.s, 16);
35755 if (options.recoveryParam === undefined)
35756 this.recoveryParam = null;
35757 else
35758 this.recoveryParam = options.recoveryParam;
35759 }
35760 module.exports = Signature;
35761
35762 function Position() {
35763 this.place = 0;
35764 }
35765
35766 function getLength(buf, p) {
35767 var initial = buf[p.place++];
35768 if (!(initial & 0x80)) {
35769 return initial;
35770 }
35771 var octetLen = initial & 0xf;
35772 var val = 0;
35773 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35774 val <<= 8;
35775 val |= buf[off];
35776 }
35777 p.place = off;
35778 return val;
35779 }
35780
35781 function rmPadding(buf) {
35782 var i = 0;
35783 var len = buf.length - 1;
35784 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35785 i++;
35786 }
35787 if (i === 0) {
35788 return buf;
35789 }
35790 return buf.slice(i);
35791 }
35792
35793 Signature.prototype._importDER = function _importDER(data, enc) {
35794 data = utils.toArray(data, enc);
35795 var p = new Position();
35796 if (data[p.place++] !== 0x30) {
35797 return false;
35798 }
35799 var len = getLength(data, p);
35800 if ((len + p.place) !== data.length) {
35801 return false;
35802 }
35803 if (data[p.place++] !== 0x02) {
35804 return false;
35805 }
35806 var rlen = getLength(data, p);
35807 var r = data.slice(p.place, rlen + p.place);
35808 p.place += rlen;
35809 if (data[p.place++] !== 0x02) {
35810 return false;
35811 }
35812 var slen = getLength(data, p);
35813 if (data.length !== slen + p.place) {
35814 return false;
35815 }
35816 var s = data.slice(p.place, slen + p.place);
35817 if (r[0] === 0 && (r[1] & 0x80)) {
35818 r = r.slice(1);
35819 }
35820 if (s[0] === 0 && (s[1] & 0x80)) {
35821 s = s.slice(1);
35822 }
35823
35824 this.r = new BN(r);
35825 this.s = new BN(s);
35826 this.recoveryParam = null;
35827
35828 return true;
35829 };
35830
35831 function constructLength(arr, len) {
35832 if (len < 0x80) {
35833 arr.push(len);
35834 return;
35835 }
35836 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35837 arr.push(octets | 0x80);
35838 while (--octets) {
35839 arr.push((len >>> (octets << 3)) & 0xff);
35840 }
35841 arr.push(len);
35842 }
35843
35844 Signature.prototype.toDER = function toDER(enc) {
35845 var r = this.r.toArray();
35846 var s = this.s.toArray();
35847
35848 // Pad values
35849 if (r[0] & 0x80)
35850 r = [ 0 ].concat(r);
35851 // Pad values
35852 if (s[0] & 0x80)
35853 s = [ 0 ].concat(s);
35854
35855 r = rmPadding(r);
35856 s = rmPadding(s);
35857
35858 while (!s[0] && !(s[1] & 0x80)) {
35859 s = s.slice(1);
35860 }
35861 var arr = [ 0x02 ];
35862 constructLength(arr, r.length);
35863 arr = arr.concat(r);
35864 arr.push(0x02);
35865 constructLength(arr, s.length);
35866 var backHalf = arr.concat(s);
35867 var res = [ 0x30 ];
35868 constructLength(res, backHalf.length);
35869 res = res.concat(backHalf);
35870 return utils.encode(res, enc);
35871 };
35872
35873 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35874 'use strict';
35875
35876 var hash = require('hash.js');
35877 var elliptic = require('../../elliptic');
35878 var utils = elliptic.utils;
35879 var assert = utils.assert;
35880 var parseBytes = utils.parseBytes;
35881 var KeyPair = require('./key');
35882 var Signature = require('./signature');
35883
35884 function EDDSA(curve) {
35885 assert(curve === 'ed25519', 'only tested with ed25519 so far');
35886
35887 if (!(this instanceof EDDSA))
35888 return new EDDSA(curve);
35889
35890 var curve = elliptic.curves[curve].curve;
35891 this.curve = curve;
35892 this.g = curve.g;
35893 this.g.precompute(curve.n.bitLength() + 1);
35894
35895 this.pointClass = curve.point().constructor;
35896 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35897 this.hash = hash.sha512;
35898 }
35899
35900 module.exports = EDDSA;
35901
35902 /**
35903 * @param {Array|String} message - message bytes
35904 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
35905 * @returns {Signature} - signature
35906 */
35907 EDDSA.prototype.sign = function sign(message, secret) {
35908 message = parseBytes(message);
35909 var key = this.keyFromSecret(secret);
35910 var r = this.hashInt(key.messagePrefix(), message);
35911 var R = this.g.mul(r);
35912 var Rencoded = this.encodePoint(R);
35913 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35914 .mul(key.priv());
35915 var S = r.add(s_).umod(this.curve.n);
35916 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35917 };
35918
35919 /**
35920 * @param {Array} message - message bytes
35921 * @param {Array|String|Signature} sig - sig bytes
35922 * @param {Array|String|Point|KeyPair} pub - public key
35923 * @returns {Boolean} - true if public key matches sig of message
35924 */
35925 EDDSA.prototype.verify = function verify(message, sig, pub) {
35926 message = parseBytes(message);
35927 sig = this.makeSignature(sig);
35928 var key = this.keyFromPublic(pub);
35929 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35930 var SG = this.g.mul(sig.S());
35931 var RplusAh = sig.R().add(key.pub().mul(h));
35932 return RplusAh.eq(SG);
35933 };
35934
35935 EDDSA.prototype.hashInt = function hashInt() {
35936 var hash = this.hash();
35937 for (var i = 0; i < arguments.length; i++)
35938 hash.update(arguments[i]);
35939 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35940 };
35941
35942 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35943 return KeyPair.fromPublic(this, pub);
35944 };
35945
35946 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35947 return KeyPair.fromSecret(this, secret);
35948 };
35949
35950 EDDSA.prototype.makeSignature = function makeSignature(sig) {
35951 if (sig instanceof Signature)
35952 return sig;
35953 return new Signature(this, sig);
35954 };
35955
35956 /**
35957 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35958 *
35959 * EDDSA defines methods for encoding and decoding points and integers. These are
35960 * helper convenience methods, that pass along to utility functions implied
35961 * parameters.
35962 *
35963 */
35964 EDDSA.prototype.encodePoint = function encodePoint(point) {
35965 var enc = point.getY().toArray('le', this.encodingLength);
35966 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35967 return enc;
35968 };
35969
35970 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35971 bytes = utils.parseBytes(bytes);
35972
35973 var lastIx = bytes.length - 1;
35974 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35975 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
35976
35977 var y = utils.intFromLE(normed);
35978 return this.curve.pointFromY(y, xIsOdd);
35979 };
35980
35981 EDDSA.prototype.encodeInt = function encodeInt(num) {
35982 return num.toArray('le', this.encodingLength);
35983 };
35984
35985 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35986 return utils.intFromLE(bytes);
35987 };
35988
35989 EDDSA.prototype.isPoint = function isPoint(val) {
35990 return val instanceof this.pointClass;
35991 };
35992
35993 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35994 'use strict';
35995
35996 var elliptic = require('../../elliptic');
35997 var utils = elliptic.utils;
35998 var assert = utils.assert;
35999 var parseBytes = utils.parseBytes;
36000 var cachedProperty = utils.cachedProperty;
36001
36002 /**
36003 * @param {EDDSA} eddsa - instance
36004 * @param {Object} params - public/private key parameters
36005 *
36006 * @param {Array<Byte>} [params.secret] - secret seed bytes
36007 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
36008 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
36009 *
36010 */
36011 function KeyPair(eddsa, params) {
36012 this.eddsa = eddsa;
36013 this._secret = parseBytes(params.secret);
36014 if (eddsa.isPoint(params.pub))
36015 this._pub = params.pub;
36016 else
36017 this._pubBytes = parseBytes(params.pub);
36018 }
36019
36020 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
36021 if (pub instanceof KeyPair)
36022 return pub;
36023 return new KeyPair(eddsa, { pub: pub });
36024 };
36025
36026 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
36027 if (secret instanceof KeyPair)
36028 return secret;
36029 return new KeyPair(eddsa, { secret: secret });
36030 };
36031
36032 KeyPair.prototype.secret = function secret() {
36033 return this._secret;
36034 };
36035
36036 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
36037 return this.eddsa.encodePoint(this.pub());
36038 });
36039
36040 cachedProperty(KeyPair, 'pub', function pub() {
36041 if (this._pubBytes)
36042 return this.eddsa.decodePoint(this._pubBytes);
36043 return this.eddsa.g.mul(this.priv());
36044 });
36045
36046 cachedProperty(KeyPair, 'privBytes', function privBytes() {
36047 var eddsa = this.eddsa;
36048 var hash = this.hash();
36049 var lastIx = eddsa.encodingLength - 1;
36050
36051 var a = hash.slice(0, eddsa.encodingLength);
36052 a[0] &= 248;
36053 a[lastIx] &= 127;
36054 a[lastIx] |= 64;
36055
36056 return a;
36057 });
36058
36059 cachedProperty(KeyPair, 'priv', function priv() {
36060 return this.eddsa.decodeInt(this.privBytes());
36061 });
36062
36063 cachedProperty(KeyPair, 'hash', function hash() {
36064 return this.eddsa.hash().update(this.secret()).digest();
36065 });
36066
36067 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
36068 return this.hash().slice(this.eddsa.encodingLength);
36069 });
36070
36071 KeyPair.prototype.sign = function sign(message) {
36072 assert(this._secret, 'KeyPair can only verify');
36073 return this.eddsa.sign(message, this);
36074 };
36075
36076 KeyPair.prototype.verify = function verify(message, sig) {
36077 return this.eddsa.verify(message, sig, this);
36078 };
36079
36080 KeyPair.prototype.getSecret = function getSecret(enc) {
36081 assert(this._secret, 'KeyPair is public only');
36082 return utils.encode(this.secret(), enc);
36083 };
36084
36085 KeyPair.prototype.getPublic = function getPublic(enc) {
36086 return utils.encode(this.pubBytes(), enc);
36087 };
36088
36089 module.exports = KeyPair;
36090
36091 },{"../../elliptic":39}],51:[function(require,module,exports){
36092 'use strict';
36093
36094 var BN = require('bn.js');
36095 var elliptic = require('../../elliptic');
36096 var utils = elliptic.utils;
36097 var assert = utils.assert;
36098 var cachedProperty = utils.cachedProperty;
36099 var parseBytes = utils.parseBytes;
36100
36101 /**
36102 * @param {EDDSA} eddsa - eddsa instance
36103 * @param {Array<Bytes>|Object} sig -
36104 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
36105 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
36106 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
36107 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
36108 */
36109 function Signature(eddsa, sig) {
36110 this.eddsa = eddsa;
36111
36112 if (typeof sig !== 'object')
36113 sig = parseBytes(sig);
36114
36115 if (Array.isArray(sig)) {
36116 sig = {
36117 R: sig.slice(0, eddsa.encodingLength),
36118 S: sig.slice(eddsa.encodingLength)
36119 };
36120 }
36121
36122 assert(sig.R && sig.S, 'Signature without R or S');
36123
36124 if (eddsa.isPoint(sig.R))
36125 this._R = sig.R;
36126 if (sig.S instanceof BN)
36127 this._S = sig.S;
36128
36129 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
36130 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
36131 }
36132
36133 cachedProperty(Signature, 'S', function S() {
36134 return this.eddsa.decodeInt(this.Sencoded());
36135 });
36136
36137 cachedProperty(Signature, 'R', function R() {
36138 return this.eddsa.decodePoint(this.Rencoded());
36139 });
36140
36141 cachedProperty(Signature, 'Rencoded', function Rencoded() {
36142 return this.eddsa.encodePoint(this.R());
36143 });
36144
36145 cachedProperty(Signature, 'Sencoded', function Sencoded() {
36146 return this.eddsa.encodeInt(this.S());
36147 });
36148
36149 Signature.prototype.toBytes = function toBytes() {
36150 return this.Rencoded().concat(this.Sencoded());
36151 };
36152
36153 Signature.prototype.toHex = function toHex() {
36154 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36155 };
36156
36157 module.exports = Signature;
36158
36159 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36160 'use strict';
36161
36162 var hash = require('hash.js');
36163 var elliptic = require('../elliptic');
36164 var utils = elliptic.utils;
36165 var assert = utils.assert;
36166
36167 function HmacDRBG(options) {
36168 if (!(this instanceof HmacDRBG))
36169 return new HmacDRBG(options);
36170 this.hash = options.hash;
36171 this.predResist = !!options.predResist;
36172
36173 this.outLen = this.hash.outSize;
36174 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
36175
36176 this.reseed = null;
36177 this.reseedInterval = null;
36178 this.K = null;
36179 this.V = null;
36180
36181 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36182 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36183 var pers = utils.toArray(options.pers, options.persEnc);
36184 assert(entropy.length >= (this.minEntropy / 8),
36185 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36186 this._init(entropy, nonce, pers);
36187 }
36188 module.exports = HmacDRBG;
36189
36190 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36191 var seed = entropy.concat(nonce).concat(pers);
36192
36193 this.K = new Array(this.outLen / 8);
36194 this.V = new Array(this.outLen / 8);
36195 for (var i = 0; i < this.V.length; i++) {
36196 this.K[i] = 0x00;
36197 this.V[i] = 0x01;
36198 }
36199
36200 this._update(seed);
36201 this.reseed = 1;
36202 this.reseedInterval = 0x1000000000000; // 2^48
36203 };
36204
36205 HmacDRBG.prototype._hmac = function hmac() {
36206 return new hash.hmac(this.hash, this.K);
36207 };
36208
36209 HmacDRBG.prototype._update = function update(seed) {
36210 var kmac = this._hmac()
36211 .update(this.V)
36212 .update([ 0x00 ]);
36213 if (seed)
36214 kmac = kmac.update(seed);
36215 this.K = kmac.digest();
36216 this.V = this._hmac().update(this.V).digest();
36217 if (!seed)
36218 return;
36219
36220 this.K = this._hmac()
36221 .update(this.V)
36222 .update([ 0x01 ])
36223 .update(seed)
36224 .digest();
36225 this.V = this._hmac().update(this.V).digest();
36226 };
36227
36228 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36229 // Optional entropy enc
36230 if (typeof entropyEnc !== 'string') {
36231 addEnc = add;
36232 add = entropyEnc;
36233 entropyEnc = null;
36234 }
36235
36236 entropy = utils.toBuffer(entropy, entropyEnc);
36237 add = utils.toBuffer(add, addEnc);
36238
36239 assert(entropy.length >= (this.minEntropy / 8),
36240 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36241
36242 this._update(entropy.concat(add || []));
36243 this.reseed = 1;
36244 };
36245
36246 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36247 if (this.reseed > this.reseedInterval)
36248 throw new Error('Reseed is required');
36249
36250 // Optional encoding
36251 if (typeof enc !== 'string') {
36252 addEnc = add;
36253 add = enc;
36254 enc = null;
36255 }
36256
36257 // Optional additional data
36258 if (add) {
36259 add = utils.toArray(add, addEnc);
36260 this._update(add);
36261 }
36262
36263 var temp = [];
36264 while (temp.length < len) {
36265 this.V = this._hmac().update(this.V).digest();
36266 temp = temp.concat(this.V);
36267 }
36268
36269 var res = temp.slice(0, len);
36270 this._update(add);
36271 this.reseed++;
36272 return utils.encode(res, enc);
36273 };
36274
36275 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36276 module.exports = {
36277 doubles: {
36278 step: 4,
36279 points: [
36280 [
36281 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36282 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36283 ],
36284 [
36285 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36286 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36287 ],
36288 [
36289 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36290 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36291 ],
36292 [
36293 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36294 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36295 ],
36296 [
36297 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36298 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36299 ],
36300 [
36301 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36302 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36303 ],
36304 [
36305 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36306 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36307 ],
36308 [
36309 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36310 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36311 ],
36312 [
36313 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36314 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36315 ],
36316 [
36317 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36318 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36319 ],
36320 [
36321 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36322 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36323 ],
36324 [
36325 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36326 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36327 ],
36328 [
36329 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36330 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36331 ],
36332 [
36333 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36334 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36335 ],
36336 [
36337 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36338 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36339 ],
36340 [
36341 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36342 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36343 ],
36344 [
36345 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36346 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36347 ],
36348 [
36349 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36350 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36351 ],
36352 [
36353 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36354 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36355 ],
36356 [
36357 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36358 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36359 ],
36360 [
36361 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36362 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36363 ],
36364 [
36365 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36366 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36367 ],
36368 [
36369 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36370 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36371 ],
36372 [
36373 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36374 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36375 ],
36376 [
36377 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36378 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36379 ],
36380 [
36381 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36382 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36383 ],
36384 [
36385 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36386 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36387 ],
36388 [
36389 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36390 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36391 ],
36392 [
36393 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36394 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36395 ],
36396 [
36397 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36398 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36399 ],
36400 [
36401 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36402 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36403 ],
36404 [
36405 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36406 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36407 ],
36408 [
36409 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36410 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36411 ],
36412 [
36413 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36414 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36415 ],
36416 [
36417 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36418 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36419 ],
36420 [
36421 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36422 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36423 ],
36424 [
36425 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36426 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36427 ],
36428 [
36429 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36430 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36431 ],
36432 [
36433 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36434 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36435 ],
36436 [
36437 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36438 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36439 ],
36440 [
36441 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36442 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36443 ],
36444 [
36445 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36446 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36447 ],
36448 [
36449 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36450 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36451 ],
36452 [
36453 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36454 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36455 ],
36456 [
36457 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36458 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36459 ],
36460 [
36461 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36462 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36463 ],
36464 [
36465 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36466 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36467 ],
36468 [
36469 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36470 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36471 ],
36472 [
36473 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36474 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36475 ],
36476 [
36477 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36478 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36479 ],
36480 [
36481 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36482 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36483 ],
36484 [
36485 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36486 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36487 ],
36488 [
36489 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36490 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36491 ],
36492 [
36493 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36494 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36495 ],
36496 [
36497 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36498 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36499 ],
36500 [
36501 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36502 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36503 ],
36504 [
36505 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36506 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36507 ],
36508 [
36509 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36510 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36511 ],
36512 [
36513 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36514 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36515 ],
36516 [
36517 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36518 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36519 ],
36520 [
36521 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36522 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36523 ],
36524 [
36525 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36526 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36527 ],
36528 [
36529 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36530 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36531 ],
36532 [
36533 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36534 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36535 ],
36536 [
36537 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36538 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36539 ]
36540 ]
36541 },
36542 naf: {
36543 wnd: 7,
36544 points: [
36545 [
36546 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36547 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36548 ],
36549 [
36550 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36551 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36552 ],
36553 [
36554 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36555 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36556 ],
36557 [
36558 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36559 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36560 ],
36561 [
36562 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36563 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36564 ],
36565 [
36566 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36567 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36568 ],
36569 [
36570 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36571 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36572 ],
36573 [
36574 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36575 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36576 ],
36577 [
36578 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36579 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36580 ],
36581 [
36582 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36583 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36584 ],
36585 [
36586 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36587 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36588 ],
36589 [
36590 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36591 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36592 ],
36593 [
36594 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36595 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36596 ],
36597 [
36598 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36599 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36600 ],
36601 [
36602 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36603 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36604 ],
36605 [
36606 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36607 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36608 ],
36609 [
36610 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36611 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36612 ],
36613 [
36614 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36615 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36616 ],
36617 [
36618 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36619 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36620 ],
36621 [
36622 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36623 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36624 ],
36625 [
36626 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36627 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36628 ],
36629 [
36630 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36631 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36632 ],
36633 [
36634 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36635 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36636 ],
36637 [
36638 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36639 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36640 ],
36641 [
36642 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36643 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36644 ],
36645 [
36646 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36647 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36648 ],
36649 [
36650 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36651 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36652 ],
36653 [
36654 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36655 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36656 ],
36657 [
36658 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36659 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36660 ],
36661 [
36662 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36663 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36664 ],
36665 [
36666 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36667 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36668 ],
36669 [
36670 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36671 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36672 ],
36673 [
36674 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36675 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36676 ],
36677 [
36678 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36679 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36680 ],
36681 [
36682 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36683 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36684 ],
36685 [
36686 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36687 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36688 ],
36689 [
36690 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36691 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36692 ],
36693 [
36694 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36695 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36696 ],
36697 [
36698 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36699 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36700 ],
36701 [
36702 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36703 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36704 ],
36705 [
36706 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36707 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36708 ],
36709 [
36710 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36711 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36712 ],
36713 [
36714 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36715 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36716 ],
36717 [
36718 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36719 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36720 ],
36721 [
36722 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36723 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36724 ],
36725 [
36726 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36727 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36728 ],
36729 [
36730 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36731 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36732 ],
36733 [
36734 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36735 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36736 ],
36737 [
36738 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36739 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36740 ],
36741 [
36742 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36743 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36744 ],
36745 [
36746 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36747 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36748 ],
36749 [
36750 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36751 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36752 ],
36753 [
36754 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36755 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36756 ],
36757 [
36758 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36759 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36760 ],
36761 [
36762 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36763 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36764 ],
36765 [
36766 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36767 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36768 ],
36769 [
36770 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36771 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36772 ],
36773 [
36774 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36775 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36776 ],
36777 [
36778 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36779 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36780 ],
36781 [
36782 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36783 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36784 ],
36785 [
36786 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36787 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36788 ],
36789 [
36790 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36791 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36792 ],
36793 [
36794 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36795 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36796 ],
36797 [
36798 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36799 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36800 ],
36801 [
36802 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36803 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36804 ],
36805 [
36806 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36807 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36808 ],
36809 [
36810 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36811 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36812 ],
36813 [
36814 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36815 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36816 ],
36817 [
36818 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36819 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36820 ],
36821 [
36822 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36823 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36824 ],
36825 [
36826 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36827 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36828 ],
36829 [
36830 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36831 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36832 ],
36833 [
36834 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36835 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36836 ],
36837 [
36838 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36839 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36840 ],
36841 [
36842 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36843 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36844 ],
36845 [
36846 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36847 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36848 ],
36849 [
36850 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36851 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36852 ],
36853 [
36854 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36855 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36856 ],
36857 [
36858 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36859 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36860 ],
36861 [
36862 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36863 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36864 ],
36865 [
36866 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36867 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36868 ],
36869 [
36870 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36871 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36872 ],
36873 [
36874 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36875 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36876 ],
36877 [
36878 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36879 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36880 ],
36881 [
36882 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36883 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36884 ],
36885 [
36886 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36887 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36888 ],
36889 [
36890 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36891 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36892 ],
36893 [
36894 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36895 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36896 ],
36897 [
36898 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36899 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36900 ],
36901 [
36902 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36903 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36904 ],
36905 [
36906 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36907 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36908 ],
36909 [
36910 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36911 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36912 ],
36913 [
36914 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36915 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36916 ],
36917 [
36918 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36919 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36920 ],
36921 [
36922 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36923 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36924 ],
36925 [
36926 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36927 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36928 ],
36929 [
36930 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36931 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36932 ],
36933 [
36934 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36935 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36936 ],
36937 [
36938 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36939 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36940 ],
36941 [
36942 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36943 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36944 ],
36945 [
36946 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36947 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36948 ],
36949 [
36950 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36951 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36952 ],
36953 [
36954 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36955 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36956 ],
36957 [
36958 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36959 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36960 ],
36961 [
36962 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36963 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36964 ],
36965 [
36966 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36967 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36968 ],
36969 [
36970 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36971 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36972 ],
36973 [
36974 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36975 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36976 ],
36977 [
36978 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36979 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36980 ],
36981 [
36982 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36983 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36984 ],
36985 [
36986 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36987 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36988 ],
36989 [
36990 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36991 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36992 ],
36993 [
36994 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36995 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36996 ],
36997 [
36998 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36999 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
37000 ],
37001 [
37002 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
37003 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
37004 ],
37005 [
37006 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
37007 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
37008 ],
37009 [
37010 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
37011 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
37012 ],
37013 [
37014 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
37015 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
37016 ],
37017 [
37018 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
37019 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
37020 ],
37021 [
37022 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
37023 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
37024 ],
37025 [
37026 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
37027 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
37028 ],
37029 [
37030 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
37031 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
37032 ],
37033 [
37034 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
37035 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
37036 ],
37037 [
37038 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
37039 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
37040 ],
37041 [
37042 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
37043 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
37044 ],
37045 [
37046 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
37047 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
37048 ],
37049 [
37050 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
37051 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
37052 ]
37053 ]
37054 }
37055 };
37056
37057 },{}],54:[function(require,module,exports){
37058 'use strict';
37059
37060 var utils = exports;
37061 var BN = require('bn.js');
37062
37063 utils.assert = function assert(val, msg) {
37064 if (!val)
37065 throw new Error(msg || 'Assertion failed');
37066 };
37067
37068 function toArray(msg, enc) {
37069 if (Array.isArray(msg))
37070 return msg.slice();
37071 if (!msg)
37072 return [];
37073 var res = [];
37074 if (typeof msg !== 'string') {
37075 for (var i = 0; i < msg.length; i++)
37076 res[i] = msg[i] | 0;
37077 return res;
37078 }
37079 if (!enc) {
37080 for (var i = 0; i < msg.length; i++) {
37081 var c = msg.charCodeAt(i);
37082 var hi = c >> 8;
37083 var lo = c & 0xff;
37084 if (hi)
37085 res.push(hi, lo);
37086 else
37087 res.push(lo);
37088 }
37089 } else if (enc === 'hex') {
37090 msg = msg.replace(/[^a-z0-9]+/ig, '');
37091 if (msg.length % 2 !== 0)
37092 msg = '0' + msg;
37093 for (var i = 0; i < msg.length; i += 2)
37094 res.push(parseInt(msg[i] + msg[i + 1], 16));
37095 }
37096 return res;
37097 }
37098 utils.toArray = toArray;
37099
37100 function zero2(word) {
37101 if (word.length === 1)
37102 return '0' + word;
37103 else
37104 return word;
37105 }
37106 utils.zero2 = zero2;
37107
37108 function toHex(msg) {
37109 var res = '';
37110 for (var i = 0; i < msg.length; i++)
37111 res += zero2(msg[i].toString(16));
37112 return res;
37113 }
37114 utils.toHex = toHex;
37115
37116 utils.encode = function encode(arr, enc) {
37117 if (enc === 'hex')
37118 return toHex(arr);
37119 else
37120 return arr;
37121 };
37122
37123 // Represent num in a w-NAF form
37124 function getNAF(num, w) {
37125 var naf = [];
37126 var ws = 1 << (w + 1);
37127 var k = num.clone();
37128 while (k.cmpn(1) >= 0) {
37129 var z;
37130 if (k.isOdd()) {
37131 var mod = k.andln(ws - 1);
37132 if (mod > (ws >> 1) - 1)
37133 z = (ws >> 1) - mod;
37134 else
37135 z = mod;
37136 k.isubn(z);
37137 } else {
37138 z = 0;
37139 }
37140 naf.push(z);
37141
37142 // Optimization, shift by word if possible
37143 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37144 for (var i = 1; i < shift; i++)
37145 naf.push(0);
37146 k.iushrn(shift);
37147 }
37148
37149 return naf;
37150 }
37151 utils.getNAF = getNAF;
37152
37153 // Represent k1, k2 in a Joint Sparse Form
37154 function getJSF(k1, k2) {
37155 var jsf = [
37156 [],
37157 []
37158 ];
37159
37160 k1 = k1.clone();
37161 k2 = k2.clone();
37162 var d1 = 0;
37163 var d2 = 0;
37164 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37165
37166 // First phase
37167 var m14 = (k1.andln(3) + d1) & 3;
37168 var m24 = (k2.andln(3) + d2) & 3;
37169 if (m14 === 3)
37170 m14 = -1;
37171 if (m24 === 3)
37172 m24 = -1;
37173 var u1;
37174 if ((m14 & 1) === 0) {
37175 u1 = 0;
37176 } else {
37177 var m8 = (k1.andln(7) + d1) & 7;
37178 if ((m8 === 3 || m8 === 5) && m24 === 2)
37179 u1 = -m14;
37180 else
37181 u1 = m14;
37182 }
37183 jsf[0].push(u1);
37184
37185 var u2;
37186 if ((m24 & 1) === 0) {
37187 u2 = 0;
37188 } else {
37189 var m8 = (k2.andln(7) + d2) & 7;
37190 if ((m8 === 3 || m8 === 5) && m14 === 2)
37191 u2 = -m24;
37192 else
37193 u2 = m24;
37194 }
37195 jsf[1].push(u2);
37196
37197 // Second phase
37198 if (2 * d1 === u1 + 1)
37199 d1 = 1 - d1;
37200 if (2 * d2 === u2 + 1)
37201 d2 = 1 - d2;
37202 k1.iushrn(1);
37203 k2.iushrn(1);
37204 }
37205
37206 return jsf;
37207 }
37208 utils.getJSF = getJSF;
37209
37210 function cachedProperty(obj, name, computer) {
37211 var key = '_' + name;
37212 obj.prototype[name] = function cachedProperty() {
37213 return this[key] !== undefined ? this[key] :
37214 this[key] = computer.call(this);
37215 };
37216 }
37217 utils.cachedProperty = cachedProperty;
37218
37219 function parseBytes(bytes) {
37220 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37221 bytes;
37222 }
37223 utils.parseBytes = parseBytes;
37224
37225 function intFromLE(bytes) {
37226 return new BN(bytes, 'hex', 'le');
37227 }
37228 utils.intFromLE = intFromLE;
37229
37230
37231 },{"bn.js":33}],55:[function(require,module,exports){
37232 module.exports={
37233 "_args": [
37234 [
37235 {
37236 "raw": "elliptic@^6.2.3",
37237 "scope": null,
37238 "escapedName": "elliptic",
37239 "name": "elliptic",
37240 "rawSpec": "^6.2.3",
37241 "spec": ">=6.2.3 <7.0.0",
37242 "type": "range"
37243 },
37244 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37245 ]
37246 ],
37247 "_from": "elliptic@>=6.2.3 <7.0.0",
37248 "_id": "elliptic@6.3.3",
37249 "_inCache": true,
37250 "_location": "/elliptic",
37251 "_nodeVersion": "7.0.0",
37252 "_npmOperationalInternal": {
37253 "host": "packages-18-east.internal.npmjs.com",
37254 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37255 },
37256 "_npmUser": {
37257 "name": "indutny",
37258 "email": "fedor@indutny.com"
37259 },
37260 "_npmVersion": "3.10.8",
37261 "_phantomChildren": {},
37262 "_requested": {
37263 "raw": "elliptic@^6.2.3",
37264 "scope": null,
37265 "escapedName": "elliptic",
37266 "name": "elliptic",
37267 "rawSpec": "^6.2.3",
37268 "spec": ">=6.2.3 <7.0.0",
37269 "type": "range"
37270 },
37271 "_requiredBy": [
37272 "/browserify-sign",
37273 "/create-ecdh",
37274 "/secp256k1"
37275 ],
37276 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37277 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37278 "_shrinkwrap": null,
37279 "_spec": "elliptic@^6.2.3",
37280 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37281 "author": {
37282 "name": "Fedor Indutny",
37283 "email": "fedor@indutny.com"
37284 },
37285 "bugs": {
37286 "url": "https://github.com/indutny/elliptic/issues"
37287 },
37288 "dependencies": {
37289 "bn.js": "^4.4.0",
37290 "brorand": "^1.0.1",
37291 "hash.js": "^1.0.0",
37292 "inherits": "^2.0.1"
37293 },
37294 "description": "EC cryptography",
37295 "devDependencies": {
37296 "brfs": "^1.4.3",
37297 "coveralls": "^2.11.3",
37298 "grunt": "^0.4.5",
37299 "grunt-browserify": "^5.0.0",
37300 "grunt-cli": "^1.2.0",
37301 "grunt-contrib-connect": "^1.0.0",
37302 "grunt-contrib-copy": "^1.0.0",
37303 "grunt-contrib-uglify": "^1.0.1",
37304 "grunt-mocha-istanbul": "^3.0.1",
37305 "grunt-saucelabs": "^8.6.2",
37306 "istanbul": "^0.4.2",
37307 "jscs": "^2.9.0",
37308 "jshint": "^2.6.0",
37309 "mocha": "^2.1.0"
37310 },
37311 "directories": {},
37312 "dist": {
37313 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37314 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37315 },
37316 "files": [
37317 "lib"
37318 ],
37319 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37320 "homepage": "https://github.com/indutny/elliptic",
37321 "keywords": [
37322 "EC",
37323 "Elliptic",
37324 "curve",
37325 "Cryptography"
37326 ],
37327 "license": "MIT",
37328 "main": "lib/elliptic.js",
37329 "maintainers": [
37330 {
37331 "name": "indutny",
37332 "email": "fedor@indutny.com"
37333 }
37334 ],
37335 "name": "elliptic",
37336 "optionalDependencies": {},
37337 "readme": "ERROR: No README data found!",
37338 "repository": {
37339 "type": "git",
37340 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37341 },
37342 "scripts": {
37343 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37344 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37345 "lint": "npm run jscs && npm run jshint",
37346 "test": "npm run lint && npm run unit",
37347 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37348 "version": "grunt dist && git add dist/"
37349 },
37350 "version": "6.3.3"
37351 }
37352
37353 },{}],56:[function(require,module,exports){
37354 (function (Buffer){
37355 'use strict';
37356
37357 var isHexPrefixed = require('is-hex-prefixed');
37358 var stripHexPrefix = require('strip-hex-prefix');
37359
37360 /**
37361 * Pads a `String` to have an even length
37362 * @param {String} value
37363 * @return {String} output
37364 */
37365 function padToEven(value) {
37366 var a = value; // eslint-disable-line
37367
37368 if (typeof a !== 'string') {
37369 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37370 }
37371
37372 if (a.length % 2) {
37373 a = '0' + a;
37374 }
37375
37376 return a;
37377 }
37378
37379 /**
37380 * Converts a `Number` into a hex `String`
37381 * @param {Number} i
37382 * @return {String}
37383 */
37384 function intToHex(i) {
37385 var hex = i.toString(16); // eslint-disable-line
37386
37387 return '0x' + padToEven(hex);
37388 }
37389
37390 /**
37391 * Converts an `Number` to a `Buffer`
37392 * @param {Number} i
37393 * @return {Buffer}
37394 */
37395 function intToBuffer(i) {
37396 var hex = intToHex(i);
37397
37398 return new Buffer(hex.slice(2), 'hex');
37399 }
37400
37401 /**
37402 * Get the binary size of a string
37403 * @param {String} str
37404 * @return {Number}
37405 */
37406 function getBinarySize(str) {
37407 if (typeof str !== 'string') {
37408 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37409 }
37410
37411 return Buffer.byteLength(str, 'utf8');
37412 }
37413
37414 /**
37415 * Returns TRUE if the first specified array contains all elements
37416 * from the second one. FALSE otherwise.
37417 *
37418 * @param {array} superset
37419 * @param {array} subset
37420 *
37421 * @returns {boolean}
37422 */
37423 function arrayContainsArray(superset, subset, some) {
37424 if (Array.isArray(superset) !== true) {
37425 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37426 }
37427 if (Array.isArray(subset) !== true) {
37428 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
37429 }
37430
37431 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37432 return superset.indexOf(value) >= 0;
37433 });
37434 }
37435
37436 /**
37437 * Should be called to get utf8 from it's hex representation
37438 *
37439 * @method toUtf8
37440 * @param {String} string in hex
37441 * @returns {String} ascii string representation of hex value
37442 */
37443 function toUtf8(hex) {
37444 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
37445
37446 return bufferValue.toString('utf8');
37447 }
37448
37449 /**
37450 * Should be called to get ascii from it's hex representation
37451 *
37452 * @method toAscii
37453 * @param {String} string in hex
37454 * @returns {String} ascii string representation of hex value
37455 */
37456 function toAscii(hex) {
37457 var str = ''; // eslint-disable-line
37458 var i = 0,
37459 l = hex.length; // eslint-disable-line
37460
37461 if (hex.substring(0, 2) === '0x') {
37462 i = 2;
37463 }
37464
37465 for (; i < l; i += 2) {
37466 var code = parseInt(hex.substr(i, 2), 16);
37467 str += String.fromCharCode(code);
37468 }
37469
37470 return str;
37471 }
37472
37473 /**
37474 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37475 *
37476 * @method fromUtf8
37477 * @param {String} string
37478 * @param {Number} optional padding
37479 * @returns {String} hex representation of input string
37480 */
37481 function fromUtf8(stringValue) {
37482 var str = new Buffer(stringValue, 'utf8');
37483
37484 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37485 }
37486
37487 /**
37488 * Should be called to get hex representation (prefixed by 0x) of ascii string
37489 *
37490 * @method fromAscii
37491 * @param {String} string
37492 * @param {Number} optional padding
37493 * @returns {String} hex representation of input string
37494 */
37495 function fromAscii(stringValue) {
37496 var hex = ''; // eslint-disable-line
37497 for (var i = 0; i < stringValue.length; i++) {
37498 // eslint-disable-line
37499 var code = stringValue.charCodeAt(i);
37500 var n = code.toString(16);
37501 hex += n.length < 2 ? '0' + n : n;
37502 }
37503
37504 return '0x' + hex;
37505 }
37506
37507 /**
37508 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37509 *
37510 * @method getKeys get specific key from inner object array of objects
37511 * @param {String} params
37512 * @param {String} key
37513 * @param {Boolean} allowEmpty
37514 * @returns {Array} output just a simple array of output keys
37515 */
37516 function getKeys(params, key, allowEmpty) {
37517 if (!Array.isArray(params)) {
37518 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37519 }
37520 if (typeof key !== 'string') {
37521 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37522 }
37523
37524 var result = []; // eslint-disable-line
37525
37526 for (var i = 0; i < params.length; i++) {
37527 // eslint-disable-line
37528 var value = params[i][key]; // eslint-disable-line
37529 if (allowEmpty && !value) {
37530 value = '';
37531 } else if (typeof value !== 'string') {
37532 throw new Error('invalid abi');
37533 }
37534 result.push(value);
37535 }
37536
37537 return result;
37538 }
37539
37540 /**
37541 * Is the string a hex string.
37542 *
37543 * @method check if string is hex string of specific length
37544 * @param {String} value
37545 * @param {Number} length
37546 * @returns {Boolean} output the string is a hex string
37547 */
37548 function isHexString(value, length) {
37549 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37550 return false;
37551 }
37552
37553 if (length && value.length !== 2 + 2 * length) {
37554 return false;
37555 }
37556
37557 return true;
37558 }
37559
37560 module.exports = {
37561 arrayContainsArray: arrayContainsArray,
37562 intToBuffer: intToBuffer,
37563 getBinarySize: getBinarySize,
37564 isHexPrefixed: isHexPrefixed,
37565 stripHexPrefix: stripHexPrefix,
37566 padToEven: padToEven,
37567 intToHex: intToHex,
37568 fromAscii: fromAscii,
37569 fromUtf8: fromUtf8,
37570 toAscii: toAscii,
37571 toUtf8: toUtf8,
37572 getKeys: getKeys,
37573 isHexString: isHexString
37574 };
37575 }).call(this,require("buffer").Buffer)
37576 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37577 var hash = exports;
37578
37579 hash.utils = require('./hash/utils');
37580 hash.common = require('./hash/common');
37581 hash.sha = require('./hash/sha');
37582 hash.ripemd = require('./hash/ripemd');
37583 hash.hmac = require('./hash/hmac');
37584
37585 // Proxy hash functions to the main object
37586 hash.sha1 = hash.sha.sha1;
37587 hash.sha256 = hash.sha.sha256;
37588 hash.sha224 = hash.sha.sha224;
37589 hash.sha384 = hash.sha.sha384;
37590 hash.sha512 = hash.sha.sha512;
37591 hash.ripemd160 = hash.ripemd.ripemd160;
37592
37593 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37594 var hash = require('../hash');
37595 var utils = hash.utils;
37596 var assert = utils.assert;
37597
37598 function BlockHash() {
37599 this.pending = null;
37600 this.pendingTotal = 0;
37601 this.blockSize = this.constructor.blockSize;
37602 this.outSize = this.constructor.outSize;
37603 this.hmacStrength = this.constructor.hmacStrength;
37604 this.padLength = this.constructor.padLength / 8;
37605 this.endian = 'big';
37606
37607 this._delta8 = this.blockSize / 8;
37608 this._delta32 = this.blockSize / 32;
37609 }
37610 exports.BlockHash = BlockHash;
37611
37612 BlockHash.prototype.update = function update(msg, enc) {
37613 // Convert message to array, pad it, and join into 32bit blocks
37614 msg = utils.toArray(msg, enc);
37615 if (!this.pending)
37616 this.pending = msg;
37617 else
37618 this.pending = this.pending.concat(msg);
37619 this.pendingTotal += msg.length;
37620
37621 // Enough data, try updating
37622 if (this.pending.length >= this._delta8) {
37623 msg = this.pending;
37624
37625 // Process pending data in blocks
37626 var r = msg.length % this._delta8;
37627 this.pending = msg.slice(msg.length - r, msg.length);
37628 if (this.pending.length === 0)
37629 this.pending = null;
37630
37631 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37632 for (var i = 0; i < msg.length; i += this._delta32)
37633 this._update(msg, i, i + this._delta32);
37634 }
37635
37636 return this;
37637 };
37638
37639 BlockHash.prototype.digest = function digest(enc) {
37640 this.update(this._pad());
37641 assert(this.pending === null);
37642
37643 return this._digest(enc);
37644 };
37645
37646 BlockHash.prototype._pad = function pad() {
37647 var len = this.pendingTotal;
37648 var bytes = this._delta8;
37649 var k = bytes - ((len + this.padLength) % bytes);
37650 var res = new Array(k + this.padLength);
37651 res[0] = 0x80;
37652 for (var i = 1; i < k; i++)
37653 res[i] = 0;
37654
37655 // Append length
37656 len <<= 3;
37657 if (this.endian === 'big') {
37658 for (var t = 8; t < this.padLength; t++)
37659 res[i++] = 0;
37660
37661 res[i++] = 0;
37662 res[i++] = 0;
37663 res[i++] = 0;
37664 res[i++] = 0;
37665 res[i++] = (len >>> 24) & 0xff;
37666 res[i++] = (len >>> 16) & 0xff;
37667 res[i++] = (len >>> 8) & 0xff;
37668 res[i++] = len & 0xff;
37669 } else {
37670 res[i++] = len & 0xff;
37671 res[i++] = (len >>> 8) & 0xff;
37672 res[i++] = (len >>> 16) & 0xff;
37673 res[i++] = (len >>> 24) & 0xff;
37674 res[i++] = 0;
37675 res[i++] = 0;
37676 res[i++] = 0;
37677 res[i++] = 0;
37678
37679 for (var t = 8; t < this.padLength; t++)
37680 res[i++] = 0;
37681 }
37682
37683 return res;
37684 };
37685
37686 },{"../hash":57}],59:[function(require,module,exports){
37687 var hmac = exports;
37688
37689 var hash = require('../hash');
37690 var utils = hash.utils;
37691 var assert = utils.assert;
37692
37693 function Hmac(hash, key, enc) {
37694 if (!(this instanceof Hmac))
37695 return new Hmac(hash, key, enc);
37696 this.Hash = hash;
37697 this.blockSize = hash.blockSize / 8;
37698 this.outSize = hash.outSize / 8;
37699 this.inner = null;
37700 this.outer = null;
37701
37702 this._init(utils.toArray(key, enc));
37703 }
37704 module.exports = Hmac;
37705
37706 Hmac.prototype._init = function init(key) {
37707 // Shorten key, if needed
37708 if (key.length > this.blockSize)
37709 key = new this.Hash().update(key).digest();
37710 assert(key.length <= this.blockSize);
37711
37712 // Add padding to key
37713 for (var i = key.length; i < this.blockSize; i++)
37714 key.push(0);
37715
37716 for (var i = 0; i < key.length; i++)
37717 key[i] ^= 0x36;
37718 this.inner = new this.Hash().update(key);
37719
37720 // 0x36 ^ 0x5c = 0x6a
37721 for (var i = 0; i < key.length; i++)
37722 key[i] ^= 0x6a;
37723 this.outer = new this.Hash().update(key);
37724 };
37725
37726 Hmac.prototype.update = function update(msg, enc) {
37727 this.inner.update(msg, enc);
37728 return this;
37729 };
37730
37731 Hmac.prototype.digest = function digest(enc) {
37732 this.outer.update(this.inner.digest());
37733 return this.outer.digest(enc);
37734 };
37735
37736 },{"../hash":57}],60:[function(require,module,exports){
37737 var hash = require('../hash');
37738 var utils = hash.utils;
37739
37740 var rotl32 = utils.rotl32;
37741 var sum32 = utils.sum32;
37742 var sum32_3 = utils.sum32_3;
37743 var sum32_4 = utils.sum32_4;
37744 var BlockHash = hash.common.BlockHash;
37745
37746 function RIPEMD160() {
37747 if (!(this instanceof RIPEMD160))
37748 return new RIPEMD160();
37749
37750 BlockHash.call(this);
37751
37752 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37753 this.endian = 'little';
37754 }
37755 utils.inherits(RIPEMD160, BlockHash);
37756 exports.ripemd160 = RIPEMD160;
37757
37758 RIPEMD160.blockSize = 512;
37759 RIPEMD160.outSize = 160;
37760 RIPEMD160.hmacStrength = 192;
37761 RIPEMD160.padLength = 64;
37762
37763 RIPEMD160.prototype._update = function update(msg, start) {
37764 var A = this.h[0];
37765 var B = this.h[1];
37766 var C = this.h[2];
37767 var D = this.h[3];
37768 var E = this.h[4];
37769 var Ah = A;
37770 var Bh = B;
37771 var Ch = C;
37772 var Dh = D;
37773 var Eh = E;
37774 for (var j = 0; j < 80; j++) {
37775 var T = sum32(
37776 rotl32(
37777 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37778 s[j]),
37779 E);
37780 A = E;
37781 E = D;
37782 D = rotl32(C, 10);
37783 C = B;
37784 B = T;
37785 T = sum32(
37786 rotl32(
37787 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37788 sh[j]),
37789 Eh);
37790 Ah = Eh;
37791 Eh = Dh;
37792 Dh = rotl32(Ch, 10);
37793 Ch = Bh;
37794 Bh = T;
37795 }
37796 T = sum32_3(this.h[1], C, Dh);
37797 this.h[1] = sum32_3(this.h[2], D, Eh);
37798 this.h[2] = sum32_3(this.h[3], E, Ah);
37799 this.h[3] = sum32_3(this.h[4], A, Bh);
37800 this.h[4] = sum32_3(this.h[0], B, Ch);
37801 this.h[0] = T;
37802 };
37803
37804 RIPEMD160.prototype._digest = function digest(enc) {
37805 if (enc === 'hex')
37806 return utils.toHex32(this.h, 'little');
37807 else
37808 return utils.split32(this.h, 'little');
37809 };
37810
37811 function f(j, x, y, z) {
37812 if (j <= 15)
37813 return x ^ y ^ z;
37814 else if (j <= 31)
37815 return (x & y) | ((~x) & z);
37816 else if (j <= 47)
37817 return (x | (~y)) ^ z;
37818 else if (j <= 63)
37819 return (x & z) | (y & (~z));
37820 else
37821 return x ^ (y | (~z));
37822 }
37823
37824 function K(j) {
37825 if (j <= 15)
37826 return 0x00000000;
37827 else if (j <= 31)
37828 return 0x5a827999;
37829 else if (j <= 47)
37830 return 0x6ed9eba1;
37831 else if (j <= 63)
37832 return 0x8f1bbcdc;
37833 else
37834 return 0xa953fd4e;
37835 }
37836
37837 function Kh(j) {
37838 if (j <= 15)
37839 return 0x50a28be6;
37840 else if (j <= 31)
37841 return 0x5c4dd124;
37842 else if (j <= 47)
37843 return 0x6d703ef3;
37844 else if (j <= 63)
37845 return 0x7a6d76e9;
37846 else
37847 return 0x00000000;
37848 }
37849
37850 var r = [
37851 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37852 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37853 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37854 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37855 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37856 ];
37857
37858 var rh = [
37859 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37860 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37861 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37862 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37863 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37864 ];
37865
37866 var s = [
37867 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37868 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37869 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37870 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37871 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37872 ];
37873
37874 var sh = [
37875 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37876 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37877 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37878 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37879 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37880 ];
37881
37882 },{"../hash":57}],61:[function(require,module,exports){
37883 var hash = require('../hash');
37884 var utils = hash.utils;
37885 var assert = utils.assert;
37886
37887 var rotr32 = utils.rotr32;
37888 var rotl32 = utils.rotl32;
37889 var sum32 = utils.sum32;
37890 var sum32_4 = utils.sum32_4;
37891 var sum32_5 = utils.sum32_5;
37892 var rotr64_hi = utils.rotr64_hi;
37893 var rotr64_lo = utils.rotr64_lo;
37894 var shr64_hi = utils.shr64_hi;
37895 var shr64_lo = utils.shr64_lo;
37896 var sum64 = utils.sum64;
37897 var sum64_hi = utils.sum64_hi;
37898 var sum64_lo = utils.sum64_lo;
37899 var sum64_4_hi = utils.sum64_4_hi;
37900 var sum64_4_lo = utils.sum64_4_lo;
37901 var sum64_5_hi = utils.sum64_5_hi;
37902 var sum64_5_lo = utils.sum64_5_lo;
37903 var BlockHash = hash.common.BlockHash;
37904
37905 var sha256_K = [
37906 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37907 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37908 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37909 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37910 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37911 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37912 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37913 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37914 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37915 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37916 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37917 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37918 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37919 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37920 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37921 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37922 ];
37923
37924 var sha512_K = [
37925 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37926 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37927 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37928 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37929 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37930 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37931 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37932 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37933 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37934 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37935 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37936 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37937 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37938 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37939 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37940 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37941 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37942 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37943 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37944 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37945 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37946 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37947 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37948 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37949 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37950 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37951 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37952 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37953 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37954 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37955 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37956 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37957 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37958 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37959 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37960 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37961 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37962 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37963 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37964 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37965 ];
37966
37967 var sha1_K = [
37968 0x5A827999, 0x6ED9EBA1,
37969 0x8F1BBCDC, 0xCA62C1D6
37970 ];
37971
37972 function SHA256() {
37973 if (!(this instanceof SHA256))
37974 return new SHA256();
37975
37976 BlockHash.call(this);
37977 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37978 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37979 this.k = sha256_K;
37980 this.W = new Array(64);
37981 }
37982 utils.inherits(SHA256, BlockHash);
37983 exports.sha256 = SHA256;
37984
37985 SHA256.blockSize = 512;
37986 SHA256.outSize = 256;
37987 SHA256.hmacStrength = 192;
37988 SHA256.padLength = 64;
37989
37990 SHA256.prototype._update = function _update(msg, start) {
37991 var W = this.W;
37992
37993 for (var i = 0; i < 16; i++)
37994 W[i] = msg[start + i];
37995 for (; i < W.length; i++)
37996 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37997
37998 var a = this.h[0];
37999 var b = this.h[1];
38000 var c = this.h[2];
38001 var d = this.h[3];
38002 var e = this.h[4];
38003 var f = this.h[5];
38004 var g = this.h[6];
38005 var h = this.h[7];
38006
38007 assert(this.k.length === W.length);
38008 for (var i = 0; i < W.length; i++) {
38009 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
38010 var T2 = sum32(s0_256(a), maj32(a, b, c));
38011 h = g;
38012 g = f;
38013 f = e;
38014 e = sum32(d, T1);
38015 d = c;
38016 c = b;
38017 b = a;
38018 a = sum32(T1, T2);
38019 }
38020
38021 this.h[0] = sum32(this.h[0], a);
38022 this.h[1] = sum32(this.h[1], b);
38023 this.h[2] = sum32(this.h[2], c);
38024 this.h[3] = sum32(this.h[3], d);
38025 this.h[4] = sum32(this.h[4], e);
38026 this.h[5] = sum32(this.h[5], f);
38027 this.h[6] = sum32(this.h[6], g);
38028 this.h[7] = sum32(this.h[7], h);
38029 };
38030
38031 SHA256.prototype._digest = function digest(enc) {
38032 if (enc === 'hex')
38033 return utils.toHex32(this.h, 'big');
38034 else
38035 return utils.split32(this.h, 'big');
38036 };
38037
38038 function SHA224() {
38039 if (!(this instanceof SHA224))
38040 return new SHA224();
38041
38042 SHA256.call(this);
38043 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
38044 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
38045 }
38046 utils.inherits(SHA224, SHA256);
38047 exports.sha224 = SHA224;
38048
38049 SHA224.blockSize = 512;
38050 SHA224.outSize = 224;
38051 SHA224.hmacStrength = 192;
38052 SHA224.padLength = 64;
38053
38054 SHA224.prototype._digest = function digest(enc) {
38055 // Just truncate output
38056 if (enc === 'hex')
38057 return utils.toHex32(this.h.slice(0, 7), 'big');
38058 else
38059 return utils.split32(this.h.slice(0, 7), 'big');
38060 };
38061
38062 function SHA512() {
38063 if (!(this instanceof SHA512))
38064 return new SHA512();
38065
38066 BlockHash.call(this);
38067 this.h = [ 0x6a09e667, 0xf3bcc908,
38068 0xbb67ae85, 0x84caa73b,
38069 0x3c6ef372, 0xfe94f82b,
38070 0xa54ff53a, 0x5f1d36f1,
38071 0x510e527f, 0xade682d1,
38072 0x9b05688c, 0x2b3e6c1f,
38073 0x1f83d9ab, 0xfb41bd6b,
38074 0x5be0cd19, 0x137e2179 ];
38075 this.k = sha512_K;
38076 this.W = new Array(160);
38077 }
38078 utils.inherits(SHA512, BlockHash);
38079 exports.sha512 = SHA512;
38080
38081 SHA512.blockSize = 1024;
38082 SHA512.outSize = 512;
38083 SHA512.hmacStrength = 192;
38084 SHA512.padLength = 128;
38085
38086 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
38087 var W = this.W;
38088
38089 // 32 x 32bit words
38090 for (var i = 0; i < 32; i++)
38091 W[i] = msg[start + i];
38092 for (; i < W.length; i += 2) {
38093 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
38094 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
38095 var c1_hi = W[i - 14]; // i - 7
38096 var c1_lo = W[i - 13];
38097 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
38098 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
38099 var c3_hi = W[i - 32]; // i - 16
38100 var c3_lo = W[i - 31];
38101
38102 W[i] = sum64_4_hi(c0_hi, c0_lo,
38103 c1_hi, c1_lo,
38104 c2_hi, c2_lo,
38105 c3_hi, c3_lo);
38106 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
38107 c1_hi, c1_lo,
38108 c2_hi, c2_lo,
38109 c3_hi, c3_lo);
38110 }
38111 };
38112
38113 SHA512.prototype._update = function _update(msg, start) {
38114 this._prepareBlock(msg, start);
38115
38116 var W = this.W;
38117
38118 var ah = this.h[0];
38119 var al = this.h[1];
38120 var bh = this.h[2];
38121 var bl = this.h[3];
38122 var ch = this.h[4];
38123 var cl = this.h[5];
38124 var dh = this.h[6];
38125 var dl = this.h[7];
38126 var eh = this.h[8];
38127 var el = this.h[9];
38128 var fh = this.h[10];
38129 var fl = this.h[11];
38130 var gh = this.h[12];
38131 var gl = this.h[13];
38132 var hh = this.h[14];
38133 var hl = this.h[15];
38134
38135 assert(this.k.length === W.length);
38136 for (var i = 0; i < W.length; i += 2) {
38137 var c0_hi = hh;
38138 var c0_lo = hl;
38139 var c1_hi = s1_512_hi(eh, el);
38140 var c1_lo = s1_512_lo(eh, el);
38141 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38142 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38143 var c3_hi = this.k[i];
38144 var c3_lo = this.k[i + 1];
38145 var c4_hi = W[i];
38146 var c4_lo = W[i + 1];
38147
38148 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38149 c1_hi, c1_lo,
38150 c2_hi, c2_lo,
38151 c3_hi, c3_lo,
38152 c4_hi, c4_lo);
38153 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38154 c1_hi, c1_lo,
38155 c2_hi, c2_lo,
38156 c3_hi, c3_lo,
38157 c4_hi, c4_lo);
38158
38159 var c0_hi = s0_512_hi(ah, al);
38160 var c0_lo = s0_512_lo(ah, al);
38161 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38162 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38163
38164 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38165 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38166
38167 hh = gh;
38168 hl = gl;
38169
38170 gh = fh;
38171 gl = fl;
38172
38173 fh = eh;
38174 fl = el;
38175
38176 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38177 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38178
38179 dh = ch;
38180 dl = cl;
38181
38182 ch = bh;
38183 cl = bl;
38184
38185 bh = ah;
38186 bl = al;
38187
38188 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38189 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38190 }
38191
38192 sum64(this.h, 0, ah, al);
38193 sum64(this.h, 2, bh, bl);
38194 sum64(this.h, 4, ch, cl);
38195 sum64(this.h, 6, dh, dl);
38196 sum64(this.h, 8, eh, el);
38197 sum64(this.h, 10, fh, fl);
38198 sum64(this.h, 12, gh, gl);
38199 sum64(this.h, 14, hh, hl);
38200 };
38201
38202 SHA512.prototype._digest = function digest(enc) {
38203 if (enc === 'hex')
38204 return utils.toHex32(this.h, 'big');
38205 else
38206 return utils.split32(this.h, 'big');
38207 };
38208
38209 function SHA384() {
38210 if (!(this instanceof SHA384))
38211 return new SHA384();
38212
38213 SHA512.call(this);
38214 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38215 0x629a292a, 0x367cd507,
38216 0x9159015a, 0x3070dd17,
38217 0x152fecd8, 0xf70e5939,
38218 0x67332667, 0xffc00b31,
38219 0x8eb44a87, 0x68581511,
38220 0xdb0c2e0d, 0x64f98fa7,
38221 0x47b5481d, 0xbefa4fa4 ];
38222 }
38223 utils.inherits(SHA384, SHA512);
38224 exports.sha384 = SHA384;
38225
38226 SHA384.blockSize = 1024;
38227 SHA384.outSize = 384;
38228 SHA384.hmacStrength = 192;
38229 SHA384.padLength = 128;
38230
38231 SHA384.prototype._digest = function digest(enc) {
38232 if (enc === 'hex')
38233 return utils.toHex32(this.h.slice(0, 12), 'big');
38234 else
38235 return utils.split32(this.h.slice(0, 12), 'big');
38236 };
38237
38238 function SHA1() {
38239 if (!(this instanceof SHA1))
38240 return new SHA1();
38241
38242 BlockHash.call(this);
38243 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38244 0x10325476, 0xc3d2e1f0 ];
38245 this.W = new Array(80);
38246 }
38247
38248 utils.inherits(SHA1, BlockHash);
38249 exports.sha1 = SHA1;
38250
38251 SHA1.blockSize = 512;
38252 SHA1.outSize = 160;
38253 SHA1.hmacStrength = 80;
38254 SHA1.padLength = 64;
38255
38256 SHA1.prototype._update = function _update(msg, start) {
38257 var W = this.W;
38258
38259 for (var i = 0; i < 16; i++)
38260 W[i] = msg[start + i];
38261
38262 for(; i < W.length; i++)
38263 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
38264
38265 var a = this.h[0];
38266 var b = this.h[1];
38267 var c = this.h[2];
38268 var d = this.h[3];
38269 var e = this.h[4];
38270
38271 for (var i = 0; i < W.length; i++) {
38272 var s = ~~(i / 20);
38273 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38274 e = d;
38275 d = c;
38276 c = rotl32(b, 30);
38277 b = a;
38278 a = t;
38279 }
38280
38281 this.h[0] = sum32(this.h[0], a);
38282 this.h[1] = sum32(this.h[1], b);
38283 this.h[2] = sum32(this.h[2], c);
38284 this.h[3] = sum32(this.h[3], d);
38285 this.h[4] = sum32(this.h[4], e);
38286 };
38287
38288 SHA1.prototype._digest = function digest(enc) {
38289 if (enc === 'hex')
38290 return utils.toHex32(this.h, 'big');
38291 else
38292 return utils.split32(this.h, 'big');
38293 };
38294
38295 function ch32(x, y, z) {
38296 return (x & y) ^ ((~x) & z);
38297 }
38298
38299 function maj32(x, y, z) {
38300 return (x & y) ^ (x & z) ^ (y & z);
38301 }
38302
38303 function p32(x, y, z) {
38304 return x ^ y ^ z;
38305 }
38306
38307 function s0_256(x) {
38308 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38309 }
38310
38311 function s1_256(x) {
38312 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
38313 }
38314
38315 function g0_256(x) {
38316 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38317 }
38318
38319 function g1_256(x) {
38320 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38321 }
38322
38323 function ft_1(s, x, y, z) {
38324 if (s === 0)
38325 return ch32(x, y, z);
38326 if (s === 1 || s === 3)
38327 return p32(x, y, z);
38328 if (s === 2)
38329 return maj32(x, y, z);
38330 }
38331
38332 function ch64_hi(xh, xl, yh, yl, zh, zl) {
38333 var r = (xh & yh) ^ ((~xh) & zh);
38334 if (r < 0)
38335 r += 0x100000000;
38336 return r;
38337 }
38338
38339 function ch64_lo(xh, xl, yh, yl, zh, zl) {
38340 var r = (xl & yl) ^ ((~xl) & zl);
38341 if (r < 0)
38342 r += 0x100000000;
38343 return r;
38344 }
38345
38346 function maj64_hi(xh, xl, yh, yl, zh, zl) {
38347 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38348 if (r < 0)
38349 r += 0x100000000;
38350 return r;
38351 }
38352
38353 function maj64_lo(xh, xl, yh, yl, zh, zl) {
38354 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38355 if (r < 0)
38356 r += 0x100000000;
38357 return r;
38358 }
38359
38360 function s0_512_hi(xh, xl) {
38361 var c0_hi = rotr64_hi(xh, xl, 28);
38362 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38363 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38364
38365 var r = c0_hi ^ c1_hi ^ c2_hi;
38366 if (r < 0)
38367 r += 0x100000000;
38368 return r;
38369 }
38370
38371 function s0_512_lo(xh, xl) {
38372 var c0_lo = rotr64_lo(xh, xl, 28);
38373 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38374 var c2_lo = rotr64_lo(xl, xh, 7); // 39
38375
38376 var r = c0_lo ^ c1_lo ^ c2_lo;
38377 if (r < 0)
38378 r += 0x100000000;
38379 return r;
38380 }
38381
38382 function s1_512_hi(xh, xl) {
38383 var c0_hi = rotr64_hi(xh, xl, 14);
38384 var c1_hi = rotr64_hi(xh, xl, 18);
38385 var c2_hi = rotr64_hi(xl, xh, 9); // 41
38386
38387 var r = c0_hi ^ c1_hi ^ c2_hi;
38388 if (r < 0)
38389 r += 0x100000000;
38390 return r;
38391 }
38392
38393 function s1_512_lo(xh, xl) {
38394 var c0_lo = rotr64_lo(xh, xl, 14);
38395 var c1_lo = rotr64_lo(xh, xl, 18);
38396 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38397
38398 var r = c0_lo ^ c1_lo ^ c2_lo;
38399 if (r < 0)
38400 r += 0x100000000;
38401 return r;
38402 }
38403
38404 function g0_512_hi(xh, xl) {
38405 var c0_hi = rotr64_hi(xh, xl, 1);
38406 var c1_hi = rotr64_hi(xh, xl, 8);
38407 var c2_hi = shr64_hi(xh, xl, 7);
38408
38409 var r = c0_hi ^ c1_hi ^ c2_hi;
38410 if (r < 0)
38411 r += 0x100000000;
38412 return r;
38413 }
38414
38415 function g0_512_lo(xh, xl) {
38416 var c0_lo = rotr64_lo(xh, xl, 1);
38417 var c1_lo = rotr64_lo(xh, xl, 8);
38418 var c2_lo = shr64_lo(xh, xl, 7);
38419
38420 var r = c0_lo ^ c1_lo ^ c2_lo;
38421 if (r < 0)
38422 r += 0x100000000;
38423 return r;
38424 }
38425
38426 function g1_512_hi(xh, xl) {
38427 var c0_hi = rotr64_hi(xh, xl, 19);
38428 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38429 var c2_hi = shr64_hi(xh, xl, 6);
38430
38431 var r = c0_hi ^ c1_hi ^ c2_hi;
38432 if (r < 0)
38433 r += 0x100000000;
38434 return r;
38435 }
38436
38437 function g1_512_lo(xh, xl) {
38438 var c0_lo = rotr64_lo(xh, xl, 19);
38439 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38440 var c2_lo = shr64_lo(xh, xl, 6);
38441
38442 var r = c0_lo ^ c1_lo ^ c2_lo;
38443 if (r < 0)
38444 r += 0x100000000;
38445 return r;
38446 }
38447
38448 },{"../hash":57}],62:[function(require,module,exports){
38449 var utils = exports;
38450 var inherits = require('inherits');
38451
38452 function toArray(msg, enc) {
38453 if (Array.isArray(msg))
38454 return msg.slice();
38455 if (!msg)
38456 return [];
38457 var res = [];
38458 if (typeof msg === 'string') {
38459 if (!enc) {
38460 for (var i = 0; i < msg.length; i++) {
38461 var c = msg.charCodeAt(i);
38462 var hi = c >> 8;
38463 var lo = c & 0xff;
38464 if (hi)
38465 res.push(hi, lo);
38466 else
38467 res.push(lo);
38468 }
38469 } else if (enc === 'hex') {
38470 msg = msg.replace(/[^a-z0-9]+/ig, '');
38471 if (msg.length % 2 !== 0)
38472 msg = '0' + msg;
38473 for (var i = 0; i < msg.length; i += 2)
38474 res.push(parseInt(msg[i] + msg[i + 1], 16));
38475 }
38476 } else {
38477 for (var i = 0; i < msg.length; i++)
38478 res[i] = msg[i] | 0;
38479 }
38480 return res;
38481 }
38482 utils.toArray = toArray;
38483
38484 function toHex(msg) {
38485 var res = '';
38486 for (var i = 0; i < msg.length; i++)
38487 res += zero2(msg[i].toString(16));
38488 return res;
38489 }
38490 utils.toHex = toHex;
38491
38492 function htonl(w) {
38493 var res = (w >>> 24) |
38494 ((w >>> 8) & 0xff00) |
38495 ((w << 8) & 0xff0000) |
38496 ((w & 0xff) << 24);
38497 return res >>> 0;
38498 }
38499 utils.htonl = htonl;
38500
38501 function toHex32(msg, endian) {
38502 var res = '';
38503 for (var i = 0; i < msg.length; i++) {
38504 var w = msg[i];
38505 if (endian === 'little')
38506 w = htonl(w);
38507 res += zero8(w.toString(16));
38508 }
38509 return res;
38510 }
38511 utils.toHex32 = toHex32;
38512
38513 function zero2(word) {
38514 if (word.length === 1)
38515 return '0' + word;
38516 else
38517 return word;
38518 }
38519 utils.zero2 = zero2;
38520
38521 function zero8(word) {
38522 if (word.length === 7)
38523 return '0' + word;
38524 else if (word.length === 6)
38525 return '00' + word;
38526 else if (word.length === 5)
38527 return '000' + word;
38528 else if (word.length === 4)
38529 return '0000' + word;
38530 else if (word.length === 3)
38531 return '00000' + word;
38532 else if (word.length === 2)
38533 return '000000' + word;
38534 else if (word.length === 1)
38535 return '0000000' + word;
38536 else
38537 return word;
38538 }
38539 utils.zero8 = zero8;
38540
38541 function join32(msg, start, end, endian) {
38542 var len = end - start;
38543 assert(len % 4 === 0);
38544 var res = new Array(len / 4);
38545 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38546 var w;
38547 if (endian === 'big')
38548 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38549 else
38550 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38551 res[i] = w >>> 0;
38552 }
38553 return res;
38554 }
38555 utils.join32 = join32;
38556
38557 function split32(msg, endian) {
38558 var res = new Array(msg.length * 4);
38559 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38560 var m = msg[i];
38561 if (endian === 'big') {
38562 res[k] = m >>> 24;
38563 res[k + 1] = (m >>> 16) & 0xff;
38564 res[k + 2] = (m >>> 8) & 0xff;
38565 res[k + 3] = m & 0xff;
38566 } else {
38567 res[k + 3] = m >>> 24;
38568 res[k + 2] = (m >>> 16) & 0xff;
38569 res[k + 1] = (m >>> 8) & 0xff;
38570 res[k] = m & 0xff;
38571 }
38572 }
38573 return res;
38574 }
38575 utils.split32 = split32;
38576
38577 function rotr32(w, b) {
38578 return (w >>> b) | (w << (32 - b));
38579 }
38580 utils.rotr32 = rotr32;
38581
38582 function rotl32(w, b) {
38583 return (w << b) | (w >>> (32 - b));
38584 }
38585 utils.rotl32 = rotl32;
38586
38587 function sum32(a, b) {
38588 return (a + b) >>> 0;
38589 }
38590 utils.sum32 = sum32;
38591
38592 function sum32_3(a, b, c) {
38593 return (a + b + c) >>> 0;
38594 }
38595 utils.sum32_3 = sum32_3;
38596
38597 function sum32_4(a, b, c, d) {
38598 return (a + b + c + d) >>> 0;
38599 }
38600 utils.sum32_4 = sum32_4;
38601
38602 function sum32_5(a, b, c, d, e) {
38603 return (a + b + c + d + e) >>> 0;
38604 }
38605 utils.sum32_5 = sum32_5;
38606
38607 function assert(cond, msg) {
38608 if (!cond)
38609 throw new Error(msg || 'Assertion failed');
38610 }
38611 utils.assert = assert;
38612
38613 utils.inherits = inherits;
38614
38615 function sum64(buf, pos, ah, al) {
38616 var bh = buf[pos];
38617 var bl = buf[pos + 1];
38618
38619 var lo = (al + bl) >>> 0;
38620 var hi = (lo < al ? 1 : 0) + ah + bh;
38621 buf[pos] = hi >>> 0;
38622 buf[pos + 1] = lo;
38623 }
38624 exports.sum64 = sum64;
38625
38626 function sum64_hi(ah, al, bh, bl) {
38627 var lo = (al + bl) >>> 0;
38628 var hi = (lo < al ? 1 : 0) + ah + bh;
38629 return hi >>> 0;
38630 };
38631 exports.sum64_hi = sum64_hi;
38632
38633 function sum64_lo(ah, al, bh, bl) {
38634 var lo = al + bl;
38635 return lo >>> 0;
38636 };
38637 exports.sum64_lo = sum64_lo;
38638
38639 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38640 var carry = 0;
38641 var lo = al;
38642 lo = (lo + bl) >>> 0;
38643 carry += lo < al ? 1 : 0;
38644 lo = (lo + cl) >>> 0;
38645 carry += lo < cl ? 1 : 0;
38646 lo = (lo + dl) >>> 0;
38647 carry += lo < dl ? 1 : 0;
38648
38649 var hi = ah + bh + ch + dh + carry;
38650 return hi >>> 0;
38651 };
38652 exports.sum64_4_hi = sum64_4_hi;
38653
38654 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38655 var lo = al + bl + cl + dl;
38656 return lo >>> 0;
38657 };
38658 exports.sum64_4_lo = sum64_4_lo;
38659
38660 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38661 var carry = 0;
38662 var lo = al;
38663 lo = (lo + bl) >>> 0;
38664 carry += lo < al ? 1 : 0;
38665 lo = (lo + cl) >>> 0;
38666 carry += lo < cl ? 1 : 0;
38667 lo = (lo + dl) >>> 0;
38668 carry += lo < dl ? 1 : 0;
38669 lo = (lo + el) >>> 0;
38670 carry += lo < el ? 1 : 0;
38671
38672 var hi = ah + bh + ch + dh + eh + carry;
38673 return hi >>> 0;
38674 };
38675 exports.sum64_5_hi = sum64_5_hi;
38676
38677 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38678 var lo = al + bl + cl + dl + el;
38679
38680 return lo >>> 0;
38681 };
38682 exports.sum64_5_lo = sum64_5_lo;
38683
38684 function rotr64_hi(ah, al, num) {
38685 var r = (al << (32 - num)) | (ah >>> num);
38686 return r >>> 0;
38687 };
38688 exports.rotr64_hi = rotr64_hi;
38689
38690 function rotr64_lo(ah, al, num) {
38691 var r = (ah << (32 - num)) | (al >>> num);
38692 return r >>> 0;
38693 };
38694 exports.rotr64_lo = rotr64_lo;
38695
38696 function shr64_hi(ah, al, num) {
38697 return ah >>> num;
38698 };
38699 exports.shr64_hi = shr64_hi;
38700
38701 function shr64_lo(ah, al, num) {
38702 var r = (ah << (32 - num)) | (al >>> num);
38703 return r >>> 0;
38704 };
38705 exports.shr64_lo = shr64_lo;
38706
38707 },{"inherits":63}],63:[function(require,module,exports){
38708 arguments[4][9][0].apply(exports,arguments)
38709 },{"dup":9}],64:[function(require,module,exports){
38710 /**
38711 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38712 * @param {String} str the string input value
38713 * @return {Boolean} a boolean if it is or is not hex prefixed
38714 * @throws if the str input is not a string
38715 */
38716 module.exports = function isHexPrefixed(str) {
38717 if (typeof str !== 'string') {
38718 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38719 }
38720
38721 return str.slice(0, 2) === '0x';
38722 }
38723
38724 },{}],65:[function(require,module,exports){
38725 'use strict'
38726 module.exports = require('./lib/api')(require('./lib/keccak'))
38727
38728 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38729 'use strict'
38730 var createKeccak = require('./keccak')
38731 var createShake = require('./shake')
38732
38733 module.exports = function (KeccakState) {
38734 var Keccak = createKeccak(KeccakState)
38735 var Shake = createShake(KeccakState)
38736
38737 return function (algorithm, options) {
38738 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38739 switch (hash) {
38740 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38741 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38742 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38743 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38744
38745 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38746 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38747 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38748 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38749
38750 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38751 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38752
38753 default: throw new Error('Invald algorithm: ' + algorithm)
38754 }
38755 }
38756 }
38757
38758 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
38759 (function (Buffer){
38760 'use strict'
38761 var Transform = require('stream').Transform
38762 var inherits = require('inherits')
38763
38764 module.exports = function (KeccakState) {
38765 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38766 Transform.call(this, options)
38767
38768 this._rate = rate
38769 this._capacity = capacity
38770 this._delimitedSuffix = delimitedSuffix
38771 this._hashBitLength = hashBitLength
38772 this._options = options
38773
38774 this._state = new KeccakState()
38775 this._state.initialize(rate, capacity)
38776 this._finalized = false
38777 }
38778
38779 inherits(Keccak, Transform)
38780
38781 Keccak.prototype._transform = function (chunk, encoding, callback) {
38782 var error = null
38783 try {
38784 this.update(chunk, encoding)
38785 } catch (err) {
38786 error = err
38787 }
38788
38789 callback(error)
38790 }
38791
38792 Keccak.prototype._flush = function (callback) {
38793 var error = null
38794 try {
38795 this.push(this.digest())
38796 } catch (err) {
38797 error = err
38798 }
38799
38800 callback(error)
38801 }
38802
38803 Keccak.prototype.update = function (data, encoding) {
38804 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38805 if (this._finalized) throw new Error('Digest already called')
38806 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38807
38808 this._state.absorb(data)
38809
38810 return this
38811 }
38812
38813 Keccak.prototype.digest = function (encoding) {
38814 if (this._finalized) throw new Error('Digest already called')
38815 this._finalized = true
38816
38817 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38818 var digest = this._state.squeeze(this._hashBitLength / 8)
38819 if (encoding !== undefined) digest = digest.toString(encoding)
38820
38821 this._resetState()
38822
38823 return digest
38824 }
38825
38826 // remove result from memory
38827 Keccak.prototype._resetState = function () {
38828 this._state.initialize(this._rate, this._capacity)
38829 return this
38830 }
38831
38832 // because sometimes we need hash right now and little later
38833 Keccak.prototype._clone = function () {
38834 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38835 this._state.copy(clone._state)
38836 clone._finalized = this._finalized
38837
38838 return clone
38839 }
38840
38841 return Keccak
38842 }
38843
38844 }).call(this,require("buffer").Buffer)
38845 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38846 (function (Buffer){
38847 'use strict'
38848 var Transform = require('stream').Transform
38849 var inherits = require('inherits')
38850
38851 module.exports = function (KeccakState) {
38852 function Shake (rate, capacity, delimitedSuffix, options) {
38853 Transform.call(this, options)
38854
38855 this._rate = rate
38856 this._capacity = capacity
38857 this._delimitedSuffix = delimitedSuffix
38858 this._options = options
38859
38860 this._state = new KeccakState()
38861 this._state.initialize(rate, capacity)
38862 this._finalized = false
38863 }
38864
38865 inherits(Shake, Transform)
38866
38867 Shake.prototype._transform = function (chunk, encoding, callback) {
38868 var error = null
38869 try {
38870 this.update(chunk, encoding)
38871 } catch (err) {
38872 error = err
38873 }
38874
38875 callback(error)
38876 }
38877
38878 Shake.prototype._flush = function () {}
38879
38880 Shake.prototype._read = function (size) {
38881 this.push(this.squeeze(size))
38882 }
38883
38884 Shake.prototype.update = function (data, encoding) {
38885 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38886 if (this._finalized) throw new Error('Squeeze already called')
38887 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38888
38889 this._state.absorb(data)
38890
38891 return this
38892 }
38893
38894 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38895 if (!this._finalized) {
38896 this._finalized = true
38897 this._state.absorbLastFewBits(this._delimitedSuffix)
38898 }
38899
38900 var data = this._state.squeeze(dataByteLength)
38901 if (encoding !== undefined) data = data.toString(encoding)
38902
38903 return data
38904 }
38905
38906 Shake.prototype._resetState = function () {
38907 this._state.initialize(this._rate, this._capacity)
38908 return this
38909 }
38910
38911 Shake.prototype._clone = function () {
38912 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38913 this._state.copy(clone._state)
38914 clone._finalized = this._finalized
38915
38916 return clone
38917 }
38918
38919 return Shake
38920 }
38921
38922 }).call(this,require("buffer").Buffer)
38923 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38924 'use strict'
38925 var P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]
38926
38927 exports.p1600 = function (s) {
38928 for (var round = 0; round < 24; ++round) {
38929 // theta
38930 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38931 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38932 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38933 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38934 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38935 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38936 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38937 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38938 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38939 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38940
38941 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38942 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38943 var t1slo0 = s[0] ^ lo
38944 var t1shi0 = s[1] ^ hi
38945 var t1slo5 = s[10] ^ lo
38946 var t1shi5 = s[11] ^ hi
38947 var t1slo10 = s[20] ^ lo
38948 var t1shi10 = s[21] ^ hi
38949 var t1slo15 = s[30] ^ lo
38950 var t1shi15 = s[31] ^ hi
38951 var t1slo20 = s[40] ^ lo
38952 var t1shi20 = s[41] ^ hi
38953 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38954 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38955 var t1slo1 = s[2] ^ lo
38956 var t1shi1 = s[3] ^ hi
38957 var t1slo6 = s[12] ^ lo
38958 var t1shi6 = s[13] ^ hi
38959 var t1slo11 = s[22] ^ lo
38960 var t1shi11 = s[23] ^ hi
38961 var t1slo16 = s[32] ^ lo
38962 var t1shi16 = s[33] ^ hi
38963 var t1slo21 = s[42] ^ lo
38964 var t1shi21 = s[43] ^ hi
38965 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38966 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38967 var t1slo2 = s[4] ^ lo
38968 var t1shi2 = s[5] ^ hi
38969 var t1slo7 = s[14] ^ lo
38970 var t1shi7 = s[15] ^ hi
38971 var t1slo12 = s[24] ^ lo
38972 var t1shi12 = s[25] ^ hi
38973 var t1slo17 = s[34] ^ lo
38974 var t1shi17 = s[35] ^ hi
38975 var t1slo22 = s[44] ^ lo
38976 var t1shi22 = s[45] ^ hi
38977 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38978 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38979 var t1slo3 = s[6] ^ lo
38980 var t1shi3 = s[7] ^ hi
38981 var t1slo8 = s[16] ^ lo
38982 var t1shi8 = s[17] ^ hi
38983 var t1slo13 = s[26] ^ lo
38984 var t1shi13 = s[27] ^ hi
38985 var t1slo18 = s[36] ^ lo
38986 var t1shi18 = s[37] ^ hi
38987 var t1slo23 = s[46] ^ lo
38988 var t1shi23 = s[47] ^ hi
38989 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38990 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38991 var t1slo4 = s[8] ^ lo
38992 var t1shi4 = s[9] ^ hi
38993 var t1slo9 = s[18] ^ lo
38994 var t1shi9 = s[19] ^ hi
38995 var t1slo14 = s[28] ^ lo
38996 var t1shi14 = s[29] ^ hi
38997 var t1slo19 = s[38] ^ lo
38998 var t1shi19 = s[39] ^ hi
38999 var t1slo24 = s[48] ^ lo
39000 var t1shi24 = s[49] ^ hi
39001
39002 // rho & pi
39003 var t2slo0 = t1slo0
39004 var t2shi0 = t1shi0
39005 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
39006 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
39007 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
39008 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
39009 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
39010 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
39011 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
39012 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
39013 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
39014 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
39015 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
39016 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
39017 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
39018 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
39019 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
39020 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
39021 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
39022 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
39023 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
39024 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
39025 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
39026 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
39027 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
39028 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
39029 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
39030 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
39031 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
39032 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
39033 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
39034 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
39035 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
39036 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
39037 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
39038 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
39039 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
39040 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
39041 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
39042 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
39043 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
39044 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
39045 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
39046 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
39047 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
39048 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
39049 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
39050 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
39051 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
39052 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
39053
39054 // chi
39055 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
39056 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
39057 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
39058 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
39059 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
39060 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
39061 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
39062 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
39063 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
39064 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
39065 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
39066 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
39067 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
39068 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
39069 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
39070 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
39071 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
39072 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
39073 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
39074 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
39075 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
39076 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
39077 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
39078 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
39079 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
39080 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
39081 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
39082 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
39083 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
39084 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
39085 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
39086 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
39087 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
39088 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
39089 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
39090 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
39091 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
39092 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
39093 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
39094 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
39095 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
39096 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
39097 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
39098 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
39099 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
39100 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
39101 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
39102 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
39103 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
39104 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
39105
39106 // iota
39107 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
39108 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
39109 }
39110 }
39111
39112 },{}],70:[function(require,module,exports){
39113 (function (Buffer){
39114 'use strict'
39115 var keccakState = require('./keccak-state-unroll')
39116
39117 function Keccak () {
39118 // much faster than `new Array(50)`
39119 this.state = [
39120 0, 0, 0, 0, 0,
39121 0, 0, 0, 0, 0,
39122 0, 0, 0, 0, 0,
39123 0, 0, 0, 0, 0,
39124 0, 0, 0, 0, 0
39125 ]
39126
39127 this.blockSize = null
39128 this.count = 0
39129 this.squeezing = false
39130 }
39131
39132 Keccak.prototype.initialize = function (rate, capacity) {
39133 for (var i = 0; i < 50; ++i) this.state[i] = 0
39134 this.blockSize = rate / 8
39135 this.count = 0
39136 this.squeezing = false
39137 }
39138
39139 Keccak.prototype.absorb = function (data) {
39140 for (var i = 0; i < data.length; ++i) {
39141 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39142 this.count += 1
39143 if (this.count === this.blockSize) {
39144 keccakState.p1600(this.state)
39145 this.count = 0
39146 }
39147 }
39148 }
39149
39150 Keccak.prototype.absorbLastFewBits = function (bits) {
39151 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39152 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39153 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39154 keccakState.p1600(this.state)
39155 this.count = 0
39156 this.squeezing = true
39157 }
39158
39159 Keccak.prototype.squeeze = function (length) {
39160 if (!this.squeezing) this.absorbLastFewBits(0x01)
39161
39162 var output = Buffer.allocUnsafe(length)
39163 for (var i = 0; i < length; ++i) {
39164 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39165 this.count += 1
39166 if (this.count === this.blockSize) {
39167 keccakState.p1600(this.state)
39168 this.count = 0
39169 }
39170 }
39171
39172 return output
39173 }
39174
39175 Keccak.prototype.copy = function (dest) {
39176 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39177 dest.blockSize = this.blockSize
39178 dest.count = this.count
39179 dest.squeezing = this.squeezing
39180 }
39181
39182 module.exports = Keccak
39183
39184 }).call(this,require("buffer").Buffer)
39185 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39186 (function (Buffer){
39187 /*
39188 CryptoJS v3.1.2
39189 code.google.com/p/crypto-js
39190 (c) 2009-2013 by Jeff Mott. All rights reserved.
39191 code.google.com/p/crypto-js/wiki/License
39192 */
39193 /** @preserve
39194 (c) 2012 by Cédric Mesnil. All rights reserved.
39195
39196 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39197
39198 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39199 - 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.
39200
39201 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39202 */
39203
39204 // constants table
39205 var zl = [
39206 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39207 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39208 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39209 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39210 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39211 ]
39212
39213 var zr = [
39214 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39215 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39216 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39217 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39218 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39219 ]
39220
39221 var sl = [
39222 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39223 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39224 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39225 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39226 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39227 ]
39228
39229 var sr = [
39230 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39231 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39232 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39233 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39234 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39235 ]
39236
39237 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39238 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39239
39240 function bytesToWords (bytes) {
39241 var words = []
39242 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39243 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39244 }
39245 return words
39246 }
39247
39248 function wordsToBytes (words) {
39249 var bytes = []
39250 for (var b = 0; b < words.length * 32; b += 8) {
39251 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39252 }
39253 return bytes
39254 }
39255
39256 function processBlock (H, M, offset) {
39257 // swap endian
39258 for (var i = 0; i < 16; i++) {
39259 var offset_i = offset + i
39260 var M_offset_i = M[offset_i]
39261
39262 // Swap
39263 M[offset_i] = (
39264 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39265 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39266 )
39267 }
39268
39269 // Working variables
39270 var al, bl, cl, dl, el
39271 var ar, br, cr, dr, er
39272
39273 ar = al = H[0]
39274 br = bl = H[1]
39275 cr = cl = H[2]
39276 dr = dl = H[3]
39277 er = el = H[4]
39278
39279 // computation
39280 var t
39281 for (i = 0; i < 80; i += 1) {
39282 t = (al + M[offset + zl[i]]) | 0
39283 if (i < 16) {
39284 t += f1(bl, cl, dl) + hl[0]
39285 } else if (i < 32) {
39286 t += f2(bl, cl, dl) + hl[1]
39287 } else if (i < 48) {
39288 t += f3(bl, cl, dl) + hl[2]
39289 } else if (i < 64) {
39290 t += f4(bl, cl, dl) + hl[3]
39291 } else {// if (i<80) {
39292 t += f5(bl, cl, dl) + hl[4]
39293 }
39294 t = t | 0
39295 t = rotl(t, sl[i])
39296 t = (t + el) | 0
39297 al = el
39298 el = dl
39299 dl = rotl(cl, 10)
39300 cl = bl
39301 bl = t
39302
39303 t = (ar + M[offset + zr[i]]) | 0
39304 if (i < 16) {
39305 t += f5(br, cr, dr) + hr[0]
39306 } else if (i < 32) {
39307 t += f4(br, cr, dr) + hr[1]
39308 } else if (i < 48) {
39309 t += f3(br, cr, dr) + hr[2]
39310 } else if (i < 64) {
39311 t += f2(br, cr, dr) + hr[3]
39312 } else {// if (i<80) {
39313 t += f1(br, cr, dr) + hr[4]
39314 }
39315
39316 t = t | 0
39317 t = rotl(t, sr[i])
39318 t = (t + er) | 0
39319 ar = er
39320 er = dr
39321 dr = rotl(cr, 10)
39322 cr = br
39323 br = t
39324 }
39325
39326 // intermediate hash value
39327 t = (H[1] + cl + dr) | 0
39328 H[1] = (H[2] + dl + er) | 0
39329 H[2] = (H[3] + el + ar) | 0
39330 H[3] = (H[4] + al + br) | 0
39331 H[4] = (H[0] + bl + cr) | 0
39332 H[0] = t
39333 }
39334
39335 function f1 (x, y, z) {
39336 return ((x) ^ (y) ^ (z))
39337 }
39338
39339 function f2 (x, y, z) {
39340 return (((x) & (y)) | ((~x) & (z)))
39341 }
39342
39343 function f3 (x, y, z) {
39344 return (((x) | (~(y))) ^ (z))
39345 }
39346
39347 function f4 (x, y, z) {
39348 return (((x) & (z)) | ((y) & (~(z))))
39349 }
39350
39351 function f5 (x, y, z) {
39352 return ((x) ^ ((y) | (~(z))))
39353 }
39354
39355 function rotl (x, n) {
39356 return (x << n) | (x >>> (32 - n))
39357 }
39358
39359 function ripemd160 (message) {
39360 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
39361
39362 if (typeof message === 'string') {
39363 message = new Buffer(message, 'utf8')
39364 }
39365
39366 var m = bytesToWords(message)
39367
39368 var nBitsLeft = message.length * 8
39369 var nBitsTotal = message.length * 8
39370
39371 // Add padding
39372 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39373 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39374 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39375 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39376 )
39377
39378 for (var i = 0; i < m.length; i += 16) {
39379 processBlock(H, m, i)
39380 }
39381
39382 // swap endian
39383 for (i = 0; i < 5; i++) {
39384 // shortcut
39385 var H_i = H[i]
39386
39387 // Swap
39388 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39389 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
39390 }
39391
39392 var digestbytes = wordsToBytes(H)
39393 return new Buffer(digestbytes)
39394 }
39395
39396 module.exports = ripemd160
39397
39398 }).call(this,require("buffer").Buffer)
39399 },{"buffer":5}],72:[function(require,module,exports){
39400 (function (Buffer){
39401 const assert = require('assert')
39402 /**
39403 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39404 * This function takes in a data, convert it to buffer if not, and a length for recursion
39405 *
39406 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39407 * @returns {Buffer} - returns buffer of encoded data
39408 **/
39409 exports.encode = function (input) {
39410 if (input instanceof Array) {
39411 var output = []
39412 for (var i = 0; i < input.length; i++) {
39413 output.push(exports.encode(input[i]))
39414 }
39415 var buf = Buffer.concat(output)
39416 return Buffer.concat([encodeLength(buf.length, 192), buf])
39417 } else {
39418 input = toBuffer(input)
39419 if (input.length === 1 && input[0] < 128) {
39420 return input
39421 } else {
39422 return Buffer.concat([encodeLength(input.length, 128), input])
39423 }
39424 }
39425 }
39426
39427 function safeParseInt (v, base) {
39428 if (v.slice(0, 2) === '00') {
39429 throw (new Error('invalid RLP: extra zeros'))
39430 }
39431
39432 return parseInt(v, base)
39433 }
39434
39435 function encodeLength (len, offset) {
39436 if (len < 56) {
39437 return new Buffer([len + offset])
39438 } else {
39439 var hexLength = intToHex(len)
39440 var lLength = hexLength.length / 2
39441 var firstByte = intToHex(offset + 55 + lLength)
39442 return new Buffer(firstByte + hexLength, 'hex')
39443 }
39444 }
39445
39446 /**
39447 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39448 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39449 * @returns {Array} - returns decode Array of Buffers containg the original message
39450 **/
39451 exports.decode = function (input, stream) {
39452 if (!input || input.length === 0) {
39453 return new Buffer([])
39454 }
39455
39456 input = toBuffer(input)
39457 var decoded = _decode(input)
39458
39459 if (stream) {
39460 return decoded
39461 }
39462
39463 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39464 return decoded.data
39465 }
39466
39467 exports.getLength = function (input) {
39468 if (!input || input.length === 0) {
39469 return new Buffer([])
39470 }
39471
39472 input = toBuffer(input)
39473 var firstByte = input[0]
39474 if (firstByte <= 0x7f) {
39475 return input.length
39476 } else if (firstByte <= 0xb7) {
39477 return firstByte - 0x7f
39478 } else if (firstByte <= 0xbf) {
39479 return firstByte - 0xb6
39480 } else if (firstByte <= 0xf7) {
39481 // a list between 0-55 bytes long
39482 return firstByte - 0xbf
39483 } else {
39484 // a list over 55 bytes long
39485 var llength = firstByte - 0xf6
39486 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39487 return llength + length
39488 }
39489 }
39490
39491 function _decode (input) {
39492 var length, llength, data, innerRemainder, d
39493 var decoded = []
39494 var firstByte = input[0]
39495
39496 if (firstByte <= 0x7f) {
39497 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39498 return {
39499 data: input.slice(0, 1),
39500 remainder: input.slice(1)
39501 }
39502 } else if (firstByte <= 0xb7) {
39503 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39504 // The range of the first byte is [0x80, 0xb7]
39505 length = firstByte - 0x7f
39506
39507 // set 0x80 null to 0
39508 if (firstByte === 0x80) {
39509 data = new Buffer([])
39510 } else {
39511 data = input.slice(1, length)
39512 }
39513
39514 if (length === 2 && data[0] < 0x80) {
39515 throw new Error('invalid rlp encoding: byte must be less 0x80')
39516 }
39517
39518 return {
39519 data: data,
39520 remainder: input.slice(length)
39521 }
39522 } else if (firstByte <= 0xbf) {
39523 llength = firstByte - 0xb6
39524 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39525 data = input.slice(llength, length + llength)
39526 if (data.length < length) {
39527 throw (new Error('invalid RLP'))
39528 }
39529
39530 return {
39531 data: data,
39532 remainder: input.slice(length + llength)
39533 }
39534 } else if (firstByte <= 0xf7) {
39535 // a list between 0-55 bytes long
39536 length = firstByte - 0xbf
39537 innerRemainder = input.slice(1, length)
39538 while (innerRemainder.length) {
39539 d = _decode(innerRemainder)
39540 decoded.push(d.data)
39541 innerRemainder = d.remainder
39542 }
39543
39544 return {
39545 data: decoded,
39546 remainder: input.slice(length)
39547 }
39548 } else {
39549 // a list over 55 bytes long
39550 llength = firstByte - 0xf6
39551 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39552 var totalLength = llength + length
39553 if (totalLength > input.length) {
39554 throw new Error('invalid rlp: total length is larger than the data')
39555 }
39556
39557 innerRemainder = input.slice(llength, totalLength)
39558 if (innerRemainder.length === 0) {
39559 throw new Error('invalid rlp, List has a invalid length')
39560 }
39561
39562 while (innerRemainder.length) {
39563 d = _decode(innerRemainder)
39564 decoded.push(d.data)
39565 innerRemainder = d.remainder
39566 }
39567 return {
39568 data: decoded,
39569 remainder: input.slice(totalLength)
39570 }
39571 }
39572 }
39573
39574 function isHexPrefixed (str) {
39575 return str.slice(0, 2) === '0x'
39576 }
39577
39578 // Removes 0x from a given String
39579 function stripHexPrefix (str) {
39580 if (typeof str !== 'string') {
39581 return str
39582 }
39583 return isHexPrefixed(str) ? str.slice(2) : str
39584 }
39585
39586 function intToHex (i) {
39587 var hex = i.toString(16)
39588 if (hex.length % 2) {
39589 hex = '0' + hex
39590 }
39591
39592 return hex
39593 }
39594
39595 function padToEven (a) {
39596 if (a.length % 2) a = '0' + a
39597 return a
39598 }
39599
39600 function intToBuffer (i) {
39601 var hex = intToHex(i)
39602 return new Buffer(hex, 'hex')
39603 }
39604
39605 function toBuffer (v) {
39606 if (!Buffer.isBuffer(v)) {
39607 if (typeof v === 'string') {
39608 if (isHexPrefixed(v)) {
39609 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39610 } else {
39611 v = new Buffer(v)
39612 }
39613 } else if (typeof v === 'number') {
39614 if (!v) {
39615 v = new Buffer([])
39616 } else {
39617 v = intToBuffer(v)
39618 }
39619 } else if (v === null || v === undefined) {
39620 v = new Buffer([])
39621 } else if (v.toArray) {
39622 // converts a BN to a Buffer
39623 v = new Buffer(v.toArray())
39624 } else {
39625 throw new Error('invalid type')
39626 }
39627 }
39628 return v
39629 }
39630
39631 }).call(this,require("buffer").Buffer)
39632 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
39633 'use strict'
39634 module.exports = require('./lib')(require('./lib/elliptic'))
39635
39636 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39637 (function (Buffer){
39638 'use strict'
39639 var toString = Object.prototype.toString
39640
39641 // TypeError
39642 exports.isArray = function (value, message) {
39643 if (!Array.isArray(value)) throw TypeError(message)
39644 }
39645
39646 exports.isBoolean = function (value, message) {
39647 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39648 }
39649
39650 exports.isBuffer = function (value, message) {
39651 if (!Buffer.isBuffer(value)) throw TypeError(message)
39652 }
39653
39654 exports.isFunction = function (value, message) {
39655 if (toString.call(value) !== '[object Function]') throw TypeError(message)
39656 }
39657
39658 exports.isNumber = function (value, message) {
39659 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39660 }
39661
39662 exports.isObject = function (value, message) {
39663 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39664 }
39665
39666 // RangeError
39667 exports.isBufferLength = function (buffer, length, message) {
39668 if (buffer.length !== length) throw RangeError(message)
39669 }
39670
39671 exports.isBufferLength2 = function (buffer, length1, length2, message) {
39672 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
39673 }
39674
39675 exports.isLengthGTZero = function (value, message) {
39676 if (value.length === 0) throw RangeError(message)
39677 }
39678
39679 exports.isNumberInInterval = function (number, x, y, message) {
39680 if (number <= x || number >= y) throw RangeError(message)
39681 }
39682
39683 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39684 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
39685 (function (Buffer){
39686 'use strict'
39687 var bip66 = require('bip66')
39688
39689 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39690 // begin
39691 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39692 // private key
39693 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39694 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39695 // middle
39696 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39697 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39698 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39699 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39700 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39701 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39702 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39703 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39704 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39705 // public key
39706 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39707 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39708 0x00
39709 ])
39710
39711 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39712 // begin
39713 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39714 // private key
39715 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39716 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39717 // middle
39718 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39719 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39720 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39721 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39722 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39723 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39724 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39725 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39726 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39727 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39728 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39729 // public key
39730 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39731 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39732 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39733 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39734 0x00
39735 ])
39736
39737 var ZERO_BUFFER_32 = new Buffer([
39738 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39739 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39740 ])
39741
39742 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39743 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39744 privateKey.copy(result, compressed ? 8 : 9)
39745 publicKey.copy(result, compressed ? 181 : 214)
39746 return result
39747 }
39748
39749 exports.privateKeyImport = function (privateKey) {
39750 var length = privateKey.length
39751
39752 // sequence header
39753 var index = 0
39754 if (length < index + 1 || privateKey[index] !== 0x30) return
39755 index += 1
39756
39757 // sequence length constructor
39758 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39759
39760 var lenb = privateKey[index] & 0x7f
39761 index += 1
39762 if (lenb < 1 || lenb > 2) return
39763 if (length < index + lenb) return
39764
39765 // sequence length
39766 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39767 index += lenb
39768 if (length < index + len) return
39769
39770 // sequence element 0: version number (=1)
39771 if (length < index + 3 ||
39772 privateKey[index] !== 0x02 ||
39773 privateKey[index + 1] !== 0x01 ||
39774 privateKey[index + 2] !== 0x01) {
39775 return
39776 }
39777 index += 3
39778
39779 // sequence element 1: octet string, up to 32 bytes
39780 if (length < index + 2 ||
39781 privateKey[index] !== 0x04 ||
39782 privateKey[index + 1] > 0x20 ||
39783 length < index + 2 + privateKey[index + 1]) {
39784 return
39785 }
39786
39787 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
39788 }
39789
39790 exports.signatureExport = function (sigObj) {
39791 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39792 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
39793
39794 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39795 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
39796
39797 return bip66.encode(r.slice(posR), s.slice(posS))
39798 }
39799
39800 exports.signatureImport = function (sig) {
39801 var r = new Buffer(ZERO_BUFFER_32)
39802 var s = new Buffer(ZERO_BUFFER_32)
39803
39804 try {
39805 var sigObj = bip66.decode(sig)
39806 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39807 if (sigObj.r.length > 32) throw new Error('R length is too long')
39808 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39809 if (sigObj.s.length > 32) throw new Error('S length is too long')
39810 } catch (err) {
39811 return
39812 }
39813
39814 sigObj.r.copy(r, 32 - sigObj.r.length)
39815 sigObj.s.copy(s, 32 - sigObj.s.length)
39816
39817 return { r: r, s: s }
39818 }
39819
39820 exports.signatureImportLax = function (sig) {
39821 var r = new Buffer(ZERO_BUFFER_32)
39822 var s = new Buffer(ZERO_BUFFER_32)
39823
39824 var length = sig.length
39825 var index = 0
39826
39827 // sequence tag byte
39828 if (sig[index++] !== 0x30) return
39829
39830 // sequence length byte
39831 var lenbyte = sig[index++]
39832 if (lenbyte & 0x80) {
39833 index += lenbyte - 0x80
39834 if (index > length) return
39835 }
39836
39837 // sequence tag byte for r
39838 if (sig[index++] !== 0x02) return
39839
39840 // length for r
39841 var rlen = sig[index++]
39842 if (rlen & 0x80) {
39843 lenbyte = rlen - 0x80
39844 if (index + lenbyte > length) return
39845 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39846 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
39847 }
39848 if (rlen > length - index) return
39849 var rindex = index
39850 index += rlen
39851
39852 // sequence tag byte for s
39853 if (sig[index++] !== 0x02) return
39854
39855 // length for s
39856 var slen = sig[index++]
39857 if (slen & 0x80) {
39858 lenbyte = slen - 0x80
39859 if (index + lenbyte > length) return
39860 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39861 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
39862 }
39863 if (slen > length - index) return
39864 var sindex = index
39865 index += slen
39866
39867 // ignore leading zeros in r
39868 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39869 // copy r value
39870 if (rlen > 32) return
39871 var rvalue = sig.slice(rindex, rindex + rlen)
39872 rvalue.copy(r, 32 - rvalue.length)
39873
39874 // ignore leading zeros in s
39875 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39876 // copy s value
39877 if (slen > 32) return
39878 var svalue = sig.slice(sindex, sindex + slen)
39879 svalue.copy(s, 32 - svalue.length)
39880
39881 return { r: r, s: s }
39882 }
39883
39884 }).call(this,require("buffer").Buffer)
39885 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39886 (function (Buffer){
39887 'use strict'
39888 var createHash = require('create-hash')
39889 var BN = require('bn.js')
39890 var EC = require('elliptic').ec
39891
39892 var messages = require('../messages.json')
39893
39894 var ec = new EC('secp256k1')
39895 var ecparams = ec.curve
39896
39897 function loadCompressedPublicKey (first, xBuffer) {
39898 var x = new BN(xBuffer)
39899
39900 // overflow
39901 if (x.cmp(ecparams.p) >= 0) return null
39902 x = x.toRed(ecparams.red)
39903
39904 // compute corresponding Y
39905 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39906 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39907
39908 return ec.keyPair({ pub: { x: x, y: y } })
39909 }
39910
39911 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39912 var x = new BN(xBuffer)
39913 var y = new BN(yBuffer)
39914
39915 // overflow
39916 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
39917
39918 x = x.toRed(ecparams.red)
39919 y = y.toRed(ecparams.red)
39920
39921 // is odd flag
39922 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
39923
39924 // x*x*x + b = y*y
39925 var x3 = x.redSqr().redIMul(x)
39926 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
39927
39928 return ec.keyPair({ pub: { x: x, y: y } })
39929 }
39930
39931 function loadPublicKey (publicKey) {
39932 var first = publicKey[0]
39933 switch (first) {
39934 case 0x02:
39935 case 0x03:
39936 if (publicKey.length !== 33) return null
39937 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39938 case 0x04:
39939 case 0x06:
39940 case 0x07:
39941 if (publicKey.length !== 65) return null
39942 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39943 default:
39944 return null
39945 }
39946 }
39947
39948 exports.privateKeyVerify = function (privateKey) {
39949 var bn = new BN(privateKey)
39950 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39951 }
39952
39953 exports.privateKeyExport = function (privateKey, compressed) {
39954 var d = new BN(privateKey)
39955 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
39956
39957 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39958 }
39959
39960 exports.privateKeyTweakAdd = function (privateKey, tweak) {
39961 var bn = new BN(tweak)
39962 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39963
39964 bn.iadd(new BN(privateKey))
39965 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39966 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39967
39968 return bn.toArrayLike(Buffer, 'be', 32)
39969 }
39970
39971 exports.privateKeyTweakMul = function (privateKey, tweak) {
39972 var bn = new BN(tweak)
39973 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39974
39975 bn.imul(new BN(privateKey))
39976 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39977
39978 return bn.toArrayLike(Buffer, 'be', 32)
39979 }
39980
39981 exports.publicKeyCreate = function (privateKey, compressed) {
39982 var d = new BN(privateKey)
39983 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39984
39985 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39986 }
39987
39988 exports.publicKeyConvert = function (publicKey, compressed) {
39989 var pair = loadPublicKey(publicKey)
39990 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39991
39992 return new Buffer(pair.getPublic(compressed, true))
39993 }
39994
39995 exports.publicKeyVerify = function (publicKey) {
39996 return loadPublicKey(publicKey) !== null
39997 }
39998
39999 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
40000 var pair = loadPublicKey(publicKey)
40001 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40002
40003 tweak = new BN(tweak)
40004 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
40005
40006 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
40007 }
40008
40009 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
40010 var pair = loadPublicKey(publicKey)
40011 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40012
40013 tweak = new BN(tweak)
40014 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
40015
40016 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
40017 }
40018
40019 exports.publicKeyCombine = function (publicKeys, compressed) {
40020 var pairs = new Array(publicKeys.length)
40021 for (var i = 0; i < publicKeys.length; ++i) {
40022 pairs[i] = loadPublicKey(publicKeys[i])
40023 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40024 }
40025
40026 var point = pairs[0].pub
40027 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
40028 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
40029
40030 return new Buffer(point.encode(true, compressed))
40031 }
40032
40033 exports.signatureNormalize = function (signature) {
40034 var r = new BN(signature.slice(0, 32))
40035 var s = new BN(signature.slice(32, 64))
40036 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40037
40038 var result = new Buffer(signature)
40039 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
40040
40041 return result
40042 }
40043
40044 exports.signatureExport = function (signature) {
40045 var r = signature.slice(0, 32)
40046 var s = signature.slice(32, 64)
40047 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40048
40049 return { r: r, s: s }
40050 }
40051
40052 exports.signatureImport = function (sigObj) {
40053 var r = new BN(sigObj.r)
40054 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
40055
40056 var s = new BN(sigObj.s)
40057 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
40058
40059 return Buffer.concat([
40060 r.toArrayLike(Buffer, 'be', 32),
40061 s.toArrayLike(Buffer, 'be', 32)
40062 ])
40063 }
40064
40065 exports.sign = function (message, privateKey, noncefn, data) {
40066 if (typeof noncefn === 'function') {
40067 var getNonce = noncefn
40068 noncefn = function (counter) {
40069 var nonce = getNonce(message, privateKey, null, data, counter)
40070 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
40071
40072 return new BN(nonce)
40073 }
40074 }
40075
40076 var d = new BN(privateKey)
40077 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
40078
40079 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
40080 return {
40081 signature: Buffer.concat([
40082 result.r.toArrayLike(Buffer, 'be', 32),
40083 result.s.toArrayLike(Buffer, 'be', 32)
40084 ]),
40085 recovery: result.recoveryParam
40086 }
40087 }
40088
40089 exports.verify = function (message, signature, publicKey) {
40090 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40091
40092 var sigr = new BN(sigObj.r)
40093 var sigs = new BN(sigObj.s)
40094 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40095 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
40096
40097 var pair = loadPublicKey(publicKey)
40098 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40099
40100 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
40101 }
40102
40103 exports.recover = function (message, signature, recovery, compressed) {
40104 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40105
40106 var sigr = new BN(sigObj.r)
40107 var sigs = new BN(sigObj.s)
40108 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40109
40110 try {
40111 if (sigr.isZero() || sigs.isZero()) throw new Error()
40112
40113 var point = ec.recoverPubKey(message, sigObj, recovery)
40114 return new Buffer(point.encode(true, compressed))
40115 } catch (err) {
40116 throw new Error(messages.ECDSA_RECOVER_FAIL)
40117 }
40118 }
40119
40120 exports.ecdh = function (publicKey, privateKey) {
40121 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
40122 return createHash('sha256').update(shared).digest()
40123 }
40124
40125 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
40126 var pair = loadPublicKey(publicKey)
40127 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40128
40129 var scalar = new BN(privateKey)
40130 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
40131
40132 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
40133 }
40134
40135 }).call(this,require("buffer").Buffer)
40136 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
40137 'use strict'
40138 var assert = require('./assert')
40139 var der = require('./der')
40140 var messages = require('./messages.json')
40141
40142 function initCompressedValue (value, defaultValue) {
40143 if (value === undefined) return defaultValue
40144
40145 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40146 return value
40147 }
40148
40149 module.exports = function (secp256k1) {
40150 return {
40151 privateKeyVerify: function (privateKey) {
40152 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40153 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40154 },
40155
40156 privateKeyExport: function (privateKey, compressed) {
40157 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40158 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40159
40160 compressed = initCompressedValue(compressed, true)
40161 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
40162
40163 return der.privateKeyExport(privateKey, publicKey, compressed)
40164 },
40165
40166 privateKeyImport: function (privateKey) {
40167 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40168
40169 privateKey = der.privateKeyImport(privateKey)
40170 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
40171
40172 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40173 },
40174
40175 privateKeyTweakAdd: function (privateKey, tweak) {
40176 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40177 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40178
40179 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40180 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40181
40182 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40183 },
40184
40185 privateKeyTweakMul: function (privateKey, tweak) {
40186 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40187 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40188
40189 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40190 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40191
40192 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40193 },
40194
40195 publicKeyCreate: function (privateKey, compressed) {
40196 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40197 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40198
40199 compressed = initCompressedValue(compressed, true)
40200
40201 return secp256k1.publicKeyCreate(privateKey, compressed)
40202 },
40203
40204 publicKeyConvert: function (publicKey, compressed) {
40205 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40206 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40207
40208 compressed = initCompressedValue(compressed, true)
40209
40210 return secp256k1.publicKeyConvert(publicKey, compressed)
40211 },
40212
40213 publicKeyVerify: function (publicKey) {
40214 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40215 return secp256k1.publicKeyVerify(publicKey)
40216 },
40217
40218 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40219 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40220 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40221
40222 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40223 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40224
40225 compressed = initCompressedValue(compressed, true)
40226
40227 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40228 },
40229
40230 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40231 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40232 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40233
40234 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40235 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40236
40237 compressed = initCompressedValue(compressed, true)
40238
40239 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40240 },
40241
40242 publicKeyCombine: function (publicKeys, compressed) {
40243 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40244 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40245 for (var i = 0; i < publicKeys.length; ++i) {
40246 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40247 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40248 }
40249
40250 compressed = initCompressedValue(compressed, true)
40251
40252 return secp256k1.publicKeyCombine(publicKeys, compressed)
40253 },
40254
40255 signatureNormalize: function (signature) {
40256 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40257 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40258
40259 return secp256k1.signatureNormalize(signature)
40260 },
40261
40262 signatureExport: function (signature) {
40263 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40264 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40265
40266 var sigObj = secp256k1.signatureExport(signature)
40267 return der.signatureExport(sigObj)
40268 },
40269
40270 signatureImport: function (sig) {
40271 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40272 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40273
40274 var sigObj = der.signatureImport(sig)
40275 if (sigObj) return secp256k1.signatureImport(sigObj)
40276
40277 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40278 },
40279
40280 signatureImportLax: function (sig) {
40281 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40282 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40283
40284 var sigObj = der.signatureImportLax(sig)
40285 if (sigObj) return secp256k1.signatureImport(sigObj)
40286
40287 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40288 },
40289
40290 sign: function (message, privateKey, options) {
40291 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40292 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40293
40294 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40295 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40296
40297 var data = null
40298 var noncefn = null
40299 if (options !== undefined) {
40300 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40301
40302 if (options.data !== undefined) {
40303 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40304 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40305 data = options.data
40306 }
40307
40308 if (options.noncefn !== undefined) {
40309 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40310 noncefn = options.noncefn
40311 }
40312 }
40313
40314 return secp256k1.sign(message, privateKey, noncefn, data)
40315 },
40316
40317 verify: function (message, signature, publicKey) {
40318 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40319 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40320
40321 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40322 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40323
40324 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40325 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40326
40327 return secp256k1.verify(message, signature, publicKey)
40328 },
40329
40330 recover: function (message, signature, recovery, compressed) {
40331 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40332 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40333
40334 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40335 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40336
40337 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40338 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
40339
40340 compressed = initCompressedValue(compressed, true)
40341
40342 return secp256k1.recover(message, signature, recovery, compressed)
40343 },
40344
40345 ecdh: function (publicKey, privateKey) {
40346 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40347 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40348
40349 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40350 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40351
40352 return secp256k1.ecdh(publicKey, privateKey)
40353 },
40354
40355 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40356 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40357 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40358
40359 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40360 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40361
40362 compressed = initCompressedValue(compressed, true)
40363
40364 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40365 }
40366 }
40367 }
40368
40369 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40370 module.exports={
40371 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40372 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40373 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40374 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40375 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40376 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40377 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40378 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40379 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40380 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40381 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40382 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40383 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40384 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40385 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40386 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40387 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40388 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40389 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40390 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40391 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40392 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40393 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40394 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40395 "MSG32_TYPE_INVALID": "message should be a Buffer",
40396 "MSG32_LENGTH_INVALID": "message length is invalid",
40397 "OPTIONS_TYPE_INVALID": "options should be an Object",
40398 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40399 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40400 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40401 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40402 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40403 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40404 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40405 }
40406
40407 },{}],79:[function(require,module,exports){
40408 (function (Buffer){
40409 // prototype class for hash functions
40410 function Hash (blockSize, finalSize) {
40411 this._block = new Buffer(blockSize)
40412 this._finalSize = finalSize
40413 this._blockSize = blockSize
40414 this._len = 0
40415 this._s = 0
40416 }
40417
40418 Hash.prototype.update = function (data, enc) {
40419 if (typeof data === 'string') {
40420 enc = enc || 'utf8'
40421 data = new Buffer(data, enc)
40422 }
40423
40424 var l = this._len += data.length
40425 var s = this._s || 0
40426 var f = 0
40427 var buffer = this._block
40428
40429 while (s < l) {
40430 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40431 var ch = (t - f)
40432
40433 for (var i = 0; i < ch; i++) {
40434 buffer[(s % this._blockSize) + i] = data[i + f]
40435 }
40436
40437 s += ch
40438 f += ch
40439
40440 if ((s % this._blockSize) === 0) {
40441 this._update(buffer)
40442 }
40443 }
40444 this._s = s
40445
40446 return this
40447 }
40448
40449 Hash.prototype.digest = function (enc) {
40450 // Suppose the length of the message M, in bits, is l
40451 var l = this._len * 8
40452
40453 // Append the bit 1 to the end of the message
40454 this._block[this._len % this._blockSize] = 0x80
40455
40456 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40457 this._block.fill(0, this._len % this._blockSize + 1)
40458
40459 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40460 this._update(this._block)
40461 this._block.fill(0)
40462 }
40463
40464 // to this append the block which is equal to the number l written in binary
40465 // TODO: handle case where l is > Math.pow(2, 29)
40466 this._block.writeInt32BE(l, this._blockSize - 4)
40467
40468 var hash = this._update(this._block) || this._hash()
40469
40470 return enc ? hash.toString(enc) : hash
40471 }
40472
40473 Hash.prototype._update = function () {
40474 throw new Error('_update must be implemented by subclass')
40475 }
40476
40477 module.exports = Hash
40478
40479 }).call(this,require("buffer").Buffer)
40480 },{"buffer":5}],80:[function(require,module,exports){
40481 var exports = module.exports = function SHA (algorithm) {
40482 algorithm = algorithm.toLowerCase()
40483
40484 var Algorithm = exports[algorithm]
40485 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40486
40487 return new Algorithm()
40488 }
40489
40490 exports.sha = require('./sha')
40491 exports.sha1 = require('./sha1')
40492 exports.sha224 = require('./sha224')
40493 exports.sha256 = require('./sha256')
40494 exports.sha384 = require('./sha384')
40495 exports.sha512 = require('./sha512')
40496
40497 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40498 (function (Buffer){
40499 /*
40500 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40501 * in FIPS PUB 180-1
40502 * This source code is derived from sha1.js of the same repository.
40503 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40504 * operation was added.
40505 */
40506
40507 var inherits = require('inherits')
40508 var Hash = require('./hash')
40509
40510 var K = [
40511 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40512 ]
40513
40514 var W = new Array(80)
40515
40516 function Sha () {
40517 this.init()
40518 this._w = W
40519
40520 Hash.call(this, 64, 56)
40521 }
40522
40523 inherits(Sha, Hash)
40524
40525 Sha.prototype.init = function () {
40526 this._a = 0x67452301
40527 this._b = 0xefcdab89
40528 this._c = 0x98badcfe
40529 this._d = 0x10325476
40530 this._e = 0xc3d2e1f0
40531
40532 return this
40533 }
40534
40535 function rotl5 (num) {
40536 return (num << 5) | (num >>> 27)
40537 }
40538
40539 function rotl30 (num) {
40540 return (num << 30) | (num >>> 2)
40541 }
40542
40543 function ft (s, b, c, d) {
40544 if (s === 0) return (b & c) | ((~b) & d)
40545 if (s === 2) return (b & c) | (b & d) | (c & d)
40546 return b ^ c ^ d
40547 }
40548
40549 Sha.prototype._update = function (M) {
40550 var W = this._w
40551
40552 var a = this._a | 0
40553 var b = this._b | 0
40554 var c = this._c | 0
40555 var d = this._d | 0
40556 var e = this._e | 0
40557
40558 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40559 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
40560
40561 for (var j = 0; j < 80; ++j) {
40562 var s = ~~(j / 20)
40563 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40564
40565 e = d
40566 d = c
40567 c = rotl30(b)
40568 b = a
40569 a = t
40570 }
40571
40572 this._a = (a + this._a) | 0
40573 this._b = (b + this._b) | 0
40574 this._c = (c + this._c) | 0
40575 this._d = (d + this._d) | 0
40576 this._e = (e + this._e) | 0
40577 }
40578
40579 Sha.prototype._hash = function () {
40580 var H = new Buffer(20)
40581
40582 H.writeInt32BE(this._a | 0, 0)
40583 H.writeInt32BE(this._b | 0, 4)
40584 H.writeInt32BE(this._c | 0, 8)
40585 H.writeInt32BE(this._d | 0, 12)
40586 H.writeInt32BE(this._e | 0, 16)
40587
40588 return H
40589 }
40590
40591 module.exports = Sha
40592
40593 }).call(this,require("buffer").Buffer)
40594 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40595 (function (Buffer){
40596 /*
40597 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40598 * in FIPS PUB 180-1
40599 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40600 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40601 * Distributed under the BSD License
40602 * See http://pajhome.org.uk/crypt/md5 for details.
40603 */
40604
40605 var inherits = require('inherits')
40606 var Hash = require('./hash')
40607
40608 var K = [
40609 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40610 ]
40611
40612 var W = new Array(80)
40613
40614 function Sha1 () {
40615 this.init()
40616 this._w = W
40617
40618 Hash.call(this, 64, 56)
40619 }
40620
40621 inherits(Sha1, Hash)
40622
40623 Sha1.prototype.init = function () {
40624 this._a = 0x67452301
40625 this._b = 0xefcdab89
40626 this._c = 0x98badcfe
40627 this._d = 0x10325476
40628 this._e = 0xc3d2e1f0
40629
40630 return this
40631 }
40632
40633 function rotl1 (num) {
40634 return (num << 1) | (num >>> 31)
40635 }
40636
40637 function rotl5 (num) {
40638 return (num << 5) | (num >>> 27)
40639 }
40640
40641 function rotl30 (num) {
40642 return (num << 30) | (num >>> 2)
40643 }
40644
40645 function ft (s, b, c, d) {
40646 if (s === 0) return (b & c) | ((~b) & d)
40647 if (s === 2) return (b & c) | (b & d) | (c & d)
40648 return b ^ c ^ d
40649 }
40650
40651 Sha1.prototype._update = function (M) {
40652 var W = this._w
40653
40654 var a = this._a | 0
40655 var b = this._b | 0
40656 var c = this._c | 0
40657 var d = this._d | 0
40658 var e = this._e | 0
40659
40660 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40661 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40662
40663 for (var j = 0; j < 80; ++j) {
40664 var s = ~~(j / 20)
40665 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40666
40667 e = d
40668 d = c
40669 c = rotl30(b)
40670 b = a
40671 a = t
40672 }
40673
40674 this._a = (a + this._a) | 0
40675 this._b = (b + this._b) | 0
40676 this._c = (c + this._c) | 0
40677 this._d = (d + this._d) | 0
40678 this._e = (e + this._e) | 0
40679 }
40680
40681 Sha1.prototype._hash = function () {
40682 var H = new Buffer(20)
40683
40684 H.writeInt32BE(this._a | 0, 0)
40685 H.writeInt32BE(this._b | 0, 4)
40686 H.writeInt32BE(this._c | 0, 8)
40687 H.writeInt32BE(this._d | 0, 12)
40688 H.writeInt32BE(this._e | 0, 16)
40689
40690 return H
40691 }
40692
40693 module.exports = Sha1
40694
40695 }).call(this,require("buffer").Buffer)
40696 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40697 (function (Buffer){
40698 /**
40699 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40700 * in FIPS 180-2
40701 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40702 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40703 *
40704 */
40705
40706 var inherits = require('inherits')
40707 var Sha256 = require('./sha256')
40708 var Hash = require('./hash')
40709
40710 var W = new Array(64)
40711
40712 function Sha224 () {
40713 this.init()
40714
40715 this._w = W // new Array(64)
40716
40717 Hash.call(this, 64, 56)
40718 }
40719
40720 inherits(Sha224, Sha256)
40721
40722 Sha224.prototype.init = function () {
40723 this._a = 0xc1059ed8
40724 this._b = 0x367cd507
40725 this._c = 0x3070dd17
40726 this._d = 0xf70e5939
40727 this._e = 0xffc00b31
40728 this._f = 0x68581511
40729 this._g = 0x64f98fa7
40730 this._h = 0xbefa4fa4
40731
40732 return this
40733 }
40734
40735 Sha224.prototype._hash = function () {
40736 var H = new Buffer(28)
40737
40738 H.writeInt32BE(this._a, 0)
40739 H.writeInt32BE(this._b, 4)
40740 H.writeInt32BE(this._c, 8)
40741 H.writeInt32BE(this._d, 12)
40742 H.writeInt32BE(this._e, 16)
40743 H.writeInt32BE(this._f, 20)
40744 H.writeInt32BE(this._g, 24)
40745
40746 return H
40747 }
40748
40749 module.exports = Sha224
40750
40751 }).call(this,require("buffer").Buffer)
40752 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40753 (function (Buffer){
40754 /**
40755 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40756 * in FIPS 180-2
40757 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40758 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40759 *
40760 */
40761
40762 var inherits = require('inherits')
40763 var Hash = require('./hash')
40764
40765 var K = [
40766 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40767 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40768 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40769 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40770 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40771 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40772 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40773 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40774 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40775 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40776 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40777 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40778 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40779 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40780 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40781 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40782 ]
40783
40784 var W = new Array(64)
40785
40786 function Sha256 () {
40787 this.init()
40788
40789 this._w = W // new Array(64)
40790
40791 Hash.call(this, 64, 56)
40792 }
40793
40794 inherits(Sha256, Hash)
40795
40796 Sha256.prototype.init = function () {
40797 this._a = 0x6a09e667
40798 this._b = 0xbb67ae85
40799 this._c = 0x3c6ef372
40800 this._d = 0xa54ff53a
40801 this._e = 0x510e527f
40802 this._f = 0x9b05688c
40803 this._g = 0x1f83d9ab
40804 this._h = 0x5be0cd19
40805
40806 return this
40807 }
40808
40809 function ch (x, y, z) {
40810 return z ^ (x & (y ^ z))
40811 }
40812
40813 function maj (x, y, z) {
40814 return (x & y) | (z & (x | y))
40815 }
40816
40817 function sigma0 (x) {
40818 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40819 }
40820
40821 function sigma1 (x) {
40822 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40823 }
40824
40825 function gamma0 (x) {
40826 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40827 }
40828
40829 function gamma1 (x) {
40830 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40831 }
40832
40833 Sha256.prototype._update = function (M) {
40834 var W = this._w
40835
40836 var a = this._a | 0
40837 var b = this._b | 0
40838 var c = this._c | 0
40839 var d = this._d | 0
40840 var e = this._e | 0
40841 var f = this._f | 0
40842 var g = this._g | 0
40843 var h = this._h | 0
40844
40845 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40846 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
40847
40848 for (var j = 0; j < 64; ++j) {
40849 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40850 var T2 = (sigma0(a) + maj(a, b, c)) | 0
40851
40852 h = g
40853 g = f
40854 f = e
40855 e = (d + T1) | 0
40856 d = c
40857 c = b
40858 b = a
40859 a = (T1 + T2) | 0
40860 }
40861
40862 this._a = (a + this._a) | 0
40863 this._b = (b + this._b) | 0
40864 this._c = (c + this._c) | 0
40865 this._d = (d + this._d) | 0
40866 this._e = (e + this._e) | 0
40867 this._f = (f + this._f) | 0
40868 this._g = (g + this._g) | 0
40869 this._h = (h + this._h) | 0
40870 }
40871
40872 Sha256.prototype._hash = function () {
40873 var H = new Buffer(32)
40874
40875 H.writeInt32BE(this._a, 0)
40876 H.writeInt32BE(this._b, 4)
40877 H.writeInt32BE(this._c, 8)
40878 H.writeInt32BE(this._d, 12)
40879 H.writeInt32BE(this._e, 16)
40880 H.writeInt32BE(this._f, 20)
40881 H.writeInt32BE(this._g, 24)
40882 H.writeInt32BE(this._h, 28)
40883
40884 return H
40885 }
40886
40887 module.exports = Sha256
40888
40889 }).call(this,require("buffer").Buffer)
40890 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40891 (function (Buffer){
40892 var inherits = require('inherits')
40893 var SHA512 = require('./sha512')
40894 var Hash = require('./hash')
40895
40896 var W = new Array(160)
40897
40898 function Sha384 () {
40899 this.init()
40900 this._w = W
40901
40902 Hash.call(this, 128, 112)
40903 }
40904
40905 inherits(Sha384, SHA512)
40906
40907 Sha384.prototype.init = function () {
40908 this._ah = 0xcbbb9d5d
40909 this._bh = 0x629a292a
40910 this._ch = 0x9159015a
40911 this._dh = 0x152fecd8
40912 this._eh = 0x67332667
40913 this._fh = 0x8eb44a87
40914 this._gh = 0xdb0c2e0d
40915 this._hh = 0x47b5481d
40916
40917 this._al = 0xc1059ed8
40918 this._bl = 0x367cd507
40919 this._cl = 0x3070dd17
40920 this._dl = 0xf70e5939
40921 this._el = 0xffc00b31
40922 this._fl = 0x68581511
40923 this._gl = 0x64f98fa7
40924 this._hl = 0xbefa4fa4
40925
40926 return this
40927 }
40928
40929 Sha384.prototype._hash = function () {
40930 var H = new Buffer(48)
40931
40932 function writeInt64BE (h, l, offset) {
40933 H.writeInt32BE(h, offset)
40934 H.writeInt32BE(l, offset + 4)
40935 }
40936
40937 writeInt64BE(this._ah, this._al, 0)
40938 writeInt64BE(this._bh, this._bl, 8)
40939 writeInt64BE(this._ch, this._cl, 16)
40940 writeInt64BE(this._dh, this._dl, 24)
40941 writeInt64BE(this._eh, this._el, 32)
40942 writeInt64BE(this._fh, this._fl, 40)
40943
40944 return H
40945 }
40946
40947 module.exports = Sha384
40948
40949 }).call(this,require("buffer").Buffer)
40950 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40951 (function (Buffer){
40952 var inherits = require('inherits')
40953 var Hash = require('./hash')
40954
40955 var K = [
40956 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40957 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40958 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40959 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40960 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40961 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40962 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40963 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40964 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40965 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40966 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40967 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40968 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40969 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40970 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40971 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40972 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40973 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40974 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40975 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40976 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40977 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40978 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40979 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40980 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40981 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40982 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40983 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40984 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40985 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40986 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40987 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40988 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40989 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40990 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40991 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40992 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40993 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40994 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40995 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40996 ]
40997
40998 var W = new Array(160)
40999
41000 function Sha512 () {
41001 this.init()
41002 this._w = W
41003
41004 Hash.call(this, 128, 112)
41005 }
41006
41007 inherits(Sha512, Hash)
41008
41009 Sha512.prototype.init = function () {
41010 this._ah = 0x6a09e667
41011 this._bh = 0xbb67ae85
41012 this._ch = 0x3c6ef372
41013 this._dh = 0xa54ff53a
41014 this._eh = 0x510e527f
41015 this._fh = 0x9b05688c
41016 this._gh = 0x1f83d9ab
41017 this._hh = 0x5be0cd19
41018
41019 this._al = 0xf3bcc908
41020 this._bl = 0x84caa73b
41021 this._cl = 0xfe94f82b
41022 this._dl = 0x5f1d36f1
41023 this._el = 0xade682d1
41024 this._fl = 0x2b3e6c1f
41025 this._gl = 0xfb41bd6b
41026 this._hl = 0x137e2179
41027
41028 return this
41029 }
41030
41031 function Ch (x, y, z) {
41032 return z ^ (x & (y ^ z))
41033 }
41034
41035 function maj (x, y, z) {
41036 return (x & y) | (z & (x | y))
41037 }
41038
41039 function sigma0 (x, xl) {
41040 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
41041 }
41042
41043 function sigma1 (x, xl) {
41044 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
41045 }
41046
41047 function Gamma0 (x, xl) {
41048 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
41049 }
41050
41051 function Gamma0l (x, xl) {
41052 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
41053 }
41054
41055 function Gamma1 (x, xl) {
41056 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
41057 }
41058
41059 function Gamma1l (x, xl) {
41060 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
41061 }
41062
41063 function getCarry (a, b) {
41064 return (a >>> 0) < (b >>> 0) ? 1 : 0
41065 }
41066
41067 Sha512.prototype._update = function (M) {
41068 var W = this._w
41069
41070 var ah = this._ah | 0
41071 var bh = this._bh | 0
41072 var ch = this._ch | 0
41073 var dh = this._dh | 0
41074 var eh = this._eh | 0
41075 var fh = this._fh | 0
41076 var gh = this._gh | 0
41077 var hh = this._hh | 0
41078
41079 var al = this._al | 0
41080 var bl = this._bl | 0
41081 var cl = this._cl | 0
41082 var dl = this._dl | 0
41083 var el = this._el | 0
41084 var fl = this._fl | 0
41085 var gl = this._gl | 0
41086 var hl = this._hl | 0
41087
41088 for (var i = 0; i < 32; i += 2) {
41089 W[i] = M.readInt32BE(i * 4)
41090 W[i + 1] = M.readInt32BE(i * 4 + 4)
41091 }
41092 for (; i < 160; i += 2) {
41093 var xh = W[i - 15 * 2]
41094 var xl = W[i - 15 * 2 + 1]
41095 var gamma0 = Gamma0(xh, xl)
41096 var gamma0l = Gamma0l(xl, xh)
41097
41098 xh = W[i - 2 * 2]
41099 xl = W[i - 2 * 2 + 1]
41100 var gamma1 = Gamma1(xh, xl)
41101 var gamma1l = Gamma1l(xl, xh)
41102
41103 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
41104 var Wi7h = W[i - 7 * 2]
41105 var Wi7l = W[i - 7 * 2 + 1]
41106
41107 var Wi16h = W[i - 16 * 2]
41108 var Wi16l = W[i - 16 * 2 + 1]
41109
41110 var Wil = (gamma0l + Wi7l) | 0
41111 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
41112 Wil = (Wil + gamma1l) | 0
41113 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
41114 Wil = (Wil + Wi16l) | 0
41115 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
41116
41117 W[i] = Wih
41118 W[i + 1] = Wil
41119 }
41120
41121 for (var j = 0; j < 160; j += 2) {
41122 Wih = W[j]
41123 Wil = W[j + 1]
41124
41125 var majh = maj(ah, bh, ch)
41126 var majl = maj(al, bl, cl)
41127
41128 var sigma0h = sigma0(ah, al)
41129 var sigma0l = sigma0(al, ah)
41130 var sigma1h = sigma1(eh, el)
41131 var sigma1l = sigma1(el, eh)
41132
41133 // t1 = h + sigma1 + ch + K[j] + W[j]
41134 var Kih = K[j]
41135 var Kil = K[j + 1]
41136
41137 var chh = Ch(eh, fh, gh)
41138 var chl = Ch(el, fl, gl)
41139
41140 var t1l = (hl + sigma1l) | 0
41141 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41142 t1l = (t1l + chl) | 0
41143 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41144 t1l = (t1l + Kil) | 0
41145 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41146 t1l = (t1l + Wil) | 0
41147 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
41148
41149 // t2 = sigma0 + maj
41150 var t2l = (sigma0l + majl) | 0
41151 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
41152
41153 hh = gh
41154 hl = gl
41155 gh = fh
41156 gl = fl
41157 fh = eh
41158 fl = el
41159 el = (dl + t1l) | 0
41160 eh = (dh + t1h + getCarry(el, dl)) | 0
41161 dh = ch
41162 dl = cl
41163 ch = bh
41164 cl = bl
41165 bh = ah
41166 bl = al
41167 al = (t1l + t2l) | 0
41168 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41169 }
41170
41171 this._al = (this._al + al) | 0
41172 this._bl = (this._bl + bl) | 0
41173 this._cl = (this._cl + cl) | 0
41174 this._dl = (this._dl + dl) | 0
41175 this._el = (this._el + el) | 0
41176 this._fl = (this._fl + fl) | 0
41177 this._gl = (this._gl + gl) | 0
41178 this._hl = (this._hl + hl) | 0
41179
41180 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41181 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41182 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41183 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41184 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41185 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41186 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41187 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
41188 }
41189
41190 Sha512.prototype._hash = function () {
41191 var H = new Buffer(64)
41192
41193 function writeInt64BE (h, l, offset) {
41194 H.writeInt32BE(h, offset)
41195 H.writeInt32BE(l, offset + 4)
41196 }
41197
41198 writeInt64BE(this._ah, this._al, 0)
41199 writeInt64BE(this._bh, this._bl, 8)
41200 writeInt64BE(this._ch, this._cl, 16)
41201 writeInt64BE(this._dh, this._dl, 24)
41202 writeInt64BE(this._eh, this._el, 32)
41203 writeInt64BE(this._fh, this._fl, 40)
41204 writeInt64BE(this._gh, this._gl, 48)
41205 writeInt64BE(this._hh, this._hl, 56)
41206
41207 return H
41208 }
41209
41210 module.exports = Sha512
41211
41212 }).call(this,require("buffer").Buffer)
41213 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41214 var isHexPrefixed = require('is-hex-prefixed');
41215
41216 /**
41217 * Removes '0x' from a given `String` is present
41218 * @param {String} str the string value
41219 * @return {String|Optional} a string by pass if necessary
41220 */
41221 module.exports = function stripHexPrefix(str) {
41222 if (typeof str !== 'string') {
41223 return str;
41224 }
41225
41226 return isHexPrefixed(str) ? str.slice(2) : str;
41227 }
41228
41229 },{"is-hex-prefixed":64}]},{},[31])(31)
41230 });</script>
41231 <script>function convertRippleAdrr(address) {
41232 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41233 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41234 )
41235 }
41236
41237 function convertRipplePriv(priv) {
41238 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
41239 }
41240
41241 </script>
41242 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
41243
41244 //// base.js
41245
41246 /** @fileOverview Javascript cryptography implementation.
41247 *
41248 * Crush to remove comments, shorten variable names and
41249 * generally reduce transmission size.
41250 *
41251 * @author Emily Stark
41252 * @author Mike Hamburg
41253 * @author Dan Boneh
41254 */
41255
41256 "use strict";
41257 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41258 /*global document, window, escape, unescape, module, require, Uint32Array */
41259
41260 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41261 var sjcl = {
41262 /** @namespace Symmetric ciphers. */
41263 cipher: {},
41264
41265 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41266 hash: {},
41267
41268 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41269 keyexchange: {},
41270
41271 /** @namespace Block cipher modes of operation. */
41272 mode: {},
41273
41274 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41275 misc: {},
41276
41277 /**
41278 * @namespace Bit array encoders and decoders.
41279 *
41280 * @description
41281 * The members of this namespace are functions which translate between
41282 * SJCL's bitArrays and other objects (usually strings). Because it
41283 * isn't always clear which direction is encoding and which is decoding,
41284 * the method names are "fromBits" and "toBits".
41285 */
41286 codec: {},
41287
41288 /** @namespace Exceptions. */
41289 exception: {
41290 /** @constructor Ciphertext is corrupt. */
41291 corrupt: function(message) {
41292 this.toString = function() { return "CORRUPT: "+this.message; };
41293 this.message = message;
41294 },
41295
41296 /** @constructor Invalid parameter. */
41297 invalid: function(message) {
41298 this.toString = function() { return "INVALID: "+this.message; };
41299 this.message = message;
41300 },
41301
41302 /** @constructor Bug or missing feature in SJCL. @constructor */
41303 bug: function(message) {
41304 this.toString = function() { return "BUG: "+this.message; };
41305 this.message = message;
41306 },
41307
41308 /** @constructor Something isn't ready. */
41309 notReady: function(message) {
41310 this.toString = function() { return "NOT READY: "+this.message; };
41311 this.message = message;
41312 }
41313 }
41314 };
41315
41316 if(typeof module !== 'undefined' && module.exports){
41317 module.exports = sjcl;
41318 }
41319 if (typeof define === "function") {
41320 define([], function () {
41321 return sjcl;
41322 });
41323 }
41324
41325
41326 //// bitArray.js
41327
41328 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41329 *
41330 * @author Emily Stark
41331 * @author Mike Hamburg
41332 * @author Dan Boneh
41333 */
41334
41335 /** @namespace Arrays of bits, encoded as arrays of Numbers.
41336 *
41337 * @description
41338 * <p>
41339 * These objects are the currency accepted by SJCL's crypto functions.
41340 * </p>
41341 *
41342 * <p>
41343 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41344 * but many of them can take arguments that are not a multiple of 4 bytes.
41345 * This library encodes arrays of bits (whose size need not be a multiple of 8
41346 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41347 * array of words, 32 bits at a time. Since the words are double-precision
41348 * floating point numbers, they fit some extra data. We use this (in a private,
41349 * possibly-changing manner) to encode the number of bits actually present
41350 * in the last word of the array.
41351 * </p>
41352 *
41353 * <p>
41354 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41355 * to ciphers like AES which want arrays of words.
41356 * </p>
41357 */
41358 sjcl.bitArray = {
41359 /**
41360 * Array slices in units of bits.
41361 * @param {bitArray} a The array to slice.
41362 * @param {Number} bstart The offset to the start of the slice, in bits.
41363 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41364 * slice until the end of the array.
41365 * @return {bitArray} The requested slice.
41366 */
41367 bitSlice: function (a, bstart, bend) {
41368 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41369 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41370 },
41371
41372 /**
41373 * Extract a number packed into a bit array.
41374 * @param {bitArray} a The array to slice.
41375 * @param {Number} bstart The offset to the start of the slice, in bits.
41376 * @param {Number} length The length of the number to extract.
41377 * @return {Number} The requested slice.
41378 */
41379 extract: function(a, bstart, blength) {
41380 // FIXME: this Math.floor is not necessary at all, but for some reason
41381 // seems to suppress a bug in the Chromium JIT.
41382 var x, sh = Math.floor((-bstart-blength) & 31);
41383 if ((bstart + blength - 1 ^ bstart) & -32) {
41384 // it crosses a boundary
41385 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41386 } else {
41387 // within a single word
41388 x = a[bstart/32|0] >>> sh;
41389 }
41390 return x & ((1<<blength) - 1);
41391 },
41392
41393 /**
41394 * Concatenate two bit arrays.
41395 * @param {bitArray} a1 The first array.
41396 * @param {bitArray} a2 The second array.
41397 * @return {bitArray} The concatenation of a1 and a2.
41398 */
41399 concat: function (a1, a2) {
41400 if (a1.length === 0 || a2.length === 0) {
41401 return a1.concat(a2);
41402 }
41403
41404 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41405 if (shift === 32) {
41406 return a1.concat(a2);
41407 } else {
41408 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
41409 }
41410 },
41411
41412 /**
41413 * Find the length of an array of bits.
41414 * @param {bitArray} a The array.
41415 * @return {Number} The length of a, in bits.
41416 */
41417 bitLength: function (a) {
41418 var l = a.length, x;
41419 if (l === 0) { return 0; }
41420 x = a[l - 1];
41421 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41422 },
41423
41424 /**
41425 * Truncate an array.
41426 * @param {bitArray} a The array.
41427 * @param {Number} len The length to truncate to, in bits.
41428 * @return {bitArray} A new array, truncated to len bits.
41429 */
41430 clamp: function (a, len) {
41431 if (a.length * 32 < len) { return a; }
41432 a = a.slice(0, Math.ceil(len / 32));
41433 var l = a.length;
41434 len = len & 31;
41435 if (l > 0 && len) {
41436 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41437 }
41438 return a;
41439 },
41440
41441 /**
41442 * Make a partial word for a bit array.
41443 * @param {Number} len The number of bits in the word.
41444 * @param {Number} x The bits.
41445 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41446 * @return {Number} The partial word.
41447 */
41448 partial: function (len, x, _end) {
41449 if (len === 32) { return x; }
41450 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41451 },
41452
41453 /**
41454 * Get the number of bits used by a partial word.
41455 * @param {Number} x The partial word.
41456 * @return {Number} The number of bits used by the partial word.
41457 */
41458 getPartial: function (x) {
41459 return Math.round(x/0x10000000000) || 32;
41460 },
41461
41462 /**
41463 * Compare two arrays for equality in a predictable amount of time.
41464 * @param {bitArray} a The first array.
41465 * @param {bitArray} b The second array.
41466 * @return {boolean} true if a == b; false otherwise.
41467 */
41468 equal: function (a, b) {
41469 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41470 return false;
41471 }
41472 var x = 0, i;
41473 for (i=0; i<a.length; i++) {
41474 x |= a[i]^b[i];
41475 }
41476 return (x === 0);
41477 },
41478
41479 /** Shift an array right.
41480 * @param {bitArray} a The array to shift.
41481 * @param {Number} shift The number of bits to shift.
41482 * @param {Number} [carry=0] A byte to carry in
41483 * @param {bitArray} [out=[]] An array to prepend to the output.
41484 * @private
41485 */
41486 _shiftRight: function (a, shift, carry, out) {
41487 var i, last2=0, shift2;
41488 if (out === undefined) { out = []; }
41489
41490 for (; shift >= 32; shift -= 32) {
41491 out.push(carry);
41492 carry = 0;
41493 }
41494 if (shift === 0) {
41495 return out.concat(a);
41496 }
41497
41498 for (i=0; i<a.length; i++) {
41499 out.push(carry | a[i]>>>shift);
41500 carry = a[i] << (32-shift);
41501 }
41502 last2 = a.length ? a[a.length-1] : 0;
41503 shift2 = sjcl.bitArray.getPartial(last2);
41504 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41505 return out;
41506 },
41507
41508 /** xor a block of 4 words together.
41509 * @private
41510 */
41511 _xor4: function(x,y) {
41512 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41513 },
41514
41515 /** byteswap a word array inplace.
41516 * (does not handle partial words)
41517 * @param {sjcl.bitArray} a word array
41518 * @return {sjcl.bitArray} byteswapped array
41519 */
41520 byteswapM: function(a) {
41521 var i, v, m = 0xff00;
41522 for (i = 0; i < a.length; ++i) {
41523 v = a[i];
41524 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
41525 }
41526 return a;
41527 }
41528 };
41529
41530
41531 //// codecString.js
41532
41533 /** @fileOverview Bit array codec implementations.
41534 *
41535 * @author Emily Stark
41536 * @author Mike Hamburg
41537 * @author Dan Boneh
41538 */
41539
41540 /** @namespace UTF-8 strings */
41541 sjcl.codec.utf8String = {
41542 /** Convert from a bitArray to a UTF-8 string. */
41543 fromBits: function (arr) {
41544 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41545 for (i=0; i<bl/8; i++) {
41546 if ((i&3) === 0) {
41547 tmp = arr[i/4];
41548 }
41549 out += String.fromCharCode(tmp >>> 24);
41550 tmp <<= 8;
41551 }
41552 return decodeURIComponent(escape(out));
41553 },
41554
41555 /** Convert from a UTF-8 string to a bitArray. */
41556 toBits: function (str) {
41557 str = unescape(encodeURIComponent(str));
41558 var out = [], i, tmp=0;
41559 for (i=0; i<str.length; i++) {
41560 tmp = tmp << 8 | str.charCodeAt(i);
41561 if ((i&3) === 3) {
41562 out.push(tmp);
41563 tmp = 0;
41564 }
41565 }
41566 if (i&3) {
41567 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
41568 }
41569 return out;
41570 }
41571 };
41572
41573
41574 //// codecHex.js
41575
41576 /** @fileOverview Bit array codec implementations.
41577 *
41578 * @author Emily Stark
41579 * @author Mike Hamburg
41580 * @author Dan Boneh
41581 */
41582
41583 /** @namespace Hexadecimal */
41584 sjcl.codec.hex = {
41585 /** Convert from a bitArray to a hex string. */
41586 fromBits: function (arr) {
41587 var out = "", i;
41588 for (i=0; i<arr.length; i++) {
41589 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
41590 }
41591 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41592 },
41593 /** Convert from a hex string to a bitArray. */
41594 toBits: function (str) {
41595 var i, out=[], len;
41596 str = str.replace(/\s|0x/g, "");
41597 len = str.length;
41598 str = str + "00000000";
41599 for (i=0; i<str.length; i+=8) {
41600 out.push(parseInt(str.substr(i,8),16)^0);
41601 }
41602 return sjcl.bitArray.clamp(out, len*4);
41603 }
41604 };
41605
41606
41607 //// sha512.js
41608
41609 /** @fileOverview Javascript SHA-512 implementation.
41610 *
41611 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41612 * SJCL by Stefan Thomas.
41613 *
41614 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
41615 * Released with New BSD License
41616 *
41617 * @author Emily Stark
41618 * @author Mike Hamburg
41619 * @author Dan Boneh
41620 * @author Jeff Mott
41621 * @author Stefan Thomas
41622 */
41623
41624 /**
41625 * Context for a SHA-512 operation in progress.
41626 * @constructor
41627 * @class Secure Hash Algorithm, 512 bits.
41628 */
41629 sjcl.hash.sha512 = function (hash) {
41630 if (!this._key[0]) { this._precompute(); }
41631 if (hash) {
41632 this._h = hash._h.slice(0);
41633 this._buffer = hash._buffer.slice(0);
41634 this._length = hash._length;
41635 } else {
41636 this.reset();
41637 }
41638 };
41639
41640 /**
41641 * Hash a string or an array of words.
41642 * @static
41643 * @param {bitArray|String} data the data to hash.
41644 * @return {bitArray} The hash value, an array of 16 big-endian words.
41645 */
41646 sjcl.hash.sha512.hash = function (data) {
41647 return (new sjcl.hash.sha512()).update(data).finalize();
41648 };
41649
41650 sjcl.hash.sha512.prototype = {
41651 /**
41652 * The hash's block size, in bits.
41653 * @constant
41654 */
41655 blockSize: 1024,
41656
41657 /**
41658 * Reset the hash state.
41659 * @return this
41660 */
41661 reset:function () {
41662 this._h = this._init.slice(0);
41663 this._buffer = [];
41664 this._length = 0;
41665 return this;
41666 },
41667
41668 /**
41669 * Input several words to the hash.
41670 * @param {bitArray|String} data the data to hash.
41671 * @return this
41672 */
41673 update: function (data) {
41674 if (typeof data === "string") {
41675 data = sjcl.codec.utf8String.toBits(data);
41676 }
41677 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41678 ol = this._length,
41679 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41680 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41681 this._block(b.splice(0,32));
41682 }
41683 return this;
41684 },
41685
41686 /**
41687 * Complete hashing and output the hash value.
41688 * @return {bitArray} The hash value, an array of 16 big-endian words.
41689 */
41690 finalize:function () {
41691 var i, b = this._buffer, h = this._h;
41692
41693 // Round out and push the buffer
41694 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41695
41696 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41697 for (i = b.length + 4; i & 31; i++) {
41698 b.push(0);
41699 }
41700
41701 // append the length
41702 b.push(0);
41703 b.push(0);
41704 b.push(Math.floor(this._length / 0x100000000));
41705 b.push(this._length | 0);
41706
41707 while (b.length) {
41708 this._block(b.splice(0,32));
41709 }
41710
41711 this.reset();
41712 return h;
41713 },
41714
41715 /**
41716 * The SHA-512 initialization vector, to be precomputed.
41717 * @private
41718 */
41719 _init:[],
41720
41721 /**
41722 * Least significant 24 bits of SHA512 initialization values.
41723 *
41724 * Javascript only has 53 bits of precision, so we compute the 40 most
41725 * significant bits and add the remaining 24 bits as constants.
41726 *
41727 * @private
41728 */
41729 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41730
41731 /*
41732 _init:
41733 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41734 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41735 */
41736
41737 /**
41738 * The SHA-512 hash key, to be precomputed.
41739 * @private
41740 */
41741 _key:[],
41742
41743 /**
41744 * Least significant 24 bits of SHA512 key values.
41745 * @private
41746 */
41747 _keyr:
41748 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41749 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41750 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41751 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41752 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41753 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41754 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41755 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41756 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41757 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41758
41759 /*
41760 _key:
41761 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41762 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41763 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41764 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41765 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41766 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41767 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41768 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41769 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41770 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41771 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41772 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41773 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41774 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41775 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41776 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41777 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41778 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41779 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41780 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41781 */
41782
41783 /**
41784 * Function to precompute _init and _key.
41785 * @private
41786 */
41787 _precompute: function () {
41788 // XXX: This code is for precomputing the SHA256 constants, change for
41789 // SHA512 and re-enable.
41790 var i = 0, prime = 2, factor;
41791
41792 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41793 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41794
41795 outer: for (; i<80; prime++) {
41796 for (factor=2; factor*factor <= prime; factor++) {
41797 if (prime % factor === 0) {
41798 // not a prime
41799 continue outer;
41800 }
41801 }
41802
41803 if (i<8) {
41804 this._init[i*2] = frac(Math.pow(prime, 1/2));
41805 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41806 }
41807 this._key[i*2] = frac(Math.pow(prime, 1/3));
41808 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41809 i++;
41810 }
41811 },
41812
41813 /**
41814 * Perform one cycle of SHA-512.
41815 * @param {bitArray} words one block of words.
41816 * @private
41817 */
41818 _block:function (words) {
41819 var i, wrh, wrl,
41820 w = words.slice(0),
41821 h = this._h,
41822 k = this._key,
41823 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41824 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41825 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41826 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41827
41828 // Working variables
41829 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41830 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41831 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41832 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41833
41834 for (i=0; i<80; i++) {
41835 // load up the input word for this round
41836 if (i<16) {
41837 wrh = w[i * 2];
41838 wrl = w[i * 2 + 1];
41839 } else {
41840 // Gamma0
41841 var gamma0xh = w[(i-15) * 2];
41842 var gamma0xl = w[(i-15) * 2 + 1];
41843 var gamma0h =
41844 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41845 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41846 (gamma0xh >>> 7);
41847 var gamma0l =
41848 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41849 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41850 ((gamma0xh << 25) | (gamma0xl >>> 7));
41851
41852 // Gamma1
41853 var gamma1xh = w[(i-2) * 2];
41854 var gamma1xl = w[(i-2) * 2 + 1];
41855 var gamma1h =
41856 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41857 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41858 (gamma1xh >>> 6);
41859 var gamma1l =
41860 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41861 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41862 ((gamma1xh << 26) | (gamma1xl >>> 6));
41863
41864 // Shortcuts
41865 var wr7h = w[(i-7) * 2];
41866 var wr7l = w[(i-7) * 2 + 1];
41867
41868 var wr16h = w[(i-16) * 2];
41869 var wr16l = w[(i-16) * 2 + 1];
41870
41871 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41872 wrl = gamma0l + wr7l;
41873 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41874 wrl += gamma1l;
41875 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41876 wrl += wr16l;
41877 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41878 }
41879
41880 w[i*2] = wrh |= 0;
41881 w[i*2 + 1] = wrl |= 0;
41882
41883 // Ch
41884 var chh = (eh & fh) ^ (~eh & gh);
41885 var chl = (el & fl) ^ (~el & gl);
41886
41887 // Maj
41888 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41889 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41890
41891 // Sigma0
41892 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41893 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41894
41895 // Sigma1
41896 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41897 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41898
41899 // K(round)
41900 var krh = k[i*2];
41901 var krl = k[i*2+1];
41902
41903 // t1 = h + sigma1 + ch + K(round) + W(round)
41904 var t1l = hl + sigma1l;
41905 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41906 t1l += chl;
41907 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41908 t1l += krl;
41909 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41910 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41911 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41912
41913 // t2 = sigma0 + maj
41914 var t2l = sigma0l + majl;
41915 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41916
41917 // Update working variables
41918 hh = gh;
41919 hl = gl;
41920 gh = fh;
41921 gl = fl;
41922 fh = eh;
41923 fl = el;
41924 el = (dl + t1l) | 0;
41925 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41926 dh = ch;
41927 dl = cl;
41928 ch = bh;
41929 cl = bl;
41930 bh = ah;
41931 bl = al;
41932 al = (t1l + t2l) | 0;
41933 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41934 }
41935
41936 // Intermediate hash
41937 h0l = h[1] = (h0l + al) | 0;
41938 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41939 h1l = h[3] = (h1l + bl) | 0;
41940 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41941 h2l = h[5] = (h2l + cl) | 0;
41942 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41943 h3l = h[7] = (h3l + dl) | 0;
41944 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41945 h4l = h[9] = (h4l + el) | 0;
41946 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41947 h5l = h[11] = (h5l + fl) | 0;
41948 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41949 h6l = h[13] = (h6l + gl) | 0;
41950 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41951 h7l = h[15] = (h7l + hl) | 0;
41952 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41953 }
41954 };
41955
41956
41957 //// hmac.js
41958
41959 /** @fileOverview HMAC implementation.
41960 *
41961 * @author Emily Stark
41962 * @author Mike Hamburg
41963 * @author Dan Boneh
41964 */
41965
41966 /** HMAC with the specified hash function.
41967 * @constructor
41968 * @param {bitArray} key the key for HMAC.
41969 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41970 */
41971 sjcl.misc.hmac = function (key, Hash) {
41972 this._hash = Hash = Hash || sjcl.hash.sha256;
41973 var exKey = [[],[]], i,
41974 bs = Hash.prototype.blockSize / 32;
41975 this._baseHash = [new Hash(), new Hash()];
41976
41977 if (key.length > bs) {
41978 key = Hash.hash(key);
41979 }
41980
41981 for (i=0; i<bs; i++) {
41982 exKey[0][i] = key[i]^0x36363636;
41983 exKey[1][i] = key[i]^0x5C5C5C5C;
41984 }
41985
41986 this._baseHash[0].update(exKey[0]);
41987 this._baseHash[1].update(exKey[1]);
41988 this._resultHash = new Hash(this._baseHash[0]);
41989 };
41990
41991 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
41992 * @param {bitArray|String} data The data to mac.
41993 */
41994 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41995 if (!this._updated) {
41996 this.update(data);
41997 return this.digest(data);
41998 } else {
41999 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
42000 }
42001 };
42002
42003 sjcl.misc.hmac.prototype.reset = function () {
42004 this._resultHash = new this._hash(this._baseHash[0]);
42005 this._updated = false;
42006 };
42007
42008 sjcl.misc.hmac.prototype.update = function (data) {
42009 this._updated = true;
42010 this._resultHash.update(data);
42011 };
42012
42013 sjcl.misc.hmac.prototype.digest = function () {
42014 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
42015
42016 this.reset();
42017
42018 return result;
42019 };
42020
42021
42022 //// pbkdf2.js
42023
42024
42025 /** @fileOverview Password-based key-derivation function, version 2.0.
42026 *
42027 * @author Emily Stark
42028 * @author Mike Hamburg
42029 * @author Dan Boneh
42030 */
42031
42032 /** Password-Based Key-Derivation Function, version 2.0.
42033 *
42034 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
42035 *
42036 * This is the method specified by RSA's PKCS #5 standard.
42037 *
42038 * @param {bitArray|String} password The password.
42039 * @param {bitArray|String} salt The salt. Should have lots of entropy.
42040 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
42041 * @param {Number} [length] The length of the derived key. Defaults to the
42042 output size of the hash function.
42043 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
42044 * @return {bitArray} the derived key.
42045 */
42046 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
42047 count = count || 1000;
42048
42049 if (length < 0 || count < 0) {
42050 throw sjcl.exception.invalid("invalid params to pbkdf2");
42051 }
42052
42053 if (typeof password === "string") {
42054 password = sjcl.codec.utf8String.toBits(password);
42055 }
42056
42057 if (typeof salt === "string") {
42058 salt = sjcl.codec.utf8String.toBits(salt);
42059 }
42060
42061 Prff = Prff || sjcl.misc.hmac;
42062
42063 var prf = new Prff(password),
42064 u, ui, i, j, k, out = [], b = sjcl.bitArray;
42065
42066 for (k = 1; 32 * out.length < (length || 1); k++) {
42067 u = ui = prf.encrypt(b.concat(salt,[k]));
42068
42069 for (i=1; i<count; i++) {
42070 ui = prf.encrypt(ui);
42071 for (j=0; j<ui.length; j++) {
42072 u[j] ^= ui[j];
42073 }
42074 }
42075
42076 out = out.concat(u);
42077 }
42078
42079 if (length) { out = b.clamp(out, length); }
42080
42081 return out;
42082 };
42083
42084
42085 //// sha256.js
42086
42087 /** @fileOverview Javascript SHA-256 implementation.
42088 *
42089 * An older version of this implementation is available in the public
42090 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
42091 * Stanford University 2008-2010 and BSD-licensed for liability
42092 * reasons.
42093 *
42094 * Special thanks to Aldo Cortesi for pointing out several bugs in
42095 * this code.
42096 *
42097 * @author Emily Stark
42098 * @author Mike Hamburg
42099 * @author Dan Boneh
42100 */
42101
42102 /**
42103 * Context for a SHA-256 operation in progress.
42104 * @constructor
42105 * @class Secure Hash Algorithm, 256 bits.
42106 */
42107 sjcl.hash.sha256 = function (hash) {
42108 if (!this._key[0]) { this._precompute(); }
42109 if (hash) {
42110 this._h = hash._h.slice(0);
42111 this._buffer = hash._buffer.slice(0);
42112 this._length = hash._length;
42113 } else {
42114 this.reset();
42115 }
42116 };
42117
42118 /**
42119 * Hash a string or an array of words.
42120 * @static
42121 * @param {bitArray|String} data the data to hash.
42122 * @return {bitArray} The hash value, an array of 16 big-endian words.
42123 */
42124 sjcl.hash.sha256.hash = function (data) {
42125 return (new sjcl.hash.sha256()).update(data).finalize();
42126 };
42127
42128 sjcl.hash.sha256.prototype = {
42129 /**
42130 * The hash's block size, in bits.
42131 * @constant
42132 */
42133 blockSize: 512,
42134
42135 /**
42136 * Reset the hash state.
42137 * @return this
42138 */
42139 reset:function () {
42140 this._h = this._init.slice(0);
42141 this._buffer = [];
42142 this._length = 0;
42143 return this;
42144 },
42145
42146 /**
42147 * Input several words to the hash.
42148 * @param {bitArray|String} data the data to hash.
42149 * @return this
42150 */
42151 update: function (data) {
42152 if (typeof data === "string") {
42153 data = sjcl.codec.utf8String.toBits(data);
42154 }
42155 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42156 ol = this._length,
42157 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42158 for (i = 512+ol & -512; i <= nl; i+= 512) {
42159 this._block(b.splice(0,16));
42160 }
42161 return this;
42162 },
42163
42164 /**
42165 * Complete hashing and output the hash value.
42166 * @return {bitArray} The hash value, an array of 8 big-endian words.
42167 */
42168 finalize:function () {
42169 var i, b = this._buffer, h = this._h;
42170
42171 // Round out and push the buffer
42172 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42173
42174 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42175 for (i = b.length + 2; i & 15; i++) {
42176 b.push(0);
42177 }
42178
42179 // append the length
42180 b.push(Math.floor(this._length / 0x100000000));
42181 b.push(this._length | 0);
42182
42183 while (b.length) {
42184 this._block(b.splice(0,16));
42185 }
42186
42187 this.reset();
42188 return h;
42189 },
42190
42191 /**
42192 * The SHA-256 initialization vector, to be precomputed.
42193 * @private
42194 */
42195 _init:[],
42196 /*
42197 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42198 */
42199
42200 /**
42201 * The SHA-256 hash key, to be precomputed.
42202 * @private
42203 */
42204 _key:[],
42205 /*
42206 _key:
42207 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42208 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42209 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42210 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42211 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42212 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42213 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42214 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42215 */
42216
42217
42218 /**
42219 * Function to precompute _init and _key.
42220 * @private
42221 */
42222 _precompute: function () {
42223 var i = 0, prime = 2, factor;
42224
42225 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42226
42227 outer: for (; i<64; prime++) {
42228 for (factor=2; factor*factor <= prime; factor++) {
42229 if (prime % factor === 0) {
42230 // not a prime
42231 continue outer;
42232 }
42233 }
42234
42235 if (i<8) {
42236 this._init[i] = frac(Math.pow(prime, 1/2));
42237 }
42238 this._key[i] = frac(Math.pow(prime, 1/3));
42239 i++;
42240 }
42241 },
42242
42243 /**
42244 * Perform one cycle of SHA-256.
42245 * @param {bitArray} words one block of words.
42246 * @private
42247 */
42248 _block:function (words) {
42249 var i, tmp, a, b,
42250 w = words.slice(0),
42251 h = this._h,
42252 k = this._key,
42253 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42254 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42255
42256 /* Rationale for placement of |0 :
42257 * If a value can overflow is original 32 bits by a factor of more than a few
42258 * million (2^23 ish), there is a possibility that it might overflow the
42259 * 53-bit mantissa and lose precision.
42260 *
42261 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42262 * propagates around the loop, and on the hash state h[]. I don't believe
42263 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42264 * (for h4 anyway), and better safe than sorry.
42265 *
42266 * The clamps on h[] are necessary for the output to be correct even in the
42267 * common case and for short inputs.
42268 */
42269 for (i=0; i<64; i++) {
42270 // load up the input word for this round
42271 if (i<16) {
42272 tmp = w[i];
42273 } else {
42274 a = w[(i+1 ) & 15];
42275 b = w[(i+14) & 15];
42276 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42277 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42278 w[i&15] + w[(i+9) & 15]) | 0;
42279 }
42280
42281 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42282
42283 // shift register
42284 h7 = h6; h6 = h5; h5 = h4;
42285 h4 = h3 + tmp | 0;
42286 h3 = h2; h2 = h1; h1 = h0;
42287
42288 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42289 }
42290
42291 h[0] = h[0]+h0 | 0;
42292 h[1] = h[1]+h1 | 0;
42293 h[2] = h[2]+h2 | 0;
42294 h[3] = h[3]+h3 | 0;
42295 h[4] = h[4]+h4 | 0;
42296 h[5] = h[5]+h5 | 0;
42297 h[6] = h[6]+h6 | 0;
42298 h[7] = h[7]+h7 | 0;
42299 }
42300 };
42301 </script>
42302 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42303 WORDLISTS["english"] = [
42304 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42305 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42306 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42307 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42308 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42309 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42310 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42311 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42312 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42313 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42314 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42315 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42316 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42317 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42318 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42319 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42320 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42321 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42322 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42323 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42324 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42325 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42326 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42327 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42328 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42329 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42330 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42331 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42332 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42333 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42334 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42335 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42336 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42337 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42338 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42339 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42340 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42341 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42342 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42343 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42344 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42345 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42346 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42347 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42348 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42349 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42350 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42351 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42352 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42353 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42354 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42355 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42356 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42357 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42358 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42359 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42360 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42361 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42362 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42363 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42364 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42365 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42366 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42367 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42368 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42369 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42370 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42371 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42372 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42373 "film","filter","final","find","fine","finger","finish","fire","firm","first",
42374 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42375 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42376 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42377 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42378 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42379 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42380 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42381 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42382 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42383 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42384 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42385 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42386 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42387 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42388 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42389 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42390 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42391 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42392 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42393 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42394 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42395 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42396 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42397 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42398 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42399 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42400 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42401 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42402 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42403 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42404 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42405 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42406 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42407 "liar","liberty","library","license","life","lift","light","like","limb","limit",
42408 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42409 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42410 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42411 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42412 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42413 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42414 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42415 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42416 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42417 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42418 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42419 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42420 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42421 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42422 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42423 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
42424 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42425 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42426 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42427 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
42428 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42429 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42430 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42431 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42432 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42433 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42434 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42435 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42436 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42437 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42438 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
42439 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42440 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42441 "prize","problem","process","produce","profit","program","project","promote","proof","property",
42442 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42443 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42444 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42445 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42446 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42447 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42448 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42449 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42450 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42451 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42452 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42453 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42454 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42455 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42456 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42457 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42458 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42459 "scrub","sea","search","season","seat","second","secret","section","security","seed",
42460 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42461 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42462 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42463 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42464 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42465 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42466 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42467 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42468 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42469 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42470 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42471 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42472 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42473 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42474 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42475 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42476 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42477 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42478 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42479 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42480 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42481 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42482 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42483 "thank","that","theme","then","theory","there","they","thing","this","thought",
42484 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42485 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42486 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42487 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42488 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42489 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42490 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42491 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42492 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42493 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42494 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42495 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42496 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42497 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42498 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42499 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42500 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42501 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42502 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42503 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42504 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42505 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42506 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42507 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42508 "yellow","you","young","youth","zebra","zero","zone","zoo"]
42509 </script>
42510 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42511 WORDLISTS["japanese"] = [
42512 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42513 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42514 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42515 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42516 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42517 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42518 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42519 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42520 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42521 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42522 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42523 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42524 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42525 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42526 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42527 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42528 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42529 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42530 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42531 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42532 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42533 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42534 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42535 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42536 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42537 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42538 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42539 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42540 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42541 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42542 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42543 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42544 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42545 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42546 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42547 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42548 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42549 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42550 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42551 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42552 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42553 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42554 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42555 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42556 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42557 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42558 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42559 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42560 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42561 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42562 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42563 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42564 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42565 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42566 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42567 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42568 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42569 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42570 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42571 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42572 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42573 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42574 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42575 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42576 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42577 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42578 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42579 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42580 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42581 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42582 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42583 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42584 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42585 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42586 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42587 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42588 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42589 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42590 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42591 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42592 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42593 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42594 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42595 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42596 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42597 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42598 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42599 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42600 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42601 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42602 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42603 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42604 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42605 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42606 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42607 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42608 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42609 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42610 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42611 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42612 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42613 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42614 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42615 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42616 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42617 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42618 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42619 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
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 </script>
42718 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42719 WORDLISTS["spanish"] = [
42720 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42721 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42722 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42723 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42724 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42725 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42726 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42727 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42728 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42729 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42730 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42731 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42732 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42733 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42734 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42735 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42736 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42737 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42738 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42739 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42740 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42741 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42742 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42743 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42744 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42745 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42746 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42747 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42748 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42749 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42750 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42751 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42752 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42753 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42754 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42755 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42756 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42757 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42758 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42759 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42760 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42761 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42762 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42763 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42764 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42765 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42766 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42767 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42768 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42769 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42770 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42771 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42772 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42773 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42774 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42775 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42776 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42777 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42778 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42779 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42780 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42781 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42782 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42783 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42784 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42785 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42786 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42787 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42788 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42789 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42790 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42791 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42792 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42793 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42794 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42795 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42796 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42797 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42798 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42799 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42800 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42801 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42802 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42803 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42804 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42805 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42806 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42807 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42808 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42809 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42810 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42811 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42812 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42813 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42814 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42815 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42816 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42817 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42818 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42819 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42820 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42821 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42822 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42823 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42824 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42825 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42826 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42827 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42828 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42829 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42830 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42831 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42832 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42833 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42834 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42835 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42836 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42837 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42838 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42839 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42840 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42841 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
42842 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
42843 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
42844 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
42845 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
42846 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
42847 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
42848 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
42849 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
42850 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
42851 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
42852 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
42853 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
42854 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
42855 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
42856 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
42857 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
42858 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
42859 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
42860 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
42861 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
42862 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
42863 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
42864 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
42865 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
42866 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
42867 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
42868 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
42869 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
42870 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
42871 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
42872 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
42873 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
42874 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
42875 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
42876 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
42877 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
42878 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
42879 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
42880 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
42881 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
42882 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
42883 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
42884 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
42885 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
42886 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
42887 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
42888 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
42889 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
42890 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
42891 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
42892 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
42893 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
42894 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
42895 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
42896 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
42897 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
42898 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
42899 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
42900 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
42901 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
42902 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
42903 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
42904 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
42905 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
42906 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
42907 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
42908 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
42909 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
42910 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
42911 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
42912 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
42913 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
42914 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
42915 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
42916 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
42917 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
42918 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
42919 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
42920 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
42921 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
42922 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
42923 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
42924 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
42925 </script>
42926 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42927 WORDLISTS["chinese_simplified"] = [
42928 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
42929 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
42930 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
42931 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
42932 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
42933 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
42934 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
42935 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
42936 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
42937 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
42938 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
42939 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
42940 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
42941 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
42942 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
42943 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
42944 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
42945 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
42946 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
42947 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
42948 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
42949 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
42950 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
42951 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
42952 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
42953 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
42954 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
42955 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
42956 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
42957 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
42958 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
42959 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
42960 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
42961 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
42962 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
42963 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
42964 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
42965 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
42966 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
42967 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
42968 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
42969 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
42970 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
42971 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
42972 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
42973 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
42974 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
42975 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
42976 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
42977 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
42978 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
42979 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
42980 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
42981 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
42982 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
42983 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
42984 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
42985 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
42986 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
42987 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
42988 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
42989 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
42990 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
42991 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
42992 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
42993 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
42994 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
42995 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
42996 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
42997 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
42998 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
42999 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
43000 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
43001 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
43002 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
43003 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43004 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
43005 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
43006 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
43007 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
43008 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
43009 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
43010 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
43011 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
43012 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
43013 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
43014 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
43015 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
43016 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
43017 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
43018 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
43019 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
43020 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43021 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
43022 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
43023 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
43024 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
43025 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
43026 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
43027 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
43028 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
43029 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
43030 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
43031 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
43032 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
43033 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
43034 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
43035 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
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 </script>
43134 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43135 WORDLISTS["chinese_traditional"] = [
43136 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
43137 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
43138 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
43139 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
43140 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
43141 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
43142 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
43143 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
43144 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
43145 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
43146 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
43147 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43148 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
43149 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
43150 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
43151 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
43152 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
43153 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
43154 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
43155 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
43156 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
43157 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
43158 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
43159 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
43160 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
43161 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
43162 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
43163 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
43164 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
43165 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
43166 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
43167 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
43168 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
43169 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
43170 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
43171 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
43172 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
43173 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
43174 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
43175 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
43176 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43177 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43178 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43179 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43180 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43181 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43182 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43183 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43184 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43185 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43186 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43187 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43188 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43189 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43190 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43191 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43192 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43193 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43194 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43195 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43196 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43197 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43198 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43199 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43200 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43201 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43202 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43203 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43204 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43205 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43206 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43207 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43208 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43209 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43210 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43211 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43212 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43213 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43214 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43215 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43216 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43217 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43218 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43219 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43220 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43221 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43222 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43223 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43224 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43225 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43226 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43227 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43228 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43229 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43230 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43231 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43232 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43233 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43234 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43235 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43236 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43237 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43238 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43239 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43240 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43241 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43242 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43243 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43244 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43245 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43246 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43247 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43248 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43249 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43250 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43251 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43252 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43253 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43254 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43255 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43256 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43257 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43258 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43259 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43260 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43261 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43262 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43263 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43264 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43265 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43266 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43267 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43268 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43269 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43270 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43271 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43272 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43273 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43274 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43275 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43276 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43277 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43278 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43279 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43280 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43281 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43282 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43283 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43284 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
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 </script>
43342 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43343 WORDLISTS["french"] = [
43344 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43345 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43346 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43347 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43348 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43349 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43350 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43351 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43352 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43353 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43354 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43355 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43356 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43357 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43358 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43359 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43360 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43361 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43362 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43363 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43364 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43365 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43366 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43367 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43368 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43369 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43370 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43371 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43372 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43373 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43374 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43375 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43376 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43377 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43378 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43379 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43380 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43381 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43382 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43383 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43384 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43385 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43386 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43387 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43388 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43389 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43390 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43391 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43392 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43393 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43394 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43395 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43396 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43397 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43398 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43399 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43400 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43401 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43402 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43403 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43404 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43405 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43406 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43407 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43408 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43409 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43410 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43411 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43412 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43413 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43414 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43415 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43416 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43417 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43418 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43419 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43420 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43421 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43422 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43423 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43424 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43425 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43426 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43427 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43428 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43429 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43430 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43431 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43432 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43433 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43434 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43435 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43436 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43437 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43438 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43439 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43440 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43441 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43442 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43443 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43444 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43445 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43446 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43447 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43448 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43449 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43450 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43451 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43452 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43453 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43454 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43455 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43456 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43457 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43458 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43459 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43460 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43461 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43462 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43463 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43464 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43465 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43466 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43467 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43468 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43469 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43470 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43471 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43472 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43473 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43474 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43475 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43476 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43477 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43478 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43479 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43480 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43481 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43482 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43483 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43484 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43485 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43486 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43487 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43488 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43489 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43490 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43491 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43492 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43493 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43494 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43495 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43496 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43497 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43498 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43499 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43500 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43501 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43502 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43503 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43504 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43505 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43506 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43507 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43508 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43509 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43510 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43511 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43512 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43513 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43514 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43515 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43516 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43517 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43518 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43519 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43520 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43521 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43522 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43523 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43524 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43525 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43526 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43527 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43528 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43529 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43530 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43531 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43532 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43533 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43534 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43535 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43536 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43537 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43538 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43539 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43540 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43541 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43542 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43543 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43544 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43545 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43546 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43547 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43548 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43549 </script>
43550 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43551 WORDLISTS["italian"] = [
43552 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43553 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43554 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43555 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43556 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43557 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43558 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43559 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43560 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43561 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43562 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43563 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43564 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43565 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43566 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43567 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43568 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43569 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43570 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43571 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43572 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43573 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43574 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43575 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43576 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43577 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43578 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43579 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43580 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43581 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43582 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43583 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43584 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43585 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43586 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43587 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43588 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43589 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43590 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43591 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43592 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43593 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43594 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43595 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43596 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43597 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43598 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43599 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43600 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43601 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43602 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43603 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43604 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43605 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43606 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43607 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43608 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43609 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43610 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43611 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43612 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43613 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43614 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43615 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43616 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43617 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43618 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43619 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43620 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43621 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43622 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43623 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43624 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43625 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43626 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43627 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43628 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43629 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43630 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43631 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43632 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43633 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43634 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43635 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43636 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43637 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43638 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43639 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43640 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43641 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43642 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43643 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43644 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43645 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43646 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43647 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43648 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43649 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43650 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43651 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43652 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43653 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43654 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43655 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43656 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43657 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43658 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43659 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43660 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43661 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43662 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43663 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43664 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43665 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43666 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43667 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43668 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43669 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43670 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43671 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43672 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43673 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43674 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43675 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43676 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43677 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43678 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43679 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43680 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43681 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43682 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43683 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43684 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43685 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43686 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43687 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43688 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43689 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43690 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43691 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43692 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43693 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43694 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43695 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43696 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43697 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43698 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43699 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43700 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43701 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43702 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43703 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43704 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43705 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43706 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43707 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43708 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43709 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43710 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43711 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43712 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43713 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43714 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43715 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43716 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43717 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43718 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43719 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43720 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43721 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43722 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43723 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43724 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43725 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43726 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43727 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43728 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43729 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43730 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43731 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43732 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43733 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43734 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43735 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43736 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43737 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43738 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43739 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43740 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43741 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43742 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43743 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43744 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43745 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43746 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43747 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43748 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43749 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43750 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43751 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43752 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43753 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43754 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43755 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43756 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
43757 </script>
43758 <script>/*
43759 * Copyright (c) 2013 Pavol Rusnak
43760 *
43761 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43762 * this software and associated documentation files (the "Software"), to deal in
43763 * the Software without restriction, including without limitation the rights to
43764 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43765 * of the Software, and to permit persons to whom the Software is furnished to do
43766 * so, subject to the following conditions:
43767 *
43768 * The above copyright notice and this permission notice shall be included in all
43769 * copies or substantial portions of the Software.
43770 *
43771 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43772 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43773 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43774 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43775 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43776 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43777 */
43778
43779 /*
43780 * Javascript port from python by Ian Coleman
43781 *
43782 * Requires code from sjcl
43783 * https://github.com/bitwiseshiftleft/sjcl
43784 */
43785
43786 var Mnemonic = function(language) {
43787
43788 var PBKDF2_ROUNDS = 2048;
43789 var RADIX = 2048;
43790
43791 var self = this;
43792 var wordlist = [];
43793
43794 var hmacSHA512 = function(key) {
43795 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43796 this.encrypt = function() {
43797 return hasher.encrypt.apply(hasher, arguments);
43798 };
43799 };
43800
43801 function init() {
43802 wordlist = WORDLISTS[language];
43803 if (wordlist.length != RADIX) {
43804 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43805 throw err;
43806 }
43807 }
43808
43809 self.generate = function(strength) {
43810 strength = strength || 128;
43811 var r = strength % 32;
43812 if (r > 0) {
43813 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43814 }
43815 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43816 if (!hasStrongCrypto) {
43817 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43818 }
43819 var buffer = new Uint8Array(strength / 8);
43820 var data = crypto.getRandomValues(buffer);
43821 return self.toMnemonic(data);
43822 }
43823
43824 self.toMnemonic = function(byteArray) {
43825 if (byteArray.length % 4 > 0) {
43826 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
43827 }
43828
43829 //h = hashlib.sha256(data).hexdigest()
43830 var data = byteArrayToWordArray(byteArray);
43831 var hash = sjcl.hash.sha256.hash(data);
43832 var h = sjcl.codec.hex.fromBits(hash);
43833
43834 // b is a binary string, eg '00111010101100...'
43835 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43836 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43837 //
43838 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43839 // c = bin(int(h, 16))[2:].zfill(256)
43840 // d = c[:len(data) * 8 / 32]
43841 var a = byteArrayToBinaryString(byteArray);
43842 var c = zfill(hexStringToBinaryString(h), 256);
43843 var d = c.substring(0, byteArray.length * 8 / 32);
43844 // b = line1 + line2
43845 var b = a + d;
43846
43847 var result = [];
43848 var blen = b.length / 11;
43849 for (var i=0; i<blen; i++) {
43850 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
43851 result.push(wordlist[idx]);
43852 }
43853 return self.joinWords(result);
43854 }
43855
43856 self.check = function(mnemonic) {
43857 var mnemonic = self.splitWords(mnemonic);
43858 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
43859 return false
43860 }
43861 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
43862 var idx = [];
43863 for (var i=0; i<mnemonic.length; i++) {
43864 var word = mnemonic[i];
43865 var wordIndex = wordlist.indexOf(word);
43866 if (wordIndex == -1) {
43867 return false;
43868 }
43869 var binaryIndex = zfill(wordIndex.toString(2), 11);
43870 idx.push(binaryIndex);
43871 }
43872 var b = idx.join('');
43873 var l = b.length;
43874 //d = b[:l / 33 * 32]
43875 //h = b[-l / 33:]
43876 var d = b.substring(0, l / 33 * 32);
43877 var h = b.substring(l - l / 33, l);
43878 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
43879 var nd = binaryStringToWordArray(d);
43880 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
43881 var ndHash = sjcl.hash.sha256.hash(nd);
43882 var ndHex = sjcl.codec.hex.fromBits(ndHash);
43883 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
43884 var nh = ndBstr.substring(0,l/33);
43885 return h == nh;
43886 }
43887
43888 self.toSeed = function(mnemonic, passphrase) {
43889 passphrase = passphrase || '';
43890 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
43891 var mnemonicNormalized = self.normalizeString(mnemonic);
43892 passphrase = self.normalizeString(passphrase)
43893 passphrase = "mnemonic" + passphrase;
43894 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
43895 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
43896 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
43897 var hashHex = sjcl.codec.hex.fromBits(result);
43898 return hashHex;
43899 }
43900
43901 self.splitWords = function(mnemonic) {
43902 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
43903 }
43904
43905 self.joinWords = function(words) {
43906 // Set space correctly depending on the language
43907 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
43908 var space = " ";
43909 if (language == "japanese") {
43910 space = "\u3000"; // ideographic space
43911 }
43912 return words.join(space);
43913 }
43914
43915 self.normalizeString = function(str) {
43916 if (typeof str.normalize == "function") {
43917 return str.normalize("NFKD");
43918 }
43919 else {
43920 // TODO decide how to handle this in the future.
43921 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
43922 return str;
43923 }
43924 }
43925
43926 function byteArrayToWordArray(data) {
43927 var a = [];
43928 for (var i=0; i<data.length/4; i++) {
43929 v = 0;
43930 v += data[i*4 + 0] << 8 * 3;
43931 v += data[i*4 + 1] << 8 * 2;
43932 v += data[i*4 + 2] << 8 * 1;
43933 v += data[i*4 + 3] << 8 * 0;
43934 a.push(v);
43935 }
43936 return a;
43937 }
43938
43939 function byteArrayToBinaryString(data) {
43940 var bin = "";
43941 for (var i=0; i<data.length; i++) {
43942 bin += zfill(data[i].toString(2), 8);
43943 }
43944 return bin;
43945 }
43946
43947 function hexStringToBinaryString(hexString) {
43948 binaryString = "";
43949 for (var i=0; i<hexString.length; i++) {
43950 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
43951 }
43952 return binaryString;
43953 }
43954
43955 function binaryStringToWordArray(binary) {
43956 var aLen = binary.length / 32;
43957 var a = [];
43958 for (var i=0; i<aLen; i++) {
43959 var valueStr = binary.substring(0,32);
43960 var value = parseInt(valueStr, 2);
43961 a.push(value);
43962 binary = binary.slice(32);
43963 }
43964 return a;
43965 }
43966
43967 // Pad a numeric string on the left with zero digits until the given width
43968 // is reached.
43969 // Note this differs to the python implementation because it does not
43970 // handle numbers starting with a sign.
43971 function zfill(source, length) {
43972 source = source.toString();
43973 while (source.length < length) {
43974 source = '0' + source;
43975 }
43976 return source;
43977 }
43978
43979 init();
43980
43981 }
43982 </script>
43983 <script>/*
43984 JavaScript BigInteger library version 0.9.1
43985 http://silentmatt.com/biginteger/
43986
43987 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
43988 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
43989 Licensed under the MIT license.
43990
43991 Support for arbitrary internal representation base was added by
43992 Vitaly Magerya.
43993 */
43994
43995 /*
43996 File: biginteger.js
43997
43998 Exports:
43999
44000 <BigInteger>
44001 */
44002 (function(exports) {
44003 "use strict";
44004 /*
44005 Class: BigInteger
44006 An arbitrarily-large integer.
44007
44008 <BigInteger> objects should be considered immutable. None of the "built-in"
44009 methods modify *this* or their arguments. All properties should be
44010 considered private.
44011
44012 All the methods of <BigInteger> instances can be called "statically". The
44013 static versions are convenient if you don't already have a <BigInteger>
44014 object.
44015
44016 As an example, these calls are equivalent.
44017
44018 > BigInteger(4).multiply(5); // returns BigInteger(20);
44019 > BigInteger.multiply(4, 5); // returns BigInteger(20);
44020
44021 > var a = 42;
44022 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
44023 */
44024
44025 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
44026
44027 /*
44028 Constructor: BigInteger()
44029 Convert a value to a <BigInteger>.
44030
44031 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
44032 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
44033 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
44034 without a radix argument.
44035
44036 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
44037 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
44038 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
44039 > var n3 = BigInteger(n2); // Return n2, unchanged
44040
44041 The constructor form only takes an array and a sign. *n* must be an
44042 array of numbers in little-endian order, where each digit is between 0
44043 and BigInteger.base. The second parameter sets the sign: -1 for
44044 negative, +1 for positive, or 0 for zero. The array is *not copied and
44045 may be modified*. If the array contains only zeros, the sign parameter
44046 is ignored and is forced to zero.
44047
44048 > new BigInteger([5], -1): create a new BigInteger with value -5
44049
44050 Parameters:
44051
44052 n - Value to convert to a <BigInteger>.
44053
44054 Returns:
44055
44056 A <BigInteger> value.
44057
44058 See Also:
44059
44060 <parse>, <BigInteger>
44061 */
44062 function BigInteger(n, s, token) {
44063 if (token !== CONSTRUCT) {
44064 if (n instanceof BigInteger) {
44065 return n;
44066 }
44067 else if (typeof n === "undefined") {
44068 return ZERO;
44069 }
44070 return BigInteger.parse(n);
44071 }
44072
44073 n = n || []; // Provide the nullary constructor for subclasses.
44074 while (n.length && !n[n.length - 1]) {
44075 --n.length;
44076 }
44077 this._d = n;
44078 this._s = n.length ? (s || 1) : 0;
44079 }
44080
44081 BigInteger._construct = function(n, s) {
44082 return new BigInteger(n, s, CONSTRUCT);
44083 };
44084
44085 // Base-10 speedup hacks in parse, toString, exp10 and log functions
44086 // require base to be a power of 10. 10^7 is the largest such power
44087 // that won't cause a precision loss when digits are multiplied.
44088 var BigInteger_base = 10000000;
44089 var BigInteger_base_log10 = 7;
44090
44091 BigInteger.base = BigInteger_base;
44092 BigInteger.base_log10 = BigInteger_base_log10;
44093
44094 var ZERO = new BigInteger([], 0, CONSTRUCT);
44095 // Constant: ZERO
44096 // <BigInteger> 0.
44097 BigInteger.ZERO = ZERO;
44098
44099 var ONE = new BigInteger([1], 1, CONSTRUCT);
44100 // Constant: ONE
44101 // <BigInteger> 1.
44102 BigInteger.ONE = ONE;
44103
44104 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44105 // Constant: M_ONE
44106 // <BigInteger> -1.
44107 BigInteger.M_ONE = M_ONE;
44108
44109 // Constant: _0
44110 // Shortcut for <ZERO>.
44111 BigInteger._0 = ZERO;
44112
44113 // Constant: _1
44114 // Shortcut for <ONE>.
44115 BigInteger._1 = ONE;
44116
44117 /*
44118 Constant: small
44119 Array of <BigIntegers> from 0 to 36.
44120
44121 These are used internally for parsing, but useful when you need a "small"
44122 <BigInteger>.
44123
44124 See Also:
44125
44126 <ZERO>, <ONE>, <_0>, <_1>
44127 */
44128 BigInteger.small = [
44129 ZERO,
44130 ONE,
44131 /* Assuming BigInteger_base > 36 */
44132 new BigInteger( [2], 1, CONSTRUCT),
44133 new BigInteger( [3], 1, CONSTRUCT),
44134 new BigInteger( [4], 1, CONSTRUCT),
44135 new BigInteger( [5], 1, CONSTRUCT),
44136 new BigInteger( [6], 1, CONSTRUCT),
44137 new BigInteger( [7], 1, CONSTRUCT),
44138 new BigInteger( [8], 1, CONSTRUCT),
44139 new BigInteger( [9], 1, CONSTRUCT),
44140 new BigInteger([10], 1, CONSTRUCT),
44141 new BigInteger([11], 1, CONSTRUCT),
44142 new BigInteger([12], 1, CONSTRUCT),
44143 new BigInteger([13], 1, CONSTRUCT),
44144 new BigInteger([14], 1, CONSTRUCT),
44145 new BigInteger([15], 1, CONSTRUCT),
44146 new BigInteger([16], 1, CONSTRUCT),
44147 new BigInteger([17], 1, CONSTRUCT),
44148 new BigInteger([18], 1, CONSTRUCT),
44149 new BigInteger([19], 1, CONSTRUCT),
44150 new BigInteger([20], 1, CONSTRUCT),
44151 new BigInteger([21], 1, CONSTRUCT),
44152 new BigInteger([22], 1, CONSTRUCT),
44153 new BigInteger([23], 1, CONSTRUCT),
44154 new BigInteger([24], 1, CONSTRUCT),
44155 new BigInteger([25], 1, CONSTRUCT),
44156 new BigInteger([26], 1, CONSTRUCT),
44157 new BigInteger([27], 1, CONSTRUCT),
44158 new BigInteger([28], 1, CONSTRUCT),
44159 new BigInteger([29], 1, CONSTRUCT),
44160 new BigInteger([30], 1, CONSTRUCT),
44161 new BigInteger([31], 1, CONSTRUCT),
44162 new BigInteger([32], 1, CONSTRUCT),
44163 new BigInteger([33], 1, CONSTRUCT),
44164 new BigInteger([34], 1, CONSTRUCT),
44165 new BigInteger([35], 1, CONSTRUCT),
44166 new BigInteger([36], 1, CONSTRUCT)
44167 ];
44168
44169 // Used for parsing/radix conversion
44170 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44171
44172 /*
44173 Method: toString
44174 Convert a <BigInteger> to a string.
44175
44176 When *base* is greater than 10, letters are upper case.
44177
44178 Parameters:
44179
44180 base - Optional base to represent the number in (default is base 10).
44181 Must be between 2 and 36 inclusive, or an Error will be thrown.
44182
44183 Returns:
44184
44185 The string representation of the <BigInteger>.
44186 */
44187 BigInteger.prototype.toString = function(base) {
44188 base = +base || 10;
44189 if (base < 2 || base > 36) {
44190 throw new Error("illegal radix " + base + ".");
44191 }
44192 if (this._s === 0) {
44193 return "0";
44194 }
44195 if (base === 10) {
44196 var str = this._s < 0 ? "-" : "";
44197 str += this._d[this._d.length - 1].toString();
44198 for (var i = this._d.length - 2; i >= 0; i--) {
44199 var group = this._d[i].toString();
44200 while (group.length < BigInteger_base_log10) group = '0' + group;
44201 str += group;
44202 }
44203 return str;
44204 }
44205 else {
44206 var numerals = BigInteger.digits;
44207 base = BigInteger.small[base];
44208 var sign = this._s;
44209
44210 var n = this.abs();
44211 var digits = [];
44212 var digit;
44213
44214 while (n._s !== 0) {
44215 var divmod = n.divRem(base);
44216 n = divmod[0];
44217 digit = divmod[1];
44218 // TODO: This could be changed to unshift instead of reversing at the end.
44219 // Benchmark both to compare speeds.
44220 digits.push(numerals[digit.valueOf()]);
44221 }
44222 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44223 }
44224 };
44225
44226 // Verify strings for parsing
44227 BigInteger.radixRegex = [
44228 /^$/,
44229 /^$/,
44230 /^[01]*$/,
44231 /^[012]*$/,
44232 /^[0-3]*$/,
44233 /^[0-4]*$/,
44234 /^[0-5]*$/,
44235 /^[0-6]*$/,
44236 /^[0-7]*$/,
44237 /^[0-8]*$/,
44238 /^[0-9]*$/,
44239 /^[0-9aA]*$/,
44240 /^[0-9abAB]*$/,
44241 /^[0-9abcABC]*$/,
44242 /^[0-9a-dA-D]*$/,
44243 /^[0-9a-eA-E]*$/,
44244 /^[0-9a-fA-F]*$/,
44245 /^[0-9a-gA-G]*$/,
44246 /^[0-9a-hA-H]*$/,
44247 /^[0-9a-iA-I]*$/,
44248 /^[0-9a-jA-J]*$/,
44249 /^[0-9a-kA-K]*$/,
44250 /^[0-9a-lA-L]*$/,
44251 /^[0-9a-mA-M]*$/,
44252 /^[0-9a-nA-N]*$/,
44253 /^[0-9a-oA-O]*$/,
44254 /^[0-9a-pA-P]*$/,
44255 /^[0-9a-qA-Q]*$/,
44256 /^[0-9a-rA-R]*$/,
44257 /^[0-9a-sA-S]*$/,
44258 /^[0-9a-tA-T]*$/,
44259 /^[0-9a-uA-U]*$/,
44260 /^[0-9a-vA-V]*$/,
44261 /^[0-9a-wA-W]*$/,
44262 /^[0-9a-xA-X]*$/,
44263 /^[0-9a-yA-Y]*$/,
44264 /^[0-9a-zA-Z]*$/
44265 ];
44266
44267 /*
44268 Function: parse
44269 Parse a string into a <BigInteger>.
44270
44271 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44272 *base* is not provided, it will be guessed based on the leading characters
44273 of *s* as follows:
44274
44275 - "0x" or "0X": *base* = 16
44276 - "0c" or "0C": *base* = 8
44277 - "0b" or "0B": *base* = 2
44278 - else: *base* = 10
44279
44280 If no base is provided, or *base* is 10, the number can be in exponential
44281 form. For example, these are all valid:
44282
44283 > BigInteger.parse("1e9"); // Same as "1000000000"
44284 > BigInteger.parse("1.234*10^3"); // Same as 1234
44285 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44286
44287 If any characters fall outside the range defined by the radix, an exception
44288 will be thrown.
44289
44290 Parameters:
44291
44292 s - The string to parse.
44293 base - Optional radix (default is to guess based on *s*).
44294
44295 Returns:
44296
44297 a <BigInteger> instance.
44298 */
44299 BigInteger.parse = function(s, base) {
44300 // Expands a number in exponential form to decimal form.
44301 // expandExponential("-13.441*10^5") === "1344100";
44302 // expandExponential("1.12300e-1") === "0.112300";
44303 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44304 function expandExponential(str) {
44305 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44306
44307 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44308 c = +c;
44309 var l = c < 0;
44310 var i = n.length + c;
44311 x = (l ? n : f).length;
44312 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44313 var z = (new Array(c + 1)).join("0");
44314 var r = n + f;
44315 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44316 });
44317 }
44318
44319 s = s.toString();
44320 if (typeof base === "undefined" || +base === 10) {
44321 s = expandExponential(s);
44322 }
44323
44324 var prefixRE;
44325 if (typeof base === "undefined") {
44326 prefixRE = '0[xcb]';
44327 }
44328 else if (base == 16) {
44329 prefixRE = '0x';
44330 }
44331 else if (base == 8) {
44332 prefixRE = '0c';
44333 }
44334 else if (base == 2) {
44335 prefixRE = '0b';
44336 }
44337 else {
44338 prefixRE = '';
44339 }
44340 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44341 if (parts) {
44342 var sign = parts[1] || "+";
44343 var baseSection = parts[2] || "";
44344 var digits = parts[3] || "";
44345
44346 if (typeof base === "undefined") {
44347 // Guess base
44348 if (baseSection === "0x" || baseSection === "0X") { // Hex
44349 base = 16;
44350 }
44351 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44352 base = 8;
44353 }
44354 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44355 base = 2;
44356 }
44357 else {
44358 base = 10;
44359 }
44360 }
44361 else if (base < 2 || base > 36) {
44362 throw new Error("Illegal radix " + base + ".");
44363 }
44364
44365 base = +base;
44366
44367 // Check for digits outside the range
44368 if (!(BigInteger.radixRegex[base].test(digits))) {
44369 throw new Error("Bad digit for radix " + base);
44370 }
44371
44372 // Strip leading zeros, and convert to array
44373 digits = digits.replace(/^0+/, "").split("");
44374 if (digits.length === 0) {
44375 return ZERO;
44376 }
44377
44378 // Get the sign (we know it's not zero)
44379 sign = (sign === "-") ? -1 : 1;
44380
44381 // Optimize 10
44382 if (base == 10) {
44383 var d = [];
44384 while (digits.length >= BigInteger_base_log10) {
44385 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44386 }
44387 d.push(parseInt(digits.join(''), 10));
44388 return new BigInteger(d, sign, CONSTRUCT);
44389 }
44390
44391 // Do the conversion
44392 var d = ZERO;
44393 base = BigInteger.small[base];
44394 var small = BigInteger.small;
44395 for (var i = 0; i < digits.length; i++) {
44396 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44397 }
44398 return new BigInteger(d._d, sign, CONSTRUCT);
44399 }
44400 else {
44401 throw new Error("Invalid BigInteger format: " + s);
44402 }
44403 };
44404
44405 /*
44406 Function: add
44407 Add two <BigIntegers>.
44408
44409 Parameters:
44410
44411 n - The number to add to *this*. Will be converted to a <BigInteger>.
44412
44413 Returns:
44414
44415 The numbers added together.
44416
44417 See Also:
44418
44419 <subtract>, <multiply>, <quotient>, <next>
44420 */
44421 BigInteger.prototype.add = function(n) {
44422 if (this._s === 0) {
44423 return BigInteger(n);
44424 }
44425
44426 n = BigInteger(n);
44427 if (n._s === 0) {
44428 return this;
44429 }
44430 if (this._s !== n._s) {
44431 n = n.negate();
44432 return this.subtract(n);
44433 }
44434
44435 var a = this._d;
44436 var b = n._d;
44437 var al = a.length;
44438 var bl = b.length;
44439 var sum = new Array(Math.max(al, bl) + 1);
44440 var size = Math.min(al, bl);
44441 var carry = 0;
44442 var digit;
44443
44444 for (var i = 0; i < size; i++) {
44445 digit = a[i] + b[i] + carry;
44446 sum[i] = digit % BigInteger_base;
44447 carry = (digit / BigInteger_base) | 0;
44448 }
44449 if (bl > al) {
44450 a = b;
44451 al = bl;
44452 }
44453 for (i = size; carry && i < al; i++) {
44454 digit = a[i] + carry;
44455 sum[i] = digit % BigInteger_base;
44456 carry = (digit / BigInteger_base) | 0;
44457 }
44458 if (carry) {
44459 sum[i] = carry;
44460 }
44461
44462 for ( ; i < al; i++) {
44463 sum[i] = a[i];
44464 }
44465
44466 return new BigInteger(sum, this._s, CONSTRUCT);
44467 };
44468
44469 /*
44470 Function: negate
44471 Get the additive inverse of a <BigInteger>.
44472
44473 Returns:
44474
44475 A <BigInteger> with the same magnatude, but with the opposite sign.
44476
44477 See Also:
44478
44479 <abs>
44480 */
44481 BigInteger.prototype.negate = function() {
44482 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44483 };
44484
44485 /*
44486 Function: abs
44487 Get the absolute value of a <BigInteger>.
44488
44489 Returns:
44490
44491 A <BigInteger> with the same magnatude, but always positive (or zero).
44492
44493 See Also:
44494
44495 <negate>
44496 */
44497 BigInteger.prototype.abs = function() {
44498 return (this._s < 0) ? this.negate() : this;
44499 };
44500
44501 /*
44502 Function: subtract
44503 Subtract two <BigIntegers>.
44504
44505 Parameters:
44506
44507 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44508
44509 Returns:
44510
44511 The *n* subtracted from *this*.
44512
44513 See Also:
44514
44515 <add>, <multiply>, <quotient>, <prev>
44516 */
44517 BigInteger.prototype.subtract = function(n) {
44518 if (this._s === 0) {
44519 return BigInteger(n).negate();
44520 }
44521
44522 n = BigInteger(n);
44523 if (n._s === 0) {
44524 return this;
44525 }
44526 if (this._s !== n._s) {
44527 n = n.negate();
44528 return this.add(n);
44529 }
44530
44531 var m = this;
44532 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44533 if (this._s < 0) {
44534 m = new BigInteger(n._d, 1, CONSTRUCT);
44535 n = new BigInteger(this._d, 1, CONSTRUCT);
44536 }
44537
44538 // Both are positive => a - b
44539 var sign = m.compareAbs(n);
44540 if (sign === 0) {
44541 return ZERO;
44542 }
44543 else if (sign < 0) {
44544 // swap m and n
44545 var t = n;
44546 n = m;
44547 m = t;
44548 }
44549
44550 // a > b
44551 var a = m._d;
44552 var b = n._d;
44553 var al = a.length;
44554 var bl = b.length;
44555 var diff = new Array(al); // al >= bl since a > b
44556 var borrow = 0;
44557 var i;
44558 var digit;
44559
44560 for (i = 0; i < bl; i++) {
44561 digit = a[i] - borrow - b[i];
44562 if (digit < 0) {
44563 digit += BigInteger_base;
44564 borrow = 1;
44565 }
44566 else {
44567 borrow = 0;
44568 }
44569 diff[i] = digit;
44570 }
44571 for (i = bl; i < al; i++) {
44572 digit = a[i] - borrow;
44573 if (digit < 0) {
44574 digit += BigInteger_base;
44575 }
44576 else {
44577 diff[i++] = digit;
44578 break;
44579 }
44580 diff[i] = digit;
44581 }
44582 for ( ; i < al; i++) {
44583 diff[i] = a[i];
44584 }
44585
44586 return new BigInteger(diff, sign, CONSTRUCT);
44587 };
44588
44589 (function() {
44590 function addOne(n, sign) {
44591 var a = n._d;
44592 var sum = a.slice();
44593 var carry = true;
44594 var i = 0;
44595
44596 while (true) {
44597 var digit = (a[i] || 0) + 1;
44598 sum[i] = digit % BigInteger_base;
44599 if (digit <= BigInteger_base - 1) {
44600 break;
44601 }
44602 ++i;
44603 }
44604
44605 return new BigInteger(sum, sign, CONSTRUCT);
44606 }
44607
44608 function subtractOne(n, sign) {
44609 var a = n._d;
44610 var sum = a.slice();
44611 var borrow = true;
44612 var i = 0;
44613
44614 while (true) {
44615 var digit = (a[i] || 0) - 1;
44616 if (digit < 0) {
44617 sum[i] = digit + BigInteger_base;
44618 }
44619 else {
44620 sum[i] = digit;
44621 break;
44622 }
44623 ++i;
44624 }
44625
44626 return new BigInteger(sum, sign, CONSTRUCT);
44627 }
44628
44629 /*
44630 Function: next
44631 Get the next <BigInteger> (add one).
44632
44633 Returns:
44634
44635 *this* + 1.
44636
44637 See Also:
44638
44639 <add>, <prev>
44640 */
44641 BigInteger.prototype.next = function() {
44642 switch (this._s) {
44643 case 0:
44644 return ONE;
44645 case -1:
44646 return subtractOne(this, -1);
44647 // case 1:
44648 default:
44649 return addOne(this, 1);
44650 }
44651 };
44652
44653 /*
44654 Function: prev
44655 Get the previous <BigInteger> (subtract one).
44656
44657 Returns:
44658
44659 *this* - 1.
44660
44661 See Also:
44662
44663 <next>, <subtract>
44664 */
44665 BigInteger.prototype.prev = function() {
44666 switch (this._s) {
44667 case 0:
44668 return M_ONE;
44669 case -1:
44670 return addOne(this, -1);
44671 // case 1:
44672 default:
44673 return subtractOne(this, 1);
44674 }
44675 };
44676 })();
44677
44678 /*
44679 Function: compareAbs
44680 Compare the absolute value of two <BigIntegers>.
44681
44682 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44683
44684 Parameters:
44685
44686 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44687
44688 Returns:
44689
44690 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44691
44692 See Also:
44693
44694 <compare>, <abs>
44695 */
44696 BigInteger.prototype.compareAbs = function(n) {
44697 if (this === n) {
44698 return 0;
44699 }
44700
44701 if (!(n instanceof BigInteger)) {
44702 if (!isFinite(n)) {
44703 return(isNaN(n) ? n : -1);
44704 }
44705 n = BigInteger(n);
44706 }
44707
44708 if (this._s === 0) {
44709 return (n._s !== 0) ? -1 : 0;
44710 }
44711 if (n._s === 0) {
44712 return 1;
44713 }
44714
44715 var l = this._d.length;
44716 var nl = n._d.length;
44717 if (l < nl) {
44718 return -1;
44719 }
44720 else if (l > nl) {
44721 return 1;
44722 }
44723
44724 var a = this._d;
44725 var b = n._d;
44726 for (var i = l-1; i >= 0; i--) {
44727 if (a[i] !== b[i]) {
44728 return a[i] < b[i] ? -1 : 1;
44729 }
44730 }
44731
44732 return 0;
44733 };
44734
44735 /*
44736 Function: compare
44737 Compare two <BigIntegers>.
44738
44739 Parameters:
44740
44741 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44742
44743 Returns:
44744
44745 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44746
44747 See Also:
44748
44749 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44750 */
44751 BigInteger.prototype.compare = function(n) {
44752 if (this === n) {
44753 return 0;
44754 }
44755
44756 n = BigInteger(n);
44757
44758 if (this._s === 0) {
44759 return -n._s;
44760 }
44761
44762 if (this._s === n._s) { // both positive or both negative
44763 var cmp = this.compareAbs(n);
44764 return cmp * this._s;
44765 }
44766 else {
44767 return this._s;
44768 }
44769 };
44770
44771 /*
44772 Function: isUnit
44773 Return true iff *this* is either 1 or -1.
44774
44775 Returns:
44776
44777 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44778
44779 See Also:
44780
44781 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44782 <BigInteger.ONE>, <BigInteger.M_ONE>
44783 */
44784 BigInteger.prototype.isUnit = function() {
44785 return this === ONE ||
44786 this === M_ONE ||
44787 (this._d.length === 1 && this._d[0] === 1);
44788 };
44789
44790 /*
44791 Function: multiply
44792 Multiply two <BigIntegers>.
44793
44794 Parameters:
44795
44796 n - The number to multiply *this* by. Will be converted to a
44797 <BigInteger>.
44798
44799 Returns:
44800
44801 The numbers multiplied together.
44802
44803 See Also:
44804
44805 <add>, <subtract>, <quotient>, <square>
44806 */
44807 BigInteger.prototype.multiply = function(n) {
44808 // TODO: Consider adding Karatsuba multiplication for large numbers
44809 if (this._s === 0) {
44810 return ZERO;
44811 }
44812
44813 n = BigInteger(n);
44814 if (n._s === 0) {
44815 return ZERO;
44816 }
44817 if (this.isUnit()) {
44818 if (this._s < 0) {
44819 return n.negate();
44820 }
44821 return n;
44822 }
44823 if (n.isUnit()) {
44824 if (n._s < 0) {
44825 return this.negate();
44826 }
44827 return this;
44828 }
44829 if (this === n) {
44830 return this.square();
44831 }
44832
44833 var r = (this._d.length >= n._d.length);
44834 var a = (r ? this : n)._d; // a will be longer than b
44835 var b = (r ? n : this)._d;
44836 var al = a.length;
44837 var bl = b.length;
44838
44839 var pl = al + bl;
44840 var partial = new Array(pl);
44841 var i;
44842 for (i = 0; i < pl; i++) {
44843 partial[i] = 0;
44844 }
44845
44846 for (i = 0; i < bl; i++) {
44847 var carry = 0;
44848 var bi = b[i];
44849 var jlimit = al + i;
44850 var digit;
44851 for (var j = i; j < jlimit; j++) {
44852 digit = partial[j] + bi * a[j - i] + carry;
44853 carry = (digit / BigInteger_base) | 0;
44854 partial[j] = (digit % BigInteger_base) | 0;
44855 }
44856 if (carry) {
44857 digit = partial[j] + carry;
44858 carry = (digit / BigInteger_base) | 0;
44859 partial[j] = digit % BigInteger_base;
44860 }
44861 }
44862 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
44863 };
44864
44865 // Multiply a BigInteger by a single-digit native number
44866 // Assumes that this and n are >= 0
44867 // This is not really intended to be used outside the library itself
44868 BigInteger.prototype.multiplySingleDigit = function(n) {
44869 if (n === 0 || this._s === 0) {
44870 return ZERO;
44871 }
44872 if (n === 1) {
44873 return this;
44874 }
44875
44876 var digit;
44877 if (this._d.length === 1) {
44878 digit = this._d[0] * n;
44879 if (digit >= BigInteger_base) {
44880 return new BigInteger([(digit % BigInteger_base)|0,
44881 (digit / BigInteger_base)|0], 1, CONSTRUCT);
44882 }
44883 return new BigInteger([digit], 1, CONSTRUCT);
44884 }
44885
44886 if (n === 2) {
44887 return this.add(this);
44888 }
44889 if (this.isUnit()) {
44890 return new BigInteger([n], 1, CONSTRUCT);
44891 }
44892
44893 var a = this._d;
44894 var al = a.length;
44895
44896 var pl = al + 1;
44897 var partial = new Array(pl);
44898 for (var i = 0; i < pl; i++) {
44899 partial[i] = 0;
44900 }
44901
44902 var carry = 0;
44903 for (var j = 0; j < al; j++) {
44904 digit = n * a[j] + carry;
44905 carry = (digit / BigInteger_base) | 0;
44906 partial[j] = (digit % BigInteger_base) | 0;
44907 }
44908 if (carry) {
44909 partial[j] = carry;
44910 }
44911
44912 return new BigInteger(partial, 1, CONSTRUCT);
44913 };
44914
44915 /*
44916 Function: square
44917 Multiply a <BigInteger> by itself.
44918
44919 This is slightly faster than regular multiplication, since it removes the
44920 duplicated multiplcations.
44921
44922 Returns:
44923
44924 > this.multiply(this)
44925
44926 See Also:
44927 <multiply>
44928 */
44929 BigInteger.prototype.square = function() {
44930 // Normally, squaring a 10-digit number would take 100 multiplications.
44931 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
44932 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
44933 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
44934
44935 if (this._s === 0) {
44936 return ZERO;
44937 }
44938 if (this.isUnit()) {
44939 return ONE;
44940 }
44941
44942 var digits = this._d;
44943 var length = digits.length;
44944 var imult1 = new Array(length + length + 1);
44945 var product, carry, k;
44946 var i;
44947
44948 // Calculate diagonal
44949 for (i = 0; i < length; i++) {
44950 k = i * 2;
44951 product = digits[i] * digits[i];
44952 carry = (product / BigInteger_base) | 0;
44953 imult1[k] = product % BigInteger_base;
44954 imult1[k + 1] = carry;
44955 }
44956
44957 // Calculate repeating part
44958 for (i = 0; i < length; i++) {
44959 carry = 0;
44960 k = i * 2 + 1;
44961 for (var j = i + 1; j < length; j++, k++) {
44962 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
44963 carry = (product / BigInteger_base) | 0;
44964 imult1[k] = product % BigInteger_base;
44965 }
44966 k = length + i;
44967 var digit = carry + imult1[k];
44968 carry = (digit / BigInteger_base) | 0;
44969 imult1[k] = digit % BigInteger_base;
44970 imult1[k + 1] += carry;
44971 }
44972
44973 return new BigInteger(imult1, 1, CONSTRUCT);
44974 };
44975
44976 /*
44977 Function: quotient
44978 Divide two <BigIntegers> and truncate towards zero.
44979
44980 <quotient> throws an exception if *n* is zero.
44981
44982 Parameters:
44983
44984 n - The number to divide *this* by. Will be converted to a <BigInteger>.
44985
44986 Returns:
44987
44988 The *this* / *n*, truncated to an integer.
44989
44990 See Also:
44991
44992 <add>, <subtract>, <multiply>, <divRem>, <remainder>
44993 */
44994 BigInteger.prototype.quotient = function(n) {
44995 return this.divRem(n)[0];
44996 };
44997
44998 /*
44999 Function: divide
45000 Deprecated synonym for <quotient>.
45001 */
45002 BigInteger.prototype.divide = BigInteger.prototype.quotient;
45003
45004 /*
45005 Function: remainder
45006 Calculate the remainder of two <BigIntegers>.
45007
45008 <remainder> throws an exception if *n* is zero.
45009
45010 Parameters:
45011
45012 n - The remainder after *this* is divided *this* by *n*. Will be
45013 converted to a <BigInteger>.
45014
45015 Returns:
45016
45017 *this* % *n*.
45018
45019 See Also:
45020
45021 <divRem>, <quotient>
45022 */
45023 BigInteger.prototype.remainder = function(n) {
45024 return this.divRem(n)[1];
45025 };
45026
45027 /*
45028 Function: divRem
45029 Calculate the integer quotient and remainder of two <BigIntegers>.
45030
45031 <divRem> throws an exception if *n* is zero.
45032
45033 Parameters:
45034
45035 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45036
45037 Returns:
45038
45039 A two-element array containing the quotient and the remainder.
45040
45041 > a.divRem(b)
45042
45043 is exactly equivalent to
45044
45045 > [a.quotient(b), a.remainder(b)]
45046
45047 except it is faster, because they are calculated at the same time.
45048
45049 See Also:
45050
45051 <quotient>, <remainder>
45052 */
45053 BigInteger.prototype.divRem = function(n) {
45054 n = BigInteger(n);
45055 if (n._s === 0) {
45056 throw new Error("Divide by zero");
45057 }
45058 if (this._s === 0) {
45059 return [ZERO, ZERO];
45060 }
45061 if (n._d.length === 1) {
45062 return this.divRemSmall(n._s * n._d[0]);
45063 }
45064
45065 // Test for easy cases -- |n1| <= |n2|
45066 switch (this.compareAbs(n)) {
45067 case 0: // n1 == n2
45068 return [this._s === n._s ? ONE : M_ONE, ZERO];
45069 case -1: // |n1| < |n2|
45070 return [ZERO, this];
45071 }
45072
45073 var sign = this._s * n._s;
45074 var a = n.abs();
45075 var b_digits = this._d;
45076 var b_index = b_digits.length;
45077 var digits = n._d.length;
45078 var quot = [];
45079 var guess;
45080
45081 var part = new BigInteger([], 0, CONSTRUCT);
45082
45083 while (b_index) {
45084 part._d.unshift(b_digits[--b_index]);
45085 part = new BigInteger(part._d, 1, CONSTRUCT);
45086
45087 if (part.compareAbs(n) < 0) {
45088 quot.push(0);
45089 continue;
45090 }
45091 if (part._s === 0) {
45092 guess = 0;
45093 }
45094 else {
45095 var xlen = part._d.length, ylen = a._d.length;
45096 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45097 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45098 if (part._d.length > a._d.length) {
45099 // The length of part._d can either match a._d length,
45100 // or exceed it by one.
45101 highx = (highx+1)*BigInteger_base;
45102 }
45103 guess = Math.ceil(highx/highy);
45104 }
45105 do {
45106 var check = a.multiplySingleDigit(guess);
45107 if (check.compareAbs(part) <= 0) {
45108 break;
45109 }
45110 guess--;
45111 } while (guess);
45112
45113 quot.push(guess);
45114 if (!guess) {
45115 continue;
45116 }
45117 var diff = part.subtract(check);
45118 part._d = diff._d.slice();
45119 }
45120
45121 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45122 new BigInteger(part._d, this._s, CONSTRUCT)];
45123 };
45124
45125 // Throws an exception if n is outside of (-BigInteger.base, -1] or
45126 // [1, BigInteger.base). It's not necessary to call this, since the
45127 // other division functions will call it if they are able to.
45128 BigInteger.prototype.divRemSmall = function(n) {
45129 var r;
45130 n = +n;
45131 if (n === 0) {
45132 throw new Error("Divide by zero");
45133 }
45134
45135 var n_s = n < 0 ? -1 : 1;
45136 var sign = this._s * n_s;
45137 n = Math.abs(n);
45138
45139 if (n < 1 || n >= BigInteger_base) {
45140 throw new Error("Argument out of range");
45141 }
45142
45143 if (this._s === 0) {
45144 return [ZERO, ZERO];
45145 }
45146
45147 if (n === 1 || n === -1) {
45148 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45149 }
45150
45151 // 2 <= n < BigInteger_base
45152
45153 // divide a single digit by a single digit
45154 if (this._d.length === 1) {
45155 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45156 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45157 if (sign < 0) {
45158 q = q.negate();
45159 }
45160 if (this._s < 0) {
45161 r = r.negate();
45162 }
45163 return [q, r];
45164 }
45165
45166 var digits = this._d.slice();
45167 var quot = new Array(digits.length);
45168 var part = 0;
45169 var diff = 0;
45170 var i = 0;
45171 var guess;
45172
45173 while (digits.length) {
45174 part = part * BigInteger_base + digits[digits.length - 1];
45175 if (part < n) {
45176 quot[i++] = 0;
45177 digits.pop();
45178 diff = BigInteger_base * diff + part;
45179 continue;
45180 }
45181 if (part === 0) {
45182 guess = 0;
45183 }
45184 else {
45185 guess = (part / n) | 0;
45186 }
45187
45188 var check = n * guess;
45189 diff = part - check;
45190 quot[i++] = guess;
45191 if (!guess) {
45192 digits.pop();
45193 continue;
45194 }
45195
45196 digits.pop();
45197 part = diff;
45198 }
45199
45200 r = new BigInteger([diff], 1, CONSTRUCT);
45201 if (this._s < 0) {
45202 r = r.negate();
45203 }
45204 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45205 };
45206
45207 /*
45208 Function: isEven
45209 Return true iff *this* is divisible by two.
45210
45211 Note that <BigInteger.ZERO> is even.
45212
45213 Returns:
45214
45215 true if *this* is even, false otherwise.
45216
45217 See Also:
45218
45219 <isOdd>
45220 */
45221 BigInteger.prototype.isEven = function() {
45222 var digits = this._d;
45223 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45224 };
45225
45226 /*
45227 Function: isOdd
45228 Return true iff *this* is not divisible by two.
45229
45230 Returns:
45231
45232 true if *this* is odd, false otherwise.
45233
45234 See Also:
45235
45236 <isEven>
45237 */
45238 BigInteger.prototype.isOdd = function() {
45239 return !this.isEven();
45240 };
45241
45242 /*
45243 Function: sign
45244 Get the sign of a <BigInteger>.
45245
45246 Returns:
45247
45248 * -1 if *this* < 0
45249 * 0 if *this* == 0
45250 * +1 if *this* > 0
45251
45252 See Also:
45253
45254 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45255 */
45256 BigInteger.prototype.sign = function() {
45257 return this._s;
45258 };
45259
45260 /*
45261 Function: isPositive
45262 Return true iff *this* > 0.
45263
45264 Returns:
45265
45266 true if *this*.compare(<BigInteger.ZERO>) == 1.
45267
45268 See Also:
45269
45270 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45271 */
45272 BigInteger.prototype.isPositive = function() {
45273 return this._s > 0;
45274 };
45275
45276 /*
45277 Function: isNegative
45278 Return true iff *this* < 0.
45279
45280 Returns:
45281
45282 true if *this*.compare(<BigInteger.ZERO>) == -1.
45283
45284 See Also:
45285
45286 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45287 */
45288 BigInteger.prototype.isNegative = function() {
45289 return this._s < 0;
45290 };
45291
45292 /*
45293 Function: isZero
45294 Return true iff *this* == 0.
45295
45296 Returns:
45297
45298 true if *this*.compare(<BigInteger.ZERO>) == 0.
45299
45300 See Also:
45301
45302 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45303 */
45304 BigInteger.prototype.isZero = function() {
45305 return this._s === 0;
45306 };
45307
45308 /*
45309 Function: exp10
45310 Multiply a <BigInteger> by a power of 10.
45311
45312 This is equivalent to, but faster than
45313
45314 > if (n >= 0) {
45315 > return this.multiply(BigInteger("1e" + n));
45316 > }
45317 > else { // n <= 0
45318 > return this.quotient(BigInteger("1e" + -n));
45319 > }
45320
45321 Parameters:
45322
45323 n - The power of 10 to multiply *this* by. *n* is converted to a
45324 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45325 (0x7FFFFFFF), or an exception will be thrown.
45326
45327 Returns:
45328
45329 *this* * (10 ** *n*), truncated to an integer if necessary.
45330
45331 See Also:
45332
45333 <pow>, <multiply>
45334 */
45335 BigInteger.prototype.exp10 = function(n) {
45336 n = +n;
45337 if (n === 0) {
45338 return this;
45339 }
45340 if (Math.abs(n) > Number(MAX_EXP)) {
45341 throw new Error("exponent too large in BigInteger.exp10");
45342 }
45343 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45344 if (this._s === 0) {
45345 return ZERO;
45346 }
45347 if (n > 0) {
45348 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45349
45350 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45351 k._d.unshift(0);
45352 }
45353 if (n == 0)
45354 return k;
45355 k._s = 1;
45356 k = k.multiplySingleDigit(Math.pow(10, n));
45357 return (this._s < 0 ? k.negate() : k);
45358 } else if (-n >= this._d.length*BigInteger_base_log10) {
45359 return ZERO;
45360 } else {
45361 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45362
45363 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45364 k._d.shift();
45365 }
45366 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45367 }
45368 };
45369
45370 /*
45371 Function: pow
45372 Raise a <BigInteger> to a power.
45373
45374 In this implementation, 0**0 is 1.
45375
45376 Parameters:
45377
45378 n - The exponent to raise *this* by. *n* must be no greater than
45379 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45380
45381 Returns:
45382
45383 *this* raised to the *nth* power.
45384
45385 See Also:
45386
45387 <modPow>
45388 */
45389 BigInteger.prototype.pow = function(n) {
45390 if (this.isUnit()) {
45391 if (this._s > 0) {
45392 return this;
45393 }
45394 else {
45395 return BigInteger(n).isOdd() ? this : this.negate();
45396 }
45397 }
45398
45399 n = BigInteger(n);
45400 if (n._s === 0) {
45401 return ONE;
45402 }
45403 else if (n._s < 0) {
45404 if (this._s === 0) {
45405 throw new Error("Divide by zero");
45406 }
45407 else {
45408 return ZERO;
45409 }
45410 }
45411 if (this._s === 0) {
45412 return ZERO;
45413 }
45414 if (n.isUnit()) {
45415 return this;
45416 }
45417
45418 if (n.compareAbs(MAX_EXP) > 0) {
45419 throw new Error("exponent too large in BigInteger.pow");
45420 }
45421 var x = this;
45422 var aux = ONE;
45423 var two = BigInteger.small[2];
45424
45425 while (n.isPositive()) {
45426 if (n.isOdd()) {
45427 aux = aux.multiply(x);
45428 if (n.isUnit()) {
45429 return aux;
45430 }
45431 }
45432 x = x.square();
45433 n = n.quotient(two);
45434 }
45435
45436 return aux;
45437 };
45438
45439 /*
45440 Function: modPow
45441 Raise a <BigInteger> to a power (mod m).
45442
45443 Because it is reduced by a modulus, <modPow> is not limited by
45444 <BigInteger.MAX_EXP> like <pow>.
45445
45446 Parameters:
45447
45448 exponent - The exponent to raise *this* by. Must be positive.
45449 modulus - The modulus.
45450
45451 Returns:
45452
45453 *this* ^ *exponent* (mod *modulus*).
45454
45455 See Also:
45456
45457 <pow>, <mod>
45458 */
45459 BigInteger.prototype.modPow = function(exponent, modulus) {
45460 var result = ONE;
45461 var base = this;
45462
45463 while (exponent.isPositive()) {
45464 if (exponent.isOdd()) {
45465 result = result.multiply(base).remainder(modulus);
45466 }
45467
45468 exponent = exponent.quotient(BigInteger.small[2]);
45469 if (exponent.isPositive()) {
45470 base = base.square().remainder(modulus);
45471 }
45472 }
45473
45474 return result;
45475 };
45476
45477 /*
45478 Function: log
45479 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45480
45481 This is equivalent to
45482
45483 > Math.log(this.toJSValue())
45484
45485 but handles values outside of the native number range.
45486
45487 Returns:
45488
45489 log( *this* )
45490
45491 See Also:
45492
45493 <toJSValue>
45494 */
45495 BigInteger.prototype.log = function() {
45496 switch (this._s) {
45497 case 0: return -Infinity;
45498 case -1: return NaN;
45499 default: // Fall through.
45500 }
45501
45502 var l = this._d.length;
45503
45504 if (l*BigInteger_base_log10 < 30) {
45505 return Math.log(this.valueOf());
45506 }
45507
45508 var N = Math.ceil(30/BigInteger_base_log10);
45509 var firstNdigits = this._d.slice(l - N);
45510 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45511 };
45512
45513 /*
45514 Function: valueOf
45515 Convert a <BigInteger> to a native JavaScript integer.
45516
45517 This is called automatically by JavaScipt to convert a <BigInteger> to a
45518 native value.
45519
45520 Returns:
45521
45522 > parseInt(this.toString(), 10)
45523
45524 See Also:
45525
45526 <toString>, <toJSValue>
45527 */
45528 BigInteger.prototype.valueOf = function() {
45529 return parseInt(this.toString(), 10);
45530 };
45531
45532 /*
45533 Function: toJSValue
45534 Convert a <BigInteger> to a native JavaScript integer.
45535
45536 This is the same as valueOf, but more explicitly named.
45537
45538 Returns:
45539
45540 > parseInt(this.toString(), 10)
45541
45542 See Also:
45543
45544 <toString>, <valueOf>
45545 */
45546 BigInteger.prototype.toJSValue = function() {
45547 return parseInt(this.toString(), 10);
45548 };
45549
45550 var MAX_EXP = BigInteger(0x7FFFFFFF);
45551 // Constant: MAX_EXP
45552 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45553 BigInteger.MAX_EXP = MAX_EXP;
45554
45555 (function() {
45556 function makeUnary(fn) {
45557 return function(a) {
45558 return fn.call(BigInteger(a));
45559 };
45560 }
45561
45562 function makeBinary(fn) {
45563 return function(a, b) {
45564 return fn.call(BigInteger(a), BigInteger(b));
45565 };
45566 }
45567
45568 function makeTrinary(fn) {
45569 return function(a, b, c) {
45570 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45571 };
45572 }
45573
45574 (function() {
45575 var i, fn;
45576 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45577 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45578 var trinary = ["modPow"];
45579
45580 for (i = 0; i < unary.length; i++) {
45581 fn = unary[i];
45582 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45583 }
45584
45585 for (i = 0; i < binary.length; i++) {
45586 fn = binary[i];
45587 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45588 }
45589
45590 for (i = 0; i < trinary.length; i++) {
45591 fn = trinary[i];
45592 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45593 }
45594
45595 BigInteger.exp10 = function(x, n) {
45596 return BigInteger(x).exp10(n);
45597 };
45598 })();
45599 })();
45600
45601 exports.BigInteger = BigInteger;
45602 })(typeof exports !== 'undefined' ? exports : this);
45603 </script>
45604 <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){
45605 var adjacency_graphs;adjacency_graphs={qwerty:{"!":["`~",null,null,"2@","qQ",null],'"':[";:","[{","]}",null,null,"/?"],"#":["2@",null,null,"4$","eE","wW"],$:["3#",null,null,"5%","rR","eE"],"%":["4$",null,null,"6^","tT","rR"],"&":["6^",null,null,"8*","uU","yY"],"'":[";:","[{","]}",null,null,"/?"],"(":["8*",null,null,"0)","oO","iI"],")":["9(",null,null,"-_","pP","oO"],"*":["7&",null,null,"9(","iI","uU"],"+":["-_",null,null,null,"]}","[{"],",":["mM","kK","lL",".>",null,null],"-":["0)",null,null,"=+","[{","pP"],".":[",<","lL",";:","/?",null,null],"/":[".>",";:","'\"",null,null,null],0:["9(",null,null,"-_","pP","oO"],1:["`~",null,null,"2@","qQ",null],2:["1!",null,null,"3#","wW","qQ"],3:["2@",null,null,"4$","eE","wW"],4:["3#",null,null,"5%","rR","eE"],5:["4$",null,null,"6^","tT","rR"],6:["5%",null,null,"7&","yY","tT"],7:["6^",null,null,"8*","uU","yY"],8:["7&",null,null,"9(","iI","uU"],9:["8*",null,null,"0)","oO","iI"],":":["lL","pP","[{","'\"","/?",".>"],";":["lL","pP","[{","'\"","/?",".>"],"<":["mM","kK","lL",".>",null,null],"=":["-_",null,null,null,"]}","[{"],">":[",<","lL",";:","/?",null,null],"?":[".>",";:","'\"",null,null,null],"@":["1!",null,null,"3#","wW","qQ"],A:[null,"qQ","wW","sS","zZ",null],B:["vV","gG","hH","nN",null,null],C:["xX","dD","fF","vV",null,null],D:["sS","eE","rR","fF","cC","xX"],E:["wW","3#","4$","rR","dD","sS"],F:["dD","rR","tT","gG","vV","cC"],G:["fF","tT","yY","hH","bB","vV"],H:["gG","yY","uU","jJ","nN","bB"],I:["uU","8*","9(","oO","kK","jJ"],J:["hH","uU","iI","kK","mM","nN"],K:["jJ","iI","oO","lL",",<","mM"],L:["kK","oO","pP",";:",".>",",<"],M:["nN","jJ","kK",",<",null,null],N:["bB","hH","jJ","mM",null,null],O:["iI","9(","0)","pP","lL","kK"],P:["oO","0)","-_","[{",";:","lL"],Q:[null,"1!","2@","wW","aA",null],R:["eE","4$","5%","tT","fF","dD"],S:["aA","wW","eE","dD","xX","zZ"],T:["rR","5%","6^","yY","gG","fF"],U:["yY","7&","8*","iI","jJ","hH"],V:["cC","fF","gG","bB",null,null],W:["qQ","2@","3#","eE","sS","aA"],X:["zZ","sS","dD","cC",null,null],Y:["tT","6^","7&","uU","hH","gG"],Z:[null,"aA","sS","xX",null,null],"[":["pP","-_","=+","]}","'\"",";:"],"\\":["]}",null,null,null,null,null],"]":["[{","=+",null,"\\|",null,"'\""],"^":["5%",null,null,"7&","yY","tT"],_:["0)",null,null,"=+","[{","pP"],"`":[null,null,null,"1!",null,null],a:[null,"qQ","wW","sS","zZ",null],b:["vV","gG","hH","nN",null,null],c:["xX","dD","fF","vV",null,null],d:["sS","eE","rR","fF","cC","xX"],e:["wW","3#","4$","rR","dD","sS"],f:["dD","rR","tT","gG","vV","cC"],g:["fF","tT","yY","hH","bB","vV"],h:["gG","yY","uU","jJ","nN","bB"],i:["uU","8*","9(","oO","kK","jJ"],j:["hH","uU","iI","kK","mM","nN"],k:["jJ","iI","oO","lL",",<","mM"],l:["kK","oO","pP",";:",".>",",<"],m:["nN","jJ","kK",",<",null,null],n:["bB","hH","jJ","mM",null,null],o:["iI","9(","0)","pP","lL","kK"],p:["oO","0)","-_","[{",";:","lL"],q:[null,"1!","2@","wW","aA",null],r:["eE","4$","5%","tT","fF","dD"],s:["aA","wW","eE","dD","xX","zZ"],t:["rR","5%","6^","yY","gG","fF"],u:["yY","7&","8*","iI","jJ","hH"],v:["cC","fF","gG","bB",null,null],w:["qQ","2@","3#","eE","sS","aA"],x:["zZ","sS","dD","cC",null,null],y:["tT","6^","7&","uU","hH","gG"],z:[null,"aA","sS","xX",null,null],"{":["pP","-_","=+","]}","'\"",";:"],"|":["]}",null,null,null,null,null],"}":["[{","=+",null,"\\|",null,"'\""],"~":[null,null,null,"1!",null,null]},dvorak:{"!":["`~",null,null,"2@","'\"",null],'"':[null,"1!","2@",",<","aA",null],"#":["2@",null,null,"4$",".>",",<"],$:["3#",null,null,"5%","pP",".>"],"%":["4$",null,null,"6^","yY","pP"],"&":["6^",null,null,"8*","gG","fF"],"'":[null,"1!","2@",",<","aA",null],"(":["8*",null,null,"0)","rR","cC"],")":["9(",null,null,"[{","lL","rR"],"*":["7&",null,null,"9(","cC","gG"],"+":["/?","]}",null,"\\|",null,"-_"],",":["'\"","2@","3#",".>","oO","aA"],"-":["sS","/?","=+",null,null,"zZ"],".":[",<","3#","4$","pP","eE","oO"],"/":["lL","[{","]}","=+","-_","sS"],0:["9(",null,null,"[{","lL","rR"],1:["`~",null,null,"2@","'\"",null],2:["1!",null,null,"3#",",<","'\""],3:["2@",null,null,"4$",".>",",<"],4:["3#",null,null,"5%","pP",".>"],5:["4$",null,null,"6^","yY","pP"],6:["5%",null,null,"7&","fF","yY"],7:["6^",null,null,"8*","gG","fF"],8:["7&",null,null,"9(","cC","gG"],9:["8*",null,null,"0)","rR","cC"],":":[null,"aA","oO","qQ",null,null],";":[null,"aA","oO","qQ",null,null],"<":["'\"","2@","3#",".>","oO","aA"],"=":["/?","]}",null,"\\|",null,"-_"],">":[",<","3#","4$","pP","eE","oO"],"?":["lL","[{","]}","=+","-_","sS"],"@":["1!",null,null,"3#",",<","'\""],A:[null,"'\"",",<","oO",";:",null],B:["xX","dD","hH","mM",null,null],C:["gG","8*","9(","rR","tT","hH"],D:["iI","fF","gG","hH","bB","xX"],E:["oO",".>","pP","uU","jJ","qQ"],F:["yY","6^","7&","gG","dD","iI"],G:["fF","7&","8*","cC","hH","dD"],H:["dD","gG","cC","tT","mM","bB"],I:["uU","yY","fF","dD","xX","kK"],J:["qQ","eE","uU","kK",null,null],K:["jJ","uU","iI","xX",null,null],L:["rR","0)","[{","/?","sS","nN"],M:["bB","hH","tT","wW",null,null],N:["tT","rR","lL","sS","vV","wW"],O:["aA",",<",".>","eE","qQ",";:"],P:[".>","4$","5%","yY","uU","eE"],Q:[";:","oO","eE","jJ",null,null],R:["cC","9(","0)","lL","nN","tT"],S:["nN","lL","/?","-_","zZ","vV"],T:["hH","cC","rR","nN","wW","mM"],U:["eE","pP","yY","iI","kK","jJ"],V:["wW","nN","sS","zZ",null,null],W:["mM","tT","nN","vV",null,null],X:["kK","iI","dD","bB",null,null],Y:["pP","5%","6^","fF","iI","uU"],Z:["vV","sS","-_",null,null,null],"[":["0)",null,null,"]}","/?","lL"],"\\":["=+",null,null,null,null,null],"]":["[{",null,null,null,"=+","/?"],"^":["5%",null,null,"7&","fF","yY"],_:["sS","/?","=+",null,null,"zZ"],"`":[null,null,null,"1!",null,null],a:[null,"'\"",",<","oO",";:",null],b:["xX","dD","hH","mM",null,null],c:["gG","8*","9(","rR","tT","hH"],d:["iI","fF","gG","hH","bB","xX"],e:["oO",".>","pP","uU","jJ","qQ"],f:["yY","6^","7&","gG","dD","iI"],g:["fF","7&","8*","cC","hH","dD"],h:["dD","gG","cC","tT","mM","bB"],i:["uU","yY","fF","dD","xX","kK"],j:["qQ","eE","uU","kK",null,null],k:["jJ","uU","iI","xX",null,null],l:["rR","0)","[{","/?","sS","nN"],m:["bB","hH","tT","wW",null,null],n:["tT","rR","lL","sS","vV","wW"],o:["aA",",<",".>","eE","qQ",";:"],p:[".>","4$","5%","yY","uU","eE"],q:[";:","oO","eE","jJ",null,null],r:["cC","9(","0)","lL","nN","tT"],s:["nN","lL","/?","-_","zZ","vV"],t:["hH","cC","rR","nN","wW","mM"],u:["eE","pP","yY","iI","kK","jJ"],v:["wW","nN","sS","zZ",null,null],w:["mM","tT","nN","vV",null,null],x:["kK","iI","dD","bB",null,null],y:["pP","5%","6^","fF","iI","uU"],z:["vV","sS","-_",null,null,null],"{":["0)",null,null,"]}","/?","lL"],"|":["=+",null,null,null,null,null],"}":["[{",null,null,null,"=+","/?"],"~":[null,null,null,"1!",null,null]},keypad:{"*":["/",null,null,null,"-","+","9","8"],"+":["9","*","-",null,null,null,null,"6"],"-":["*",null,null,null,null,null,"+","9"],".":["0","2","3",null,null,null,null,null],"/":[null,null,null,null,"*","9","8","7"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6",null,null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","+",null,null,"3","2"],7:[null,null,null,"/","8","5","4",null],8:["7",null,"/","*","9","6","5","4"],9:["8","/","*","-","+",null,"6","5"]},mac_keypad:{"*":["/",null,null,null,null,null,"-","9"],"+":["6","9","-",null,null,null,null,"3"],"-":["9","/","*",null,null,null,"+","6"],".":["0","2","3",null,null,null,null,null],"/":["=",null,null,null,"*","-","9","8"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6","+",null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","-","+",null,"3","2"],7:[null,null,null,"=","8","5","4",null],8:["7",null,"=","/","9","6","5","4"],9:["8","=","/","*","-","+","6","5"],"=":[null,null,null,null,"/","9","8","7"]}},module.exports=adjacency_graphs;
45606
45607 },{}],2:[function(require,module,exports){
45608 var feedback,scoring;scoring=require("./scoring"),feedback={default_feedback:{warning:"",suggestions:["Use a few words, avoid common phrases","No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(0===s.length)return this.default_feedback;if(e>2)return{warning:"",suggestions:[]};for(n=s[0],i=s.slice(1),t=0,r=i.length;t<r;t++)o=i[t],o.token.length>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,1===s.length),a="Add another word or two. Uncommon words are better.",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.warning="")):feedback={warning:"",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,s);case"spatial":return a=e.graph.toUpperCase(),t=1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",{warning:t,suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return t=1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',{warning:t,suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or 6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return n="passwords"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=4?"This is similar to a commonly used password":void 0:e.rank<=10?"This is a top-10 common password":e.rank<=100?"This is a top-100 common password":"This is a very common password":"english"===e.dictionary_name?s?"A word by itself is easy to guess":void 0:"surnames"===(a=e.dictionary_name)||"male_names"===a||"female_names"===a?s?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length>=4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),t={warning:n,suggestions:r}}},module.exports=feedback;
45609
45610 },{"./scoring":6}],3:[function(require,module,exports){
45611 var frequency_lists;frequency_lists={passwords:"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy".split(","),
45612 english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),
45613 female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),
45614 us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),
45615 male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},module.exports=frequency_lists;
45616
45617 },{}],4:[function(require,module,exports){
45618 var feedback,matching,scoring,time,time_estimates,zxcvbn;matching=require("./matching"),scoring=require("./scoring"),time_estimates=require("./time_estimates"),feedback=require("./feedback"),time=function(){return(new Date).getTime()},zxcvbn=function(e,t){var i,n,c,s,a,r,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],c=0,s=t.length;c<s;c++)i=t[c],"string"!=(m=typeof i)&&"number"!==m&&"boolean"!==m||u.push(i.toString().toLowerCase());matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,n=time_estimates.estimate_attack_times(o.guesses);for(r in n)_=n[r],o[r]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn;
45619
45620 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45621 var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,scoring;frequency_lists=require("./frequency_lists"),adjacency_graphs=require("./adjacency_graphs"),scoring=require("./scoring"),build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=1,r=0,n=e.length;r<n;r++)a=e[r],i[a]=t,t+=1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:["4","@"],b:["8"],c:["(","{","[","<"],e:["3"],g:["6","9"],i:["1","!","|"],l:["1","|","7"],o:["0"],s:["$","5"],t:["+","7"],x:["%"],z:["2"]},REGEXEN={recent_year:/19\d\d|200\d|201\d/g},DATE_MAX_YEAR=2050,DATE_MIN_YEAR=1e3,DATE_SPLITS={4:[[1,2],[2,3]],5:[[1,3],[2,3]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]},matching={empty:function(e){var t;return 0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(""),s=[],i=0,r=a.length;i<r;i++)n=a[i],s.push(t[n]||n);return s}().join("")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=0,t=r.length;a<t;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase();for(n in t)for(l=t[n],r=o=0,_=a;0<=_?o<_:o>_;r=0<=_?++o:--o)for(i=h=f=r,d=a;f<=d?h<d:h>d;i=f<=d?++h:--h)u.slice(r,+i+1||9e9)in l&&(p=u.slice(r,+i+1||9e9),c=l[p],s.push({pattern:"dictionary",i:r,j:i,token:e.slice(r,+i+1||9e9),matched_word:p,rank:c,dictionary_name:n,reversed:!1,l33t:!1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split("").reverse().join(""),i=this.dictionary_match(o,t),a=0,n=i.length;a<n;a++)r=i[a],r.token=r.token.split("").reverse().join(""),r.reversed=!0,s=[e.length-1-r.j,e.length-1-r.i],r.i=s[0],r.j=s[1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(""),a=0,r=o.length;a<r;a++)n=o[a],s[n]=!0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=0,e=c.length;t<e;t++)u=c[t],u in s&&n.push(u);return n}(),h.length>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=0,a=e.length;o<a;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=0,e=h.length;t<e;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=0,e=t.length;n<e;u=++n)i=t[u],r.push(i+","+u);return r}().join("-"),r in s||(s[r]=!0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[0],m=t.slice(1),c=[],d=e[a],l=0,h=d.length;l<h;l++)for(o=d[l],_=0,u=p.length;_<u;_++){for(A=p[_],i=-1,s=f=0,g=A.length;0<=g?f<g:f>g;s=0<=g?++f:--f)if(A[s][0]===o){i=s;break}i===-1?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(0),E.splice(i,1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=0,o=p.length;u<o;u++){for(_=p[u],f={},c=0,h=_.length;c<h;c++)l=_[c],s=l[0],t=l[1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=0,a=_.length;c<a&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=0,s=f.length;l<s;l++)if(o=f[l],m=e.slice(o.i,+o.j+1||9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],m.indexOf(p)!==-1&&(h[p]=r);o.l33t=!0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+" -> "+A);return e}().join(", "),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g="qwerty"!==n&&"dvorak"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;d<_;d++)if(r=i[d],s+=1,r&&r.indexOf(a)!==-1){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:"spatial",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\1+/g,c=/(.+?)\1+/g,l=/^(.+?)\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.sequence,n=t.guesses,d.push({pattern:"repeat",i:o,j:h,token:f[0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[0].length/i.length}),u=h+1;return d},MAX_DELTA:5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;if((r-n>1||1===Math.abs(i))&&0<(a=Math.abs(i))&&a<=t.MAX_DELTA)return u=e.slice(n,+r+1||9e9),/^[a-z]+$/.test(u)?(s="lower",o=26):/^[A-Z]+$/.test(u)?(s="upper",o=26):/^\d+$/.test(u)?(s="digits",o=10):(s="unicode",o=26),h.push({pattern:"sequence",i:n,j:r,token:e.slice(n,+r+1||9e9),sequence_name:s,sequence_space:o,ascending:i>0})}}(this),h=[],n=0,a=null,i=s=1,o=e.length;1<=o?s<o:s>o;i=1<=o?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-1),null==a&&(a=t),t!==a&&(r=i-1,u(n,r,a),n=r,a=t);return u(n,e.length-1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=0;i=r.exec(e);)a=i[0],n.push({pattern:"regex",token:a,i:i.index,j:i.index+i[0].length-1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,L,M;for(_=[],f=/^\d{4,8}$/,d=/^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/,s=m=0,v=e.length-4;0<=v?m<=v:m>=v;s=0<=v?++m:--m)for(o=A=I=s+3,R=s+7;(I<=R?A<=R:A>=R)&&!(o>=e.length);o=I<=R?++A:--A)if(M=e.slice(s,+o+1||9e9),f.exec(M)){for(r=[],T=DATE_SPLITS[M.length],E=0,c=T.length;E<c;E++)D=T[E],h=D[0],u=D[1],a=this.map_ints_to_dmy([parseInt(M.slice(0,h)),parseInt(M.slice(h,u)),parseInt(M.slice(u))]),null!=a&&r.push(a);if(r.length>0){for(t=r[0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[0]),k=r.slice(1),y=0,l=k.length;y<l;y++)n=k[y],i=p(n),i<g&&(x=[n,i],t=x[0],g=x[1]);_.push({pattern:"date",token:M,i:s,j:o,separator:"",year:t.year,month:t.month,day:t.day})}}for(s=q=0,j=e.length-6;0<=j?q<=j:q>=j;s=0<=j?++q:--q)for(o=L=b=s+5,N=s+9;(b<=N?L<=N:L>=N)&&!(o>=e.length);o=b<=N?++L:--L)M=e.slice(s,+o+1||9e9),S=d.exec(M),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[1]),parseInt(S[3]),parseInt(S[4])]),null!=a&&_.push({pattern:"date",token:M,i:s,j:o,separator:S[2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!1,i=0,n=_.length;i<n;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j>=e.j){t=!0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[1]>31||e[1]<=0)){for(o=0,h=0,p=0,s=0,r=e.length;s<r;s++){if(n=e[s],99<n&&n<DATE_MIN_YEAR||n>DATE_MAX_YEAR)return;n>31&&(h+=1),n>12&&(o+=1),n<=0&&(p+=1)}if(!(h>=2||3===o||p>=2)){for(c=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]],u=0,i=c.length;u<i;u++)if(_=c[u],g=_[0],d=_[1],DATE_MIN_YEAR<=g&&g<=DATE_MAX_YEAR)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void 0;for(l=0,a=c.length;l<a;l++)if(f=c[l],g=f[0],d=f[1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=0,n=a.length;i<n;i++)if(s=a[i],t=s[0],r=s[1],1<=t&&t<=31&&1<=r&&r<=12)return{day:t,month:r}},two_to_four_digit_year:function(e){return e>99?e:e>50?e+1900:e+2e3}},module.exports=matching;
45622
45623 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45624 var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require("./adjacency_graphs"),calc_average_degree=function(e){var t,r,n,s,a,u;t=0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=0,e=a.length;t<e;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=50,scoring={nCk:function(e,t){var r,n,s,a;if(t>e)return 0;if(0===t)return 1;for(s=1,r=n=1,a=t;1<=a?n<=a:n>=a;r=1<=a?++n:--n)s*=e,s/=r,e-=1;return s},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var t,r,n,s;if(e<2)return 1;for(t=1,r=n=2,s=e;2<=s?n<=s:n>=s;r=2<=s?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S,R,v,I,M,N,C,U,T;for(null==r&&(r=!1),l=e.length,f=function(){var e,t,r;for(r=[],n=e=0,t=l;0<=t?e<t:e>t;n=0<=t?++e:--e)r.push([]);return r}(),p=0,_=t.length;p<_;p++)c=t[p],f[c.j].push(c);for(v=0,o=f.length;v<o;v++)E=f[v],E.sort(function(e,t){return e.i-t.i});for(A={m:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),pi:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),g:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}()},U=function(t){return function(n,s){var a,u,i,_,o,h;_=n.j,o=t.estimate_guesses(n,e),s>1&&(o*=A.pi[n.i-1][s-1]),i=t.factorial(s)*o,r||(i+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-1)),h=A.g[_];for(u in h)if(a=h[u],!(u>s)&&a<=i)return;return A.g[_][s]=i,A.m[_][s]=n,A.pi[_][s]=o}}(this),s=function(e){return function(e){var t,r,n,s,a,u;for(c=g(0,e),U(c,1),a=[],t=u=1,s=e;1<=s?u<=s:u>=s;t=1<=s?++u:--u)c=g(t,e),a.push(function(){var e,s;e=A.m[t-1],s=[];for(r in e)n=e[r],r=parseInt(r),"bruteforce"!==n.pattern&&s.push(U(c,r+1));return s}());return a}}(this),g=function(t){return function(t,r){return{pattern:"bruteforce",token:e.slice(t,+r+1||9e9),i:t,j:r}}}(this),C=function(e){return function(e){var t,r,n,s,a,u,i;u=[],s=e-1,a=void 0,n=1/0,i=A.g[s];for(r in i)t=i[r],t<n&&(a=r,n=t);for(;s>=0;)c=A.m[s][a],u.unshift(c),s=c.i-1,a--;return u}}(this),u=N=0,I=l;0<=I?N<I:N>I;u=0<=I?++N:--N){for(M=f[u],T=0,h=M.length;T<h;T++)if(c=M[T],c.i>0)for(i in A.m[c.i-1])i=parseInt(i),U(c,i+1);else U(c,1);s(u)}return R=C(l),S=R.length,a=0===e.length?1:A.g[l-1][S],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:R}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=1,e.token.length<t.length&&(s=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),r=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(0),t="a"===r||"A"===r||"z"===r||"Z"===r||"0"===r||"1"===r||"9"===r?4:r.match(/\d/)?10:26,e.ascending||(t*=2),t*e.token.length},MIN_YEAR_SPACE:20,REFERENCE_YEAR:2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:26,alpha_upper:26,alpha:52,alphanumeric:62,digits:10,symbols:33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case"recent_year":return r=Math.abs(parseInt(e.regex_match[0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=365*r,e.separator&&(t*=4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S;for("qwerty"===(E=e.graph)||"dvorak"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=0,t=e.token.length,A=e.turns,u=_=2,c=t;2<=c?_<=c:_>=c;u=2<=c?++_:--_)for(o=Math.min(A,u-1),i=h=1,g=o;1<=g?h<=g:h>=g;i=1<=g?++h:--h)a+=this.nCk(u-1,i-1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,0===r||0===n)a*=2;else{for(p=0,u=S=1,f=Math.min(r,n);1<=f?S<=f:S>=f;u=1<=f?++S:--S)p+=this.nCk(r+n,u);a*=p}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&2||1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return 1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=0,a=_.length;u<a;u++)if(h=_[u],c.match(h))return 2;for(r=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=0,s=i=1,o=Math.min(r,t);1<=o?i<=o:i>=o;s=1<=o?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return 1;g=1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(""),t=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===c&&r.push(n);return r}().length,0===t||0===r)g*=2;else{for(i=Math.min(r,t),_=0,a=u=1,h=i;1<=h?u<=h:u>=h;a=1<=h?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring;
45625
45626 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
45627 var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=5,e<1e3+t?0:e<1e6+t?1:e<1e8+t?2:e<1e10+t?3:4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=60,r=60*i,s=24*r,a=31*s,c=12*a,n=100*c,u=e<1?[null,"less than a second"]:e<i?(t=Math.round(e),[t,t+" second"]):e<r?(t=Math.round(e/i),[t,t+" minute"]):e<s?(t=Math.round(e/r),[t,t+" hour"]):e<a?(t=Math.round(e/s),[t,t+" day"]):e<c?(t=Math.round(e/a),[t,t+" month"]):e<n?(t=Math.round(e/c),[t,t+" year"]):[null,"centuries"],o=u[0],_=u[1],null!=o&&1!==o&&(_+="s"),_}},module.exports=time_estimates;
45628
45629 },{}]},{},[4])(4)
45630 });
45631
45632 </script>
45633 <script>/*
45634 * Detects entropy from a string.
45635 *
45636 * Formats include:
45637 * binary [0-1]
45638 * base 6 [0-5]
45639 * dice 6 [1-6]
45640 * decimal [0-9]
45641 * hexadecimal [0-9A-F]
45642 * card [A2-9TJQK][CDHS]
45643 *
45644 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45645 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45646 * entropy.
45647 */
45648
45649 window.Entropy = new (function() {
45650
45651 var TWO = new BigInteger(2);
45652
45653 // matchers returns an array of the matched events for each type of entropy.
45654 // eg
45655 // matchers.binary("010") returns ["0", "1", "0"]
45656 // matchers.binary("a10") returns ["1", "0"]
45657 // matchers.hex("a10") returns ["a", "1", "0"]
45658 var matchers = {
45659 binary: function(str) {
45660 return str.match(/[0-1]/gi) || [];
45661 },
45662 base6: function(str) {
45663 return str.match(/[0-5]/gi) || [];
45664 },
45665 dice: function(str) {
45666 return str.match(/[1-6]/gi) || []; // ie dice numbers
45667 },
45668 base10: function(str) {
45669 return str.match(/[0-9]/gi) || [];
45670 },
45671 hex: function(str) {
45672 return str.match(/[0-9A-F]/gi) || [];
45673 },
45674 card: function(str) {
45675 // Format is NumberSuit, eg
45676 // AH ace of hearts
45677 // 8C eight of clubs
45678 // TD ten of diamonds
45679 // JS jack of spades
45680 // QH queen of hearts
45681 // KC king of clubs
45682 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45683 }
45684 }
45685
45686 // Convert array of cards from ["ac", "4d", "ks"]
45687 // to numbers between 0 and 51 [0, 16, 51]
45688 function convertCardsToInts(cards) {
45689 var ints = [];
45690 var values = "a23456789tjqk";
45691 var suits = "cdhs";
45692 for (var i=0; i<cards.length; i++) {
45693 var card = cards[i].toLowerCase();
45694 var value = card[0];
45695 var suit = card[1];
45696 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45697 ints.push(asInt);
45698 }
45699 return ints;
45700 }
45701
45702 this.fromString = function(rawEntropyStr) {
45703 // Find type of entropy being used (binary, hex, dice etc)
45704 var base = getBase(rawEntropyStr);
45705 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45706 // This is done by changing all 6s to 0s
45707 if (base.str == "dice") {
45708 var newParts = [];
45709 var newInts = [];
45710 for (var i=0; i<base.parts.length; i++) {
45711 var c = base.parts[i];
45712 if ("12345".indexOf(c) > -1) {
45713 newParts[i] = base.parts[i];
45714 newInts[i] = base.ints[i];
45715 }
45716 else {
45717 newParts[i] = "0";
45718 newInts[i] = 0;
45719 }
45720 }
45721 base.str = "base 6 (dice)";
45722 base.ints = newInts;
45723 base.parts = newParts;
45724 base.matcher = matchers.base6;
45725 }
45726 // Detect empty entropy
45727 if (base.parts.length == 0) {
45728 return {
45729 binaryStr: "",
45730 cleanStr: "",
45731 cleanHtml: "",
45732 base: base,
45733 };
45734 }
45735 // Convert base.ints to BigInteger.
45736 // Due to using unusual bases, eg cards of base52, this is not as simple as
45737 // using BigInteger.parse()
45738 var entropyInt = BigInteger.ZERO;
45739 for (var i=base.ints.length-1; i>=0; i--) {
45740 var thisInt = BigInteger.parse(base.ints[i]);
45741 var power = (base.ints.length - 1) - i;
45742 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45743 entropyInt = entropyInt.add(additionalEntropy);
45744 }
45745 // Convert entropy to binary
45746 var entropyBin = entropyInt.toString(2);
45747 // If the first integer is small, it must be padded with zeros.
45748 // Otherwise the chance of the first bit being 1 is 100%, which is
45749 // obviously incorrect.
45750 // This is not perfect for non-2^n bases.
45751 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45752 while (entropyBin.length < expectedBits) {
45753 entropyBin = "0" + entropyBin;
45754 }
45755 // Calculate the number of bits per event
45756 var bitsPerEvent = Math.log2(base.asInt);
45757 // Cards binary must be handled differently, since they're not replaced
45758 if (base.asInt == 52) {
45759 var cardEntropy = processCardEntropy(base.parts);
45760 entropyBin = cardEntropy.binaryStr;
45761 bitsPerEvent = cardEntropy.bitsPerEvent;
45762 }
45763 // Supply a 'filtered' entropy string for display purposes
45764 var entropyClean = base.parts.join("");
45765 var entropyHtml = base.parts.join("");
45766 if (base.asInt == 52) {
45767 entropyClean = base.parts.join(" ").toUpperCase();
45768 entropyClean = entropyClean.replace(/C/g, "\u2663");
45769 entropyClean = entropyClean.replace(/D/g, "\u2666");
45770 entropyClean = entropyClean.replace(/H/g, "\u2665");
45771 entropyClean = entropyClean.replace(/S/g, "\u2660");
45772 entropyHtml = base.parts.join(" ").toUpperCase();
45773 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45774 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45775 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45776 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45777 }
45778 // Return the result
45779 var e = {
45780 binaryStr: entropyBin,
45781 cleanStr: entropyClean,
45782 cleanHtml: entropyHtml,
45783 bitsPerEvent: bitsPerEvent,
45784 base: base,
45785 }
45786 return e;
45787 }
45788
45789 function getSortedDeck() {
45790 var s = [];
45791 var suits = "CDHS";
45792 var values = "A23456789TJQK";
45793 for (var i=0; i<suits.length; i++) {
45794 for (var j=0; j<values.length; j++) {
45795 s.push(values[j]+suits[i]);
45796 }
45797 }
45798 return s;
45799 }
45800
45801 function getBase(str) {
45802 // Need to get the lowest base for the supplied entropy.
45803 // This prevents interpreting, say, dice rolls as hexadecimal.
45804 var binaryMatches = matchers.binary(str);
45805 var hexMatches = matchers.hex(str);
45806 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45807 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45808 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45809 return {
45810 ints: ints,
45811 parts: binaryMatches,
45812 matcher: matchers.binary,
45813 asInt: 2,
45814 str: "binary",
45815 }
45816 }
45817 var cardMatches = matchers.card(str);
45818 if (cardMatches.length >= hexMatches.length / 2) {
45819 var ints = convertCardsToInts(cardMatches);
45820 return {
45821 ints: ints,
45822 parts: cardMatches,
45823 matcher: matchers.card,
45824 asInt: 52,
45825 str: "card",
45826 }
45827 }
45828 var diceMatches = matchers.dice(str);
45829 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45830 var ints = diceMatches.map(function(i) { return parseInt(i) });
45831 return {
45832 ints: ints,
45833 parts: diceMatches,
45834 matcher: matchers.dice,
45835 asInt: 6,
45836 str: "dice",
45837 }
45838 }
45839 var base6Matches = matchers.base6(str);
45840 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45841 var ints = base6Matches.map(function(i) { return parseInt(i) });
45842 return {
45843 ints: ints,
45844 parts: base6Matches,
45845 matcher: matchers.base6,
45846 asInt: 6,
45847 str: "base 6",
45848 }
45849 }
45850 var base10Matches = matchers.base10(str);
45851 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
45852 var ints = base10Matches.map(function(i) { return parseInt(i) });
45853 return {
45854 ints: ints,
45855 parts: base10Matches,
45856 matcher: matchers.base10,
45857 asInt: 10,
45858 str: "base 10",
45859 }
45860 }
45861 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
45862 return {
45863 ints: ints,
45864 parts: hexMatches,
45865 matcher: matchers.hex,
45866 asInt: 16,
45867 str: "hexadecimal",
45868 }
45869 }
45870
45871 // Assume cards are NOT replaced.
45872 // Additional entropy decreases as more cards are used. This means
45873 // total possible entropy is measured using n!, not base^n.
45874 // eg the second last card can be only one of two, not one of fifty two
45875 // so the added entropy for that card is only one bit at most
45876 function processCardEntropy(cards) {
45877 // Track how many instances of each card have been used, and thus
45878 // how many decks are in use.
45879 var cardCounts = {};
45880 var numberOfDecks = 0;
45881 // Work out number of decks by max(duplicates)
45882 for (var i=0; i<cards.length; i++) {
45883 // Get the card that was drawn
45884 var cardLower = cards[i];
45885 var card = cardLower.toUpperCase();
45886 // Initialize the count for this card if needed
45887 if (!(card in cardCounts)) {
45888 cardCounts[card] = 0;
45889 }
45890 cardCounts[card] += 1;
45891 // See if this is max(duplicates)
45892 if (cardCounts[card] > numberOfDecks) {
45893 numberOfDecks = cardCounts[card];
45894 }
45895 }
45896 // Work out the total number of bits for this many decks
45897 // See http://crypto.stackexchange.com/q/41886
45898 var gainedBits = 0;
45899 // Equivalent of Math.log2(factorial(52*numberOfDecks))
45900 // which becomes infinity for numberOfDecks > 4
45901 for (var i=1; i<=52*numberOfDecks; i++) {
45902 gainedBits = gainedBits + Math.log2(i);
45903 }
45904 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
45905 var maxBits = gainedBits - lostBits;
45906 // Convert the drawn cards to a binary representation.
45907 // The exact technique for doing this is unclear.
45908 // See
45909 // http://crypto.stackexchange.com/a/41896
45910 // "I even doubt that this is well defined (only the average entropy
45911 // is, I believe)."
45912 // See
45913 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
45914 // "The binary representation can be the first log(permutations,2) bits
45915 // of the sha-2 hash of the normalized deck string."
45916 //
45917 // In this specific implementation, the first N bits of the hash of the
45918 // normalized cards string is being used. Uppercase, no spaces; eg
45919 // sha256("AH8DQSTC2H")
45920 var totalCards = numberOfDecks * 52;
45921 var percentUsed = cards.length / totalCards;
45922 // Calculate the average number of bits of entropy for the number of
45923 // cards drawn.
45924 var numberOfBits = Math.floor(maxBits * percentUsed);
45925 // Create a normalized string of the selected cards
45926 var normalizedCards = cards.join("").toUpperCase();
45927 // Convert to binary using the SHA256 hash of the normalized cards.
45928 // If the number of bits is more than 256, multiple hashes
45929 // are used until the required number of bits is reached.
45930 var entropyBin = "";
45931 var iterations = 0;
45932 while (entropyBin.length < numberOfBits) {
45933 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
45934 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
45935 for (var i=0; i<hashHex.length; i++) {
45936 var decimal = parseInt(hashHex[i], 16);
45937 var binary = decimal.toString(2);
45938 while (binary.length < 4) {
45939 binary = "0" + binary;
45940 }
45941 entropyBin = entropyBin + binary;
45942 }
45943 iterations = iterations + 1;
45944 }
45945 // Truncate to the appropriate number of bits.
45946 entropyBin = entropyBin.substring(0, numberOfBits);
45947 // Get the number of bits per event
45948 bitsPerEvent = maxBits / totalCards;
45949 return {
45950 binaryStr: entropyBin,
45951 bitsPerEvent: bitsPerEvent,
45952 }
45953 }
45954
45955 // Polyfill for Math.log2
45956 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
45957 Math.log2 = Math.log2 || function(x) {
45958 // The polyfill isn't good enough because of the poor accuracy of
45959 // Math.LOG2E
45960 // log2(8) gave 2.9999999999999996 which when floored causes issues.
45961 // So instead use the BigInteger library to get it right.
45962 return BigInteger.log(x) / BigInteger.log(2);
45963 };
45964
45965 // Depends on BigInteger
45966 function factorial(n) {
45967 if (n == 0) {
45968 return 1;
45969 }
45970 f = BigInteger.ONE;
45971 for (var i=1; i<=n; i++) {
45972 f = f.multiply(new BigInteger(i));
45973 }
45974 return f;
45975 }
45976
45977 })();
45978 </script>
45979 <script>(function() {
45980
45981 // mnemonics is populated as required by getLanguage
45982 var mnemonics = { "english": new Mnemonic("english") };
45983 var mnemonic = mnemonics["english"];
45984 var seed = null;
45985 var bip32RootKey = null;
45986 var bip32ExtendedKey = null;
45987 var network = bitcoinjs.bitcoin.networks.bitcoin;
45988 var addressRowTemplate = $("#address-row-template");
45989
45990 var showIndex = true;
45991 var showAddress = true;
45992 var showPubKey = true;
45993 var showPrivKey = true;
45994 var showQr = false;
45995 var litecoinUseLtub = false;
45996
45997 var entropyChangeTimeoutEvent = null;
45998 var phraseChangeTimeoutEvent = null;
45999 var rootKeyChangedTimeoutEvent = null;
46000
46001 var generationProcesses = [];
46002
46003 var DOM = {};
46004 DOM.network = $(".network");
46005 DOM.bip32Client = $("#bip32-client");
46006 DOM.phraseNetwork = $("#network-phrase");
46007 DOM.useEntropy = $(".use-entropy");
46008 DOM.entropyContainer = $(".entropy-container");
46009 DOM.entropy = $(".entropy");
46010 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
46011 DOM.entropyType = DOM.entropyContainer.find(".type");
46012 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
46013 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
46014 DOM.entropyBits = DOM.entropyContainer.find(".bits");
46015 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
46016 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
46017 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
46018 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
46019 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
46020 DOM.phrase = $(".phrase");
46021 DOM.passphrase = $(".passphrase");
46022 DOM.generateContainer = $(".generate-container");
46023 DOM.generate = $(".generate");
46024 DOM.seed = $(".seed");
46025 DOM.rootKey = $(".root-key");
46026 DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
46027 DOM.litecoinUseLtub = $(".litecoin-use-ltub");
46028 DOM.extendedPrivKey = $(".extended-priv-key");
46029 DOM.extendedPubKey = $(".extended-pub-key");
46030 DOM.bip32tab = $("#bip32-tab");
46031 DOM.bip44tab = $("#bip44-tab");
46032 DOM.bip49tab = $("#bip49-tab");
46033 DOM.bip32panel = $("#bip32");
46034 DOM.bip44panel = $("#bip44");
46035 DOM.bip49panel = $("#bip49");
46036 DOM.bip32path = $("#bip32-path");
46037 DOM.bip44path = $("#bip44-path");
46038 DOM.bip44purpose = $("#bip44 .purpose");
46039 DOM.bip44coin = $("#bip44 .coin");
46040 DOM.bip44account = $("#bip44 .account");
46041 DOM.bip44accountXprv = $("#bip44 .account-xprv");
46042 DOM.bip44accountXpub = $("#bip44 .account-xpub");
46043 DOM.bip44change = $("#bip44 .change");
46044 DOM.bip49unavailable = $("#bip49 .unavailable");
46045 DOM.bip49available = $("#bip49 .available");
46046 DOM.bip49path = $("#bip49-path");
46047 DOM.bip49purpose = $("#bip49 .purpose");
46048 DOM.bip49coin = $("#bip49 .coin");
46049 DOM.bip49account = $("#bip49 .account");
46050 DOM.bip49accountXprv = $("#bip49 .account-xprv");
46051 DOM.bip49accountXpub = $("#bip49 .account-xpub");
46052 DOM.bip49change = $("#bip49 .change");
46053 DOM.generatedStrength = $(".generate-container .strength");
46054 DOM.hardenedAddresses = $(".hardened-addresses");
46055 DOM.useP2wpkhNestedInP2sh = $(".p2wpkh-nested-in-p2sh");
46056 DOM.useBitpayAddressesContainer = $(".use-bitpay-addresses-container");
46057 DOM.useBitpayAddresses = $(".use-bitpay-addresses");
46058 DOM.addresses = $(".addresses");
46059 DOM.rowsToAdd = $(".rows-to-add");
46060 DOM.more = $(".more");
46061 DOM.feedback = $(".feedback");
46062 DOM.tab = $(".derivation-type a");
46063 DOM.indexToggle = $(".index-toggle");
46064 DOM.addressToggle = $(".address-toggle");
46065 DOM.publicKeyToggle = $(".public-key-toggle");
46066 DOM.privateKeyToggle = $(".private-key-toggle");
46067 DOM.languages = $(".languages a");
46068 DOM.qrContainer = $(".qr-container");
46069 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
46070 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46071 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46072 DOM.showQrEls = $("[data-show-qr]");
46073
46074 function init() {
46075 // Events
46076 DOM.network.on("change", networkChanged);
46077 DOM.bip32Client.on("change", bip32ClientChanged);
46078 DOM.useEntropy.on("change", setEntropyVisibility);
46079 DOM.entropy.on("input", delayedEntropyChanged);
46080 DOM.entropyMnemonicLength.on("change", entropyChanged);
46081 DOM.phrase.on("input", delayedPhraseChanged);
46082 DOM.passphrase.on("input", delayedPhraseChanged);
46083 DOM.generate.on("click", generateClicked);
46084 DOM.more.on("click", showMore);
46085 DOM.rootKey.on("input", delayedRootKeyChanged);
46086 DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
46087 DOM.bip32path.on("input", calcForDerivationPath);
46088 DOM.bip44account.on("input", calcForDerivationPath);
46089 DOM.bip44change.on("input", calcForDerivationPath);
46090 DOM.bip49account.on("input", calcForDerivationPath);
46091 DOM.bip49change.on("input", calcForDerivationPath);
46092 DOM.tab.on("shown.bs.tab", tabChanged);
46093 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46094 DOM.useP2wpkhNestedInP2sh.on("change", calcForDerivationPath);
46095 DOM.indexToggle.on("click", toggleIndexes);
46096 DOM.addressToggle.on("click", toggleAddresses);
46097 DOM.publicKeyToggle.on("click", togglePublicKeys);
46098 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46099 DOM.languages.on("click", languageChanged);
46100 DOM.useBitpayAddresses.on("change", useBitpayAddressesChange);
46101 setQrEvents(DOM.showQrEls);
46102 disableForms();
46103 hidePending();
46104 hideValidationError();
46105 populateNetworkSelect();
46106 populateClientSelect();
46107 }
46108
46109 // Event handlers
46110
46111 function networkChanged(e) {
46112 clearDerivedKeys();
46113 clearAddressesList();
46114 DOM.litecoinLtubContainer.addClass("hidden");
46115 DOM.useBitpayAddressesContainer.addClass("hidden");
46116 var networkIndex = e.target.value;
46117 var network = networks[networkIndex];
46118 network.onSelect();
46119 if (network.p2wpkhNestedInP2shAvailable) {
46120 showP2wpkhNestedInP2shAvailable();
46121 }
46122 else {
46123 showP2wpkhNestedInP2shUnavailable();
46124 }
46125 if (seed != null) {
46126 phraseChanged();
46127 }
46128 else {
46129 rootKeyChanged();
46130 }
46131 }
46132
46133 function bip32ClientChanged(e) {
46134 var clientIndex = DOM.bip32Client.val();
46135 if (clientIndex == "custom") {
46136 DOM.bip32path.prop("readonly", false);
46137 }
46138 else {
46139 DOM.bip32path.prop("readonly", true);
46140 clients[clientIndex].onSelect();
46141 if (seed != null) {
46142 phraseChanged();
46143 }
46144 else {
46145 rootKeyChanged();
46146 }
46147 }
46148 }
46149
46150 function setEntropyVisibility() {
46151 if (isUsingOwnEntropy()) {
46152 DOM.entropyContainer.removeClass("hidden");
46153 DOM.generateContainer.addClass("hidden");
46154 DOM.phrase.prop("readonly", true);
46155 DOM.entropy.focus();
46156 entropyChanged();
46157 }
46158 else {
46159 DOM.entropyContainer.addClass("hidden");
46160 DOM.generateContainer.removeClass("hidden");
46161 DOM.phrase.prop("readonly", false);
46162 hidePending();
46163 }
46164 }
46165
46166 function delayedPhraseChanged() {
46167 hideValidationError();
46168 seed = null;
46169 bip32RootKey = null;
46170 bip32ExtendedKey = null;
46171 clearAddressesList();
46172 showPending();
46173 if (phraseChangeTimeoutEvent != null) {
46174 clearTimeout(phraseChangeTimeoutEvent);
46175 }
46176 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46177 }
46178
46179 function phraseChanged() {
46180 showPending();
46181 setMnemonicLanguage();
46182 // Get the mnemonic phrase
46183 var phrase = DOM.phrase.val();
46184 var errorText = findPhraseErrors(phrase);
46185 if (errorText) {
46186 showValidationError(errorText);
46187 return;
46188 }
46189 // Calculate and display
46190 var passphrase = DOM.passphrase.val();
46191 calcBip32RootKeyFromSeed(phrase, passphrase);
46192 calcForDerivationPath();
46193 }
46194
46195 function tabChanged() {
46196 showPending();
46197 adjustNetworkForBip49();
46198 var phrase = DOM.phrase.val();
46199 if (phrase != "") {
46200 // Calculate and display for mnemonic
46201 var errorText = findPhraseErrors(phrase);
46202 if (errorText) {
46203 showValidationError(errorText);
46204 return;
46205 }
46206 // Calculate and display
46207 var passphrase = DOM.passphrase.val();
46208 calcBip32RootKeyFromSeed(phrase, passphrase);
46209 }
46210 else {
46211 // Calculate and display for root key
46212 var rootKeyBase58 = DOM.rootKey.val();
46213 var errorText = validateRootKey(rootKeyBase58);
46214 if (errorText) {
46215 showValidationError(errorText);
46216 return;
46217 }
46218 // Calculate and display
46219 calcBip32RootKeyFromBase58(rootKeyBase58);
46220 }
46221 calcForDerivationPath();
46222 }
46223
46224 function delayedEntropyChanged() {
46225 hideValidationError();
46226 showPending();
46227 if (entropyChangeTimeoutEvent != null) {
46228 clearTimeout(entropyChangeTimeoutEvent);
46229 }
46230 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46231 }
46232
46233 function entropyChanged() {
46234 // If blank entropy, clear mnemonic, addresses, errors
46235 if (DOM.entropy.val().trim().length == 0) {
46236 clearDisplay();
46237 clearEntropyFeedback();
46238 DOM.phrase.val("");
46239 showValidationError("Blank entropy");
46240 return;
46241 }
46242 // Get the current phrase to detect changes
46243 var phrase = DOM.phrase.val();
46244 // Set the phrase from the entropy
46245 setMnemonicFromEntropy();
46246 // Recalc addresses if the phrase has changed
46247 var newPhrase = DOM.phrase.val();
46248 if (newPhrase != phrase) {
46249 if (newPhrase.length == 0) {
46250 clearDisplay();
46251 }
46252 else {
46253 phraseChanged();
46254 }
46255 }
46256 else {
46257 hidePending();
46258 }
46259 }
46260
46261 function delayedRootKeyChanged() {
46262 // Warn if there is an existing mnemonic or passphrase.
46263 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46264 if (!confirm("This will clear existing mnemonic and passphrase")) {
46265 DOM.rootKey.val(bip32RootKey);
46266 return
46267 }
46268 }
46269 hideValidationError();
46270 showPending();
46271 // Clear existing mnemonic and passphrase
46272 DOM.phrase.val("");
46273 DOM.passphrase.val("");
46274 seed = null;
46275 if (rootKeyChangedTimeoutEvent != null) {
46276 clearTimeout(rootKeyChangedTimeoutEvent);
46277 }
46278 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46279 }
46280
46281 function rootKeyChanged() {
46282 showPending();
46283 hideValidationError();
46284 var rootKeyBase58 = DOM.rootKey.val();
46285 var errorText = validateRootKey(rootKeyBase58);
46286 if (errorText) {
46287 showValidationError(errorText);
46288 return;
46289 }
46290 // Calculate and display
46291 calcBip32RootKeyFromBase58(rootKeyBase58);
46292 calcForDerivationPath();
46293 }
46294
46295 function litecoinUseLtubChanged() {
46296 litecoinUseLtub = DOM.litecoinUseLtub.prop("checked");
46297 if (litecoinUseLtub) {
46298 network = bitcoinjs.bitcoin.networks.litecoinLtub;
46299 }
46300 else {
46301 network = bitcoinjs.bitcoin.networks.litecoin;
46302 }
46303 phraseChanged();
46304 }
46305
46306 function calcForDerivationPath() {
46307 clearDerivedKeys();
46308 clearAddressesList();
46309 showPending();
46310 // Don't show bip49 if it's selected but network doesn't support it
46311 if (bip49TabSelected() && !networkHasBip49()) {
46312 return;
46313 }
46314 // Get the derivation path
46315 var derivationPath = getDerivationPath();
46316 var errorText = findDerivationPathErrors(derivationPath);
46317 if (errorText) {
46318 showValidationError(errorText);
46319 return;
46320 }
46321 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46322 if (bip44TabSelected()) {
46323 displayBip44Info();
46324 }
46325 if (bip49TabSelected()) {
46326 displayBip49Info();
46327 }
46328 displayBip32Info();
46329 }
46330
46331 function generateClicked() {
46332 if (isUsingOwnEntropy()) {
46333 return;
46334 }
46335 clearDisplay();
46336 showPending();
46337 setTimeout(function() {
46338 setMnemonicLanguage();
46339 var phrase = generateRandomPhrase();
46340 if (!phrase) {
46341 return;
46342 }
46343 phraseChanged();
46344 }, 50);
46345 }
46346
46347 function languageChanged() {
46348 setTimeout(function() {
46349 setMnemonicLanguage();
46350 if (DOM.phrase.val().length > 0) {
46351 var newPhrase = convertPhraseToNewLanguage();
46352 DOM.phrase.val(newPhrase);
46353 phraseChanged();
46354 }
46355 else {
46356 DOM.generate.trigger("click");
46357 }
46358 }, 50);
46359 }
46360
46361 function useBitpayAddressesChange() {
46362 setBitcoinCashNetworkValues();
46363 phraseChanged();
46364 }
46365
46366 function toggleIndexes() {
46367 showIndex = !showIndex;
46368 $("td.index span").toggleClass("invisible");
46369 }
46370
46371 function toggleAddresses() {
46372 showAddress = !showAddress;
46373 $("td.address span").toggleClass("invisible");
46374 }
46375
46376 function togglePublicKeys() {
46377 showPubKey = !showPubKey;
46378 $("td.pubkey span").toggleClass("invisible");
46379 }
46380
46381 function togglePrivateKeys() {
46382 showPrivKey = !showPrivKey;
46383 $("td.privkey span").toggleClass("invisible");
46384 }
46385
46386 // Private methods
46387
46388 function generateRandomPhrase() {
46389 if (!hasStrongRandom()) {
46390 var errorText = "This browser does not support strong randomness";
46391 showValidationError(errorText);
46392 return;
46393 }
46394 var numWords = parseInt(DOM.generatedStrength.val());
46395 var strength = numWords / 3 * 32;
46396 var words = mnemonic.generate(strength);
46397 DOM.phrase.val(words);
46398 return words;
46399 }
46400
46401 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46402 seed = mnemonic.toSeed(phrase, passphrase);
46403 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
46404 }
46405
46406 function calcBip32RootKeyFromBase58(rootKeyBase58) {
46407 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46408 }
46409
46410 function calcBip32ExtendedKey(path) {
46411 // Check there's a root key to derive from
46412 if (!bip32RootKey) {
46413 return bip32RootKey;
46414 }
46415 var extendedKey = bip32RootKey;
46416 // Derive the key from the path
46417 var pathBits = path.split("/");
46418 for (var i=0; i<pathBits.length; i++) {
46419 var bit = pathBits[i];
46420 var index = parseInt(bit);
46421 if (isNaN(index)) {
46422 continue;
46423 }
46424 var hardened = bit[bit.length-1] == "'";
46425 var isPriv = !(extendedKey.isNeutered());
46426 var invalidDerivationPath = hardened && !isPriv;
46427 if (invalidDerivationPath) {
46428 extendedKey = null;
46429 }
46430 else if (hardened) {
46431 extendedKey = extendedKey.deriveHardened(index);
46432 }
46433 else {
46434 extendedKey = extendedKey.derive(index);
46435 }
46436 }
46437 return extendedKey
46438 }
46439
46440 function showValidationError(errorText) {
46441 DOM.feedback
46442 .text(errorText)
46443 .show();
46444 }
46445
46446 function hideValidationError() {
46447 DOM.feedback
46448 .text("")
46449 .hide();
46450 }
46451
46452 function findPhraseErrors(phrase) {
46453 // Preprocess the words
46454 phrase = mnemonic.normalizeString(phrase);
46455 var words = phraseToWordArray(phrase);
46456 // Detect blank phrase
46457 if (words.length == 0) {
46458 return "Blank mnemonic";
46459 }
46460 // Check each word
46461 for (var i=0; i<words.length; i++) {
46462 var word = words[i];
46463 var language = getLanguage();
46464 if (WORDLISTS[language].indexOf(word) == -1) {
46465 console.log("Finding closest match to " + word);
46466 var nearestWord = findNearestWord(word);
46467 return word + " not in wordlist, did you mean " + nearestWord + "?";
46468 }
46469 }
46470 // Check the words are valid
46471 var properPhrase = wordArrayToPhrase(words);
46472 var isValid = mnemonic.check(properPhrase);
46473 if (!isValid) {
46474 return "Invalid mnemonic";
46475 }
46476 return false;
46477 }
46478
46479 function validateRootKey(rootKeyBase58) {
46480 try {
46481 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46482 }
46483 catch (e) {
46484 return "Invalid root key";
46485 }
46486 return "";
46487 }
46488
46489 function getDerivationPath() {
46490 if (bip44TabSelected()) {
46491 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46492 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46493 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46494 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46495 var path = "m/";
46496 path += purpose + "'/";
46497 path += coin + "'/";
46498 path += account + "'/";
46499 path += change;
46500 DOM.bip44path.val(path);
46501 var derivationPath = DOM.bip44path.val();
46502 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46503 return derivationPath;
46504 }
46505 if (bip49TabSelected()) {
46506 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46507 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46508 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46509 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46510 var path = "m/";
46511 path += purpose + "'/";
46512 path += coin + "'/";
46513 path += account + "'/";
46514 path += change;
46515 DOM.bip49path.val(path);
46516 var derivationPath = DOM.bip49path.val();
46517 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46518 return derivationPath;
46519 }
46520 else if (bip32TabSelected()) {
46521 var derivationPath = DOM.bip32path.val();
46522 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46523 return derivationPath;
46524 }
46525 else {
46526 console.log("Unknown derivation path");
46527 }
46528 }
46529
46530 function findDerivationPathErrors(path) {
46531 // TODO is not perfect but is better than nothing
46532 // Inspired by
46533 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46534 // and
46535 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46536 var maxDepth = 255; // TODO verify this!!
46537 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46538 if (path[0] != "m") {
46539 return "First character must be 'm'";
46540 }
46541 if (path.length > 1) {
46542 if (path[1] != "/") {
46543 return "Separator must be '/'";
46544 }
46545 var indexes = path.split("/");
46546 if (indexes.length > maxDepth) {
46547 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46548 }
46549 for (var depth = 1; depth<indexes.length; depth++) {
46550 var index = indexes[depth];
46551 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46552 if (invalidChars.length > 0) {
46553 return "Invalid characters " + invalidChars + " found at depth " + depth;
46554 }
46555 var indexValue = parseInt(index.replace("'", ""));
46556 if (isNaN(depth)) {
46557 return "Invalid number at depth " + depth;
46558 }
46559 if (indexValue > maxIndexValue) {
46560 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46561 }
46562 }
46563 }
46564 // Check root key exists or else derivation path is useless!
46565 if (!bip32RootKey) {
46566 return "No root key";
46567 }
46568 // Check no hardened derivation path when using xpub keys
46569 var hardenedPath = path.indexOf("'") > -1;
46570 var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked");
46571 var hardened = hardenedPath || hardenedAddresses;
46572 var isXpubkey = bip32RootKey.isNeutered();
46573 if (hardened && isXpubkey) {
46574 return "Hardened derivation path is invalid with xpub key";
46575 }
46576 return false;
46577 }
46578
46579 function displayBip44Info() {
46580 // Get the derivation path for the account
46581 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46582 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46583 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46584 var path = "m/";
46585 path += purpose + "'/";
46586 path += coin + "'/";
46587 path += account + "'/";
46588 // Calculate the account extended keys
46589 var accountExtendedKey = calcBip32ExtendedKey(path);
46590 var accountXprv = accountExtendedKey.toBase58();
46591 var accountXpub = accountExtendedKey.neutered().toBase58();
46592 // Display the extended keys
46593 DOM.bip44accountXprv.val(accountXprv);
46594 DOM.bip44accountXpub.val(accountXpub);
46595 }
46596
46597 function displayBip49Info() {
46598 // Get the derivation path for the account
46599 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46600 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46601 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46602 var path = "m/";
46603 path += purpose + "'/";
46604 path += coin + "'/";
46605 path += account + "'/";
46606 // Calculate the account extended keys
46607 var accountExtendedKey = calcBip32ExtendedKey(path);
46608 var accountXprv = accountExtendedKey.toBase58();
46609 var accountXpub = accountExtendedKey.neutered().toBase58();
46610 // Display the extended keys
46611 DOM.bip49accountXprv.val(accountXprv);
46612 DOM.bip49accountXpub.val(accountXpub);
46613 }
46614
46615 function displayBip32Info() {
46616 // Display the key
46617 DOM.seed.val(seed);
46618 var rootKey = bip32RootKey.toBase58();
46619 DOM.rootKey.val(rootKey);
46620 var xprvkeyB58 = "NA";
46621 if (!bip32ExtendedKey.isNeutered()) {
46622 xprvkeyB58 = bip32ExtendedKey.toBase58();
46623 }
46624 var extendedPrivKey = xprvkeyB58;
46625 DOM.extendedPrivKey.val(extendedPrivKey);
46626 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
46627 DOM.extendedPubKey.val(extendedPubKey);
46628 // Display the addresses and privkeys
46629 clearAddressesList();
46630 displayAddresses(0, 20);
46631 }
46632
46633 function displayAddresses(start, total) {
46634 generationProcesses.push(new (function() {
46635
46636 var rows = [];
46637
46638 this.stop = function() {
46639 for (var i=0; i<rows.length; i++) {
46640 rows[i].shouldGenerate = false;
46641 }
46642 hidePending();
46643 }
46644
46645 for (var i=0; i<total; i++) {
46646 var index = i + start;
46647 var isLast = i == total - 1;
46648 rows.push(new TableRow(index, isLast));
46649 }
46650
46651 })());
46652 }
46653
46654 function P2wpkhNestedInP2shSelected() {
46655 return bip49TabSelected() || (bip32TabSelected() && useP2wpkhNestedInP2sh());
46656 }
46657
46658 function TableRow(index, isLast) {
46659
46660 var self = this;
46661 this.shouldGenerate = true;
46662 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
46663 var isP2wpkhNestedInP2sh = P2wpkhNestedInP2shSelected();
46664 var p2wpkhNestedInP2shAvailable = networkHasBip49();
46665
46666 function init() {
46667 calculateValues();
46668 }
46669
46670 function calculateValues() {
46671 setTimeout(function() {
46672 if (!self.shouldGenerate) {
46673 return;
46674 }
46675 var key = "NA";
46676 if (useHardenedAddresses) {
46677 key = bip32ExtendedKey.deriveHardened(index);
46678 }
46679 else {
46680 key = bip32ExtendedKey.derive(index);
46681 }
46682 var address = key.getAddress().toString();
46683 var privkey = "NA";
46684 if (!key.isNeutered()) {
46685 privkey = key.keyPair.toWIF(network);
46686 }
46687 var pubkey = key.getPublicKeyBuffer().toString('hex');
46688 var indexText = getDerivationPath() + "/" + index;
46689 if (useHardenedAddresses) {
46690 indexText = indexText + "'";
46691 }
46692 // Ethereum values are different
46693 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
46694 var privKeyBuffer = key.keyPair.d.toBuffer();
46695 privkey = privKeyBuffer.toString('hex');
46696 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
46697 var hexAddress = addressBuffer.toString('hex');
46698 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46699 address = ethUtil.addHexPrefix(checksumAddress);
46700 privkey = ethUtil.addHexPrefix(privkey);
46701 pubkey = ethUtil.addHexPrefix(pubkey);
46702 }
46703 // Ripple values are different
46704 if (networks[DOM.network.val()].name == "XRP - Ripple") {
46705 privkey = convertRipplePriv(privkey);
46706 address = convertRippleAdrr(address);
46707 }
46708 // BIP49 addresses are different
46709 if (isP2wpkhNestedInP2sh) {
46710 if (!p2wpkhNestedInP2shAvailable) {
46711 return;
46712 }
46713 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46714 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46715 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46716 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46717 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46718 }
46719 addAddressToList(indexText, address, pubkey, privkey);
46720 if (isLast) {
46721 hidePending();
46722 }
46723 }, 50)
46724 }
46725
46726 init();
46727
46728 }
46729
46730 function showMore() {
46731 var start = DOM.addresses.children().length;
46732 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46733 if (isNaN(rowsToAdd)) {
46734 rowsToAdd = 20;
46735 DOM.rowsToAdd.val("20");
46736 }
46737 if (rowsToAdd > 200) {
46738 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46739 msg += "Do you want to continue?";
46740 if (!confirm(msg)) {
46741 return;
46742 }
46743 }
46744 displayAddresses(start, rowsToAdd);
46745 }
46746
46747 function clearDisplay() {
46748 clearAddressesList();
46749 clearKeys();
46750 hideValidationError();
46751 }
46752
46753 function clearAddressesList() {
46754 DOM.addresses.empty();
46755 stopGenerating();
46756 }
46757
46758 function stopGenerating() {
46759 while (generationProcesses.length > 0) {
46760 var generation = generationProcesses.shift();
46761 generation.stop();
46762 }
46763 }
46764
46765 function clearKeys() {
46766 clearRootKey();
46767 clearDerivedKeys();
46768 }
46769
46770 function clearRootKey() {
46771 DOM.rootKey.val("");
46772 }
46773
46774 function clearDerivedKeys() {
46775 DOM.extendedPrivKey.val("");
46776 DOM.extendedPubKey.val("");
46777 DOM.bip44accountXprv.val("");
46778 DOM.bip44accountXpub.val("");
46779 }
46780
46781 function addAddressToList(indexText, address, pubkey, privkey) {
46782 var row = $(addressRowTemplate.html());
46783 // Elements
46784 var indexCell = row.find(".index span");
46785 var addressCell = row.find(".address span");
46786 var pubkeyCell = row.find(".pubkey span");
46787 var privkeyCell = row.find(".privkey span");
46788 // Content
46789 indexCell.text(indexText);
46790 addressCell.text(address);
46791 pubkeyCell.text(pubkey);
46792 privkeyCell.text(privkey);
46793 // Visibility
46794 if (!showIndex) {
46795 indexCell.addClass("invisible");
46796 }
46797 if (!showAddress) {
46798 addressCell.addClass("invisible");
46799 }
46800 if (!showPubKey) {
46801 pubkeyCell.addClass("invisible");
46802 }
46803 if (!showPrivKey) {
46804 privkeyCell.addClass("invisible");
46805 }
46806 DOM.addresses.append(row);
46807 var rowShowQrEls = row.find("[data-show-qr]");
46808 setQrEvents(rowShowQrEls);
46809 }
46810
46811 function hasStrongRandom() {
46812 return 'crypto' in window && window['crypto'] !== null;
46813 }
46814
46815 function disableForms() {
46816 $("form").on("submit", function(e) {
46817 e.preventDefault();
46818 });
46819 }
46820
46821 function parseIntNoNaN(val, defaultVal) {
46822 var v = parseInt(val);
46823 if (isNaN(v)) {
46824 return defaultVal;
46825 }
46826 return v;
46827 }
46828
46829 function showPending() {
46830 DOM.feedback
46831 .text("Calculating...")
46832 .show();
46833 }
46834
46835 function findNearestWord(word) {
46836 var language = getLanguage();
46837 var words = WORDLISTS[language];
46838 var minDistance = 99;
46839 var closestWord = words[0];
46840 for (var i=0; i<words.length; i++) {
46841 var comparedTo = words[i];
46842 if (comparedTo.indexOf(word) == 0) {
46843 return comparedTo;
46844 }
46845 var distance = Levenshtein.get(word, comparedTo);
46846 if (distance < minDistance) {
46847 closestWord = comparedTo;
46848 minDistance = distance;
46849 }
46850 }
46851 return closestWord;
46852 }
46853
46854 function hidePending() {
46855 DOM.feedback
46856 .text("")
46857 .hide();
46858 }
46859
46860 function populateNetworkSelect() {
46861 for (var i=0; i<networks.length; i++) {
46862 var network = networks[i];
46863 var option = $("<option>");
46864 option.attr("value", i);
46865 option.text(network.name);
46866 if (network.name == "BTC - Bitcoin") {
46867 option.prop("selected", true);
46868 }
46869 DOM.phraseNetwork.append(option);
46870 }
46871 }
46872
46873 function populateClientSelect() {
46874 for (var i=0; i<clients.length; i++) {
46875 var client = clients[i];
46876 var option = $("<option>");
46877 option.attr("value", i);
46878 option.text(client.name);
46879 DOM.bip32Client.append(option);
46880 }
46881 }
46882
46883 function getLanguage() {
46884 var defaultLanguage = "english";
46885 // Try to get from existing phrase
46886 var language = getLanguageFromPhrase();
46887 // Try to get from url if not from phrase
46888 if (language.length == 0) {
46889 language = getLanguageFromUrl();
46890 }
46891 // Default to English if no other option
46892 if (language.length == 0) {
46893 language = defaultLanguage;
46894 }
46895 return language;
46896 }
46897
46898 function getLanguageFromPhrase(phrase) {
46899 // Check if how many words from existing phrase match a language.
46900 var language = "";
46901 if (!phrase) {
46902 phrase = DOM.phrase.val();
46903 }
46904 if (phrase.length > 0) {
46905 var words = phraseToWordArray(phrase);
46906 var languageMatches = {};
46907 for (l in WORDLISTS) {
46908 // Track how many words match in this language
46909 languageMatches[l] = 0;
46910 for (var i=0; i<words.length; i++) {
46911 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
46912 if (wordInLanguage) {
46913 languageMatches[l]++;
46914 }
46915 }
46916 // Find languages with most word matches.
46917 // This is made difficult due to commonalities between Chinese
46918 // simplified vs traditional.
46919 var mostMatches = 0;
46920 var mostMatchedLanguages = [];
46921 for (var l in languageMatches) {
46922 var numMatches = languageMatches[l];
46923 if (numMatches > mostMatches) {
46924 mostMatches = numMatches;
46925 mostMatchedLanguages = [l];
46926 }
46927 else if (numMatches == mostMatches) {
46928 mostMatchedLanguages.push(l);
46929 }
46930 }
46931 }
46932 if (mostMatchedLanguages.length > 0) {
46933 // Use first language and warn if multiple detected
46934 language = mostMatchedLanguages[0];
46935 if (mostMatchedLanguages.length > 1) {
46936 console.warn("Multiple possible languages");
46937 console.warn(mostMatchedLanguages);
46938 }
46939 }
46940 }
46941 return language;
46942 }
46943
46944 function getLanguageFromUrl() {
46945 for (var language in WORDLISTS) {
46946 if (window.location.hash.indexOf(language) > -1) {
46947 return language;
46948 }
46949 }
46950 return "";
46951 }
46952
46953 function setMnemonicLanguage() {
46954 var language = getLanguage();
46955 // Load the bip39 mnemonic generator for this language if required
46956 if (!(language in mnemonics)) {
46957 mnemonics[language] = new Mnemonic(language);
46958 }
46959 mnemonic = mnemonics[language];
46960 }
46961
46962 function convertPhraseToNewLanguage() {
46963 var oldLanguage = getLanguageFromPhrase();
46964 var newLanguage = getLanguageFromUrl();
46965 var oldPhrase = DOM.phrase.val();
46966 var oldWords = phraseToWordArray(oldPhrase);
46967 var newWords = [];
46968 for (var i=0; i<oldWords.length; i++) {
46969 var oldWord = oldWords[i];
46970 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
46971 var newWord = WORDLISTS[newLanguage][index];
46972 newWords.push(newWord);
46973 }
46974 newPhrase = wordArrayToPhrase(newWords);
46975 return newPhrase;
46976 }
46977
46978 // TODO look at jsbip39 - mnemonic.splitWords
46979 function phraseToWordArray(phrase) {
46980 var words = phrase.split(/\s/g);
46981 var noBlanks = [];
46982 for (var i=0; i<words.length; i++) {
46983 var word = words[i];
46984 if (word.length > 0) {
46985 noBlanks.push(word);
46986 }
46987 }
46988 return noBlanks;
46989 }
46990
46991 // TODO look at jsbip39 - mnemonic.joinWords
46992 function wordArrayToPhrase(words) {
46993 var phrase = words.join(" ");
46994 var language = getLanguageFromPhrase(phrase);
46995 if (language == "japanese") {
46996 phrase = words.join("\u3000");
46997 }
46998 return phrase;
46999 }
47000
47001 function isUsingOwnEntropy() {
47002 return DOM.useEntropy.prop("checked");
47003 }
47004
47005 function setMnemonicFromEntropy() {
47006 clearEntropyFeedback();
47007 // Get entropy value
47008 var entropyStr = DOM.entropy.val();
47009 // Work out minimum base for entropy
47010 var entropy = Entropy.fromString(entropyStr);
47011 if (entropy.binaryStr.length == 0) {
47012 return;
47013 }
47014 // Show entropy details
47015 showEntropyFeedback(entropy);
47016 // Use entropy hash if not using raw entropy
47017 var bits = entropy.binaryStr;
47018 var mnemonicLength = DOM.entropyMnemonicLength.val();
47019 if (mnemonicLength != "raw") {
47020 // Get bits by hashing entropy with SHA256
47021 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
47022 var hex = sjcl.codec.hex.fromBits(hash);
47023 bits = BigInteger.parse(hex, 16).toString(2);
47024 while (bits.length % 256 != 0) {
47025 bits = "0" + bits;
47026 }
47027 // Truncate hash to suit number of words
47028 mnemonicLength = parseInt(mnemonicLength);
47029 var numberOfBits = 32 * mnemonicLength / 3;
47030 bits = bits.substring(0, numberOfBits);
47031 }
47032 // Discard trailing entropy
47033 var bitsToUse = Math.floor(bits.length / 32) * 32;
47034 var start = bits.length - bitsToUse;
47035 var binaryStr = bits.substring(start);
47036 // Convert entropy string to numeric array
47037 var entropyArr = [];
47038 for (var i=0; i<binaryStr.length / 8; i++) {
47039 var byteAsBits = binaryStr.substring(i*8, i*8+8);
47040 var entropyByte = parseInt(byteAsBits, 2);
47041 entropyArr.push(entropyByte)
47042 }
47043 // Convert entropy array to mnemonic
47044 var phrase = mnemonic.toMnemonic(entropyArr);
47045 // Set the mnemonic in the UI
47046 DOM.phrase.val(phrase);
47047 }
47048
47049 function clearEntropyFeedback() {
47050 DOM.entropyCrackTime.text("...");
47051 DOM.entropyType.text("");
47052 DOM.entropyWordCount.text("0");
47053 DOM.entropyEventCount.text("0");
47054 DOM.entropyBitsPerEvent.text("0");
47055 DOM.entropyBits.text("0");
47056 DOM.entropyFiltered.html("&nbsp;");
47057 DOM.entropyBinary.html("&nbsp;");
47058 }
47059
47060 function showEntropyFeedback(entropy) {
47061 var numberOfBits = entropy.binaryStr.length;
47062 var timeToCrack = "unknown";
47063 try {
47064 var z = zxcvbn(entropy.base.parts.join(""));
47065 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
47066 if (z.feedback.warning != "") {
47067 timeToCrack = timeToCrack + " - " + z.feedback.warning;
47068 };
47069 }
47070 catch (e) {
47071 console.log("Error detecting entropy strength with zxcvbn:");
47072 console.log(e);
47073 }
47074 var entropyTypeStr = getEntropyTypeStr(entropy);
47075 var wordCount = Math.floor(numberOfBits / 32) * 3;
47076 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
47077 DOM.entropyFiltered.html(entropy.cleanHtml);
47078 DOM.entropyType.text(entropyTypeStr);
47079 DOM.entropyCrackTime.text(timeToCrack);
47080 DOM.entropyEventCount.text(entropy.base.ints.length);
47081 DOM.entropyBits.text(numberOfBits);
47082 DOM.entropyWordCount.text(wordCount);
47083 DOM.entropyBinary.text(entropy.binaryStr);
47084 DOM.entropyBitsPerEvent.text(bitsPerEvent);
47085 // detect and warn of filtering
47086 var rawNoSpaces = DOM.entropy.val().replace(/\s/g, "");
47087 var cleanNoSpaces = entropy.cleanStr.replace(/\s/g, "");
47088 var isFiltered = rawNoSpaces.length != cleanNoSpaces.length;
47089 if (isFiltered) {
47090 DOM.entropyFilterWarning.removeClass('hidden');
47091 }
47092 else {
47093 DOM.entropyFilterWarning.addClass('hidden');
47094 }
47095 }
47096
47097 function getEntropyTypeStr(entropy) {
47098 var typeStr = entropy.base.str;
47099 // Add some detail if these are cards
47100 if (entropy.base.asInt == 52) {
47101 var cardDetail = []; // array of message strings
47102 // Detect duplicates
47103 var dupes = [];
47104 var dupeTracker = {};
47105 for (var i=0; i<entropy.base.parts.length; i++) {
47106 var card = entropy.base.parts[i];
47107 var cardUpper = card.toUpperCase();
47108 if (cardUpper in dupeTracker) {
47109 dupes.push(card);
47110 }
47111 dupeTracker[cardUpper] = true;
47112 }
47113 if (dupes.length > 0) {
47114 var dupeWord = "duplicates";
47115 if (dupes.length == 1) {
47116 dupeWord = "duplicate";
47117 }
47118 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47119 if (dupes.length > 3) {
47120 msg += "...";
47121 }
47122 cardDetail.push(msg);
47123 }
47124 // Detect full deck
47125 var uniqueCards = [];
47126 for (var uniqueCard in dupeTracker) {
47127 uniqueCards.push(uniqueCard);
47128 }
47129 if (uniqueCards.length == 52) {
47130 cardDetail.unshift("full deck");
47131 }
47132 // Detect missing cards
47133 var values = "A23456789TJQK";
47134 var suits = "CDHS";
47135 var missingCards = [];
47136 for (var i=0; i<suits.length; i++) {
47137 for (var j=0; j<values.length; j++) {
47138 var card = values[j] + suits[i];
47139 if (!(card in dupeTracker)) {
47140 missingCards.push(card);
47141 }
47142 }
47143 }
47144 // Display missing cards if six or less, ie clearly going for full deck
47145 if (missingCards.length > 0 && missingCards.length <= 6) {
47146 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47147 if (missingCards.length > 3) {
47148 msg += "...";
47149 }
47150 cardDetail.push(msg);
47151 }
47152 // Add card details to typeStr
47153 if (cardDetail.length > 0) {
47154 typeStr += " (" + cardDetail.join(", ") + ")";
47155 }
47156 }
47157 return typeStr;
47158 }
47159
47160 function setQrEvents(els) {
47161 els.on("mouseenter", createQr);
47162 els.on("mouseleave", destroyQr);
47163 els.on("click", toggleQr);
47164 }
47165
47166 function createQr(e) {
47167 var content = e.target.textContent || e.target.value;
47168 if (content) {
47169 var size = 130;
47170 DOM.qrImage.qrcode({width: size, height: size, text: content});
47171 if (!showQr) {
47172 DOM.qrHider.addClass("hidden");
47173 }
47174 else {
47175 DOM.qrHider.removeClass("hidden");
47176 }
47177 DOM.qrContainer.removeClass("hidden");
47178 }
47179 }
47180
47181 function destroyQr() {
47182 DOM.qrImage.text("");
47183 DOM.qrContainer.addClass("hidden");
47184 }
47185
47186 function toggleQr() {
47187 showQr = !showQr;
47188 DOM.qrHider.toggleClass("hidden");
47189 DOM.qrHint.toggleClass("hidden");
47190 }
47191
47192 function bip44TabSelected() {
47193 return DOM.bip44tab.hasClass("active");
47194 }
47195
47196 function bip32TabSelected() {
47197 return DOM.bip32tab.hasClass("active");
47198 }
47199
47200 function useP2wpkhNestedInP2sh() {
47201 return DOM.useP2wpkhNestedInP2sh.prop("checked");
47202 }
47203
47204 function networkHasBip49() {
47205 return networks[DOM.network.val()].p2wpkhNestedInP2shAvailable;
47206 }
47207
47208 function bip49TabSelected() {
47209 return DOM.bip49tab.hasClass("active");
47210 }
47211
47212 function setHdCoin(coinValue) {
47213 DOM.bip44coin.val(coinValue);
47214 DOM.bip49coin.val(coinValue);
47215 }
47216
47217 function showP2wpkhNestedInP2shAvailable() {
47218 DOM.bip49unavailable.addClass("hidden");
47219 DOM.bip49available.removeClass("hidden");
47220 DOM.useP2wpkhNestedInP2sh.prop("disabled", false);
47221 }
47222
47223 function showP2wpkhNestedInP2shUnavailable() {
47224 DOM.bip49available.addClass("hidden");
47225 DOM.bip49unavailable.removeClass("hidden");
47226 DOM.useP2wpkhNestedInP2sh.prop("disabled", true);
47227 DOM.useP2wpkhNestedInP2sh.prop("checked", false);
47228 }
47229
47230 function useBitpayAddresses() {
47231 return !(DOM.useBitpayAddresses.prop("checked"));
47232 }
47233
47234 function setBitcoinCashNetworkValues() {
47235 if (useBitpayAddresses()) {
47236 network = bitcoinjs.bitcoin.networks.bitcoin;
47237 }
47238 else {
47239 network = bitcoinjs.bitcoin.networks.bitcoinCashBitbpay;
47240 }
47241 }
47242
47243 function adjustNetworkForBip49() {
47244 // If bip49 is selected the xpub/xprv prefixes need to be adjusted
47245 // to avoid accidentally importing BIP49 xpub to BIP44 watch only
47246 // wallet.
47247 // See https://github.com/iancoleman/bip39/issues/125
47248 if (P2wpkhNestedInP2shSelected()) {
47249 if (network == bitcoinjs.bitcoin.networks.bitcoin) {
47250 network = bitcoinjs.bitcoin.networks.bitcoinBip49;
47251 }
47252 else if (network == bitcoinjs.bitcoin.networks.testnet) {
47253 network = bitcoinjs.bitcoin.networks.testnetBip49;
47254 }
47255 else if (network == bitcoinjs.bitcoin.networks.litecoin) {
47256 network = bitcoinjs.bitcoin.networks.litecoinBip49;
47257 }
47258 }
47259 else {
47260 if (network == bitcoinjs.bitcoin.networks.bitcoinBip49) {
47261 network = bitcoinjs.bitcoin.networks.bitcoin;
47262 }
47263 else if (network == bitcoinjs.bitcoin.networks.testnetBip49) {
47264 network = bitcoinjs.bitcoin.networks.testnet;
47265 }
47266 else if (network == bitcoinjs.bitcoin.networks.litecoinBip49) {
47267 network = bitcoinjs.bitcoin.networks.litecoin;
47268 }
47269 }
47270 }
47271
47272 var networks = [
47273 {
47274 name: "BCH - Bitcoin Cash",
47275 p2wpkhNestedInP2shAvailable: false,
47276 onSelect: function() {
47277 DOM.useBitpayAddressesContainer.removeClass("hidden");
47278 setBitcoinCashNetworkValues();
47279 setHdCoin(145);
47280 },
47281 },
47282 {
47283 name: "BTC - Bitcoin",
47284 p2wpkhNestedInP2shAvailable: true,
47285 onSelect: function() {
47286 network = bitcoinjs.bitcoin.networks.bitcoin;
47287 setHdCoin(0);
47288 },
47289 },
47290 {
47291 name: "BTC - Bitcoin Testnet",
47292 p2wpkhNestedInP2shAvailable: true,
47293 onSelect: function() {
47294 network = bitcoinjs.bitcoin.networks.testnet;
47295 setHdCoin(1);
47296 },
47297 },
47298 {
47299 name: "CLAM - Clams",
47300 p2wpkhNestedInP2shAvailable: false,
47301 onSelect: function() {
47302 network = bitcoinjs.bitcoin.networks.clam;
47303 setHdCoin(23);
47304 },
47305 },
47306 {
47307 name: "CRW - Crown",
47308 p2wpkhNestedInP2shAvailable: false,
47309 onSelect: function() {
47310 network = bitcoinjs.bitcoin.networks.crown;
47311 setHdCoin(72);
47312 },
47313 },
47314 {
47315 name: "DASH - Dash",
47316 p2wpkhNestedInP2shAvailable: false,
47317 onSelect: function() {
47318 network = bitcoinjs.bitcoin.networks.dash;
47319 setHdCoin(5);
47320 },
47321 },
47322 {
47323 name: "DASH - Dash Testnet",
47324 p2wpkhNestedInP2shAvailable: false,
47325 onSelect: function() {
47326 network = bitcoinjs.bitcoin.networks.dashtn;
47327 setHdCoin(1);
47328 },
47329 },
47330 {
47331 name: "DOGE - Dogecoin",
47332 p2wpkhNestedInP2shAvailable: false,
47333 onSelect: function() {
47334 network = bitcoinjs.bitcoin.networks.dogecoin;
47335 setHdCoin(3);
47336 },
47337 },
47338 {
47339 name: "ETH - Ethereum",
47340 p2wpkhNestedInP2shAvailable: false,
47341 onSelect: function() {
47342 network = bitcoinjs.bitcoin.networks.bitcoin;
47343 setHdCoin(60);
47344 },
47345 },
47346 {
47347 name: "FJC - Fujicoin",
47348 p2wpkhNestedInP2shAvailable: false,
47349 onSelect: function() {
47350 network = bitcoinjs.bitcoin.networks.fujicoin;
47351 setHdCoin(75);
47352 },
47353 },
47354 {
47355 name: "GAME - GameCredits",
47356 p2wpkhNestedInP2shAvailable: false,
47357 onSelect: function() {
47358 network = bitcoinjs.bitcoin.networks.game;
47359 setHdCoin(101);
47360 },
47361 },
47362 {
47363 name: "JBS - Jumbucks",
47364 p2wpkhNestedInP2shAvailable: false,
47365 onSelect: function() {
47366 network = bitcoinjs.bitcoin.networks.jumbucks;
47367 setHdCoin(26);
47368 },
47369 },
47370 {
47371 name: "LTC - Litecoin",
47372 p2wpkhNestedInP2shAvailable: true,
47373 onSelect: function() {
47374 network = bitcoinjs.bitcoin.networks.litecoin;
47375 setHdCoin(2);
47376 DOM.litecoinLtubContainer.removeClass("hidden");
47377 },
47378 },
47379 {
47380 name: "MAZA - Maza",
47381 p2wpkhNestedInP2shAvailable: false,
47382 onSelect: function() {
47383 network = bitcoinjs.bitcoin.networks.maza;
47384 setHdCoin(13);
47385 },
47386 },
47387
47388 {
47389 name: "NMC - Namecoin",
47390 p2wpkhNestedInP2shAvailable: false,
47391 onSelect: function() {
47392 network = bitcoinjs.bitcoin.networks.namecoin;
47393 setHdCoin(7);
47394 },
47395 },
47396 {
47397 name: "PIVX - PIVX",
47398 p2wpkhNestedInP2shAvailable: false,
47399 onSelect: function() {
47400 network = bitcoinjs.bitcoin.networks.pivx;
47401 setHdCoin(119);
47402 },
47403 },
47404 {
47405 name: "PIVX - PIVX Testnet",
47406 p2wpkhNestedInP2shAvailable: false,
47407 onSelect: function() {
47408 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47409 setHdCoin(1);
47410 },
47411 },
47412 {
47413 name: "PPC - Peercoin",
47414 p2wpkhNestedInP2shAvailable: false,
47415 onSelect: function() {
47416 network = bitcoinjs.bitcoin.networks.peercoin;
47417 setHdCoin(6);
47418 },
47419 },
47420 {
47421 name: "SDC - ShadowCash",
47422 p2wpkhNestedInP2shAvailable: false,
47423 onSelect: function() {
47424 network = bitcoinjs.bitcoin.networks.shadow;
47425 setHdCoin(35);
47426 },
47427 },
47428 {
47429 name: "SDC - ShadowCash Testnet",
47430 p2wpkhNestedInP2shAvailable: false,
47431 onSelect: function() {
47432 network = bitcoinjs.bitcoin.networks.shadowtn;
47433 setHdCoin(1);
47434 },
47435 },
47436 {
47437 name: "SLM - Slimcoin",
47438 p2wpkhNestedInP2shAvailable: false,
47439 onSelect: function() {
47440 network = bitcoinjs.bitcoin.networks.slimcoin;
47441 setHdCoin(63);
47442 },
47443 },
47444 {
47445 name: "SLM - Slimcoin Testnet",
47446 p2wpkhNestedInP2shAvailable: false,
47447 onSelect: function() {
47448 network = bitcoinjs.bitcoin.networks.slimcointn;
47449 setHdCoin(111);
47450 },
47451 },
47452 {
47453 name: "USNBT - NuBits",
47454 p2wpkhNestedInP2shAvailable: false,
47455 onSelect: function() {
47456 network = bitcoinjs.bitcoin.networks.nubits;
47457 setHdCoin(12);
47458 },
47459 },
47460 {
47461 name: "VIA - Viacoin",
47462 p2wpkhNestedInP2shAvailable: false,
47463 onSelect: function() {
47464 network = bitcoinjs.bitcoin.networks.viacoin;
47465 setHdCoin(14);
47466 },
47467 },
47468 {
47469 name: "VIA - Viacoin Testnet",
47470 p2wpkhNestedInP2shAvailable: false,
47471 onSelect: function() {
47472 network = bitcoinjs.bitcoin.networks.viacointestnet;
47473 setHdCoin(1);
47474 },
47475 },
47476 {
47477 name: "XMY - Myriadcoin",
47478 p2wpkhNestedInP2shAvailable: false,
47479 onSelect: function() {
47480 network = bitcoinjs.bitcoin.networks.myriadcoin;
47481 setHdCoin(90);
47482 },
47483 },
47484 {
47485 name: "XRP - Ripple",
47486 p2wpkhNestedInP2shAvailable: false,
47487 onSelect: function() {
47488 network = bitcoinjs.bitcoin.networks.bitcoin;
47489 setHdCoin(144);
47490 },
47491 }
47492 ]
47493
47494 var clients = [
47495 {
47496 name: "Bitcoin Core",
47497 onSelect: function() {
47498 DOM.bip32path.val("m/0'/0'");
47499 DOM.hardenedAddresses.prop('checked', true);
47500 },
47501 },
47502 {
47503 name: "blockchain.info",
47504 onSelect: function() {
47505 DOM.bip32path.val("m/44'/0'/0'");
47506 DOM.hardenedAddresses.prop('checked', false);
47507 },
47508 },
47509 {
47510 name: "MultiBit HD",
47511 onSelect: function() {
47512 DOM.bip32path.val("m/0'/0");
47513 DOM.hardenedAddresses.prop('checked', false);
47514 },
47515 }
47516 ]
47517
47518 init();
47519
47520 })();
47521 </script>
47522 </body>
47523 </html>