]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Merge pull request #120 from fujicoin/add-fujicoin
[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.6</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
127 <div class="form-group">
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
130 <p data-translate>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).</p>
131 <p data-translate-html>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
137 <div class="form-group generate-container">
138 <label class="col-sm-2 control-label"></label>
139 <div class="col-sm-10">
140 <div class="form-inline">
141 <div class="input-group-inline">
142 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
143 <button class="btn generate">Generate</button>
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
154 <span data-translate>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label" data-translate>Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts either binary, base 6, 6-sided dice, base 10, hexadecimal or cards" data-translate-placeholder></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" data-translate><span class="more-info" data-translate-title 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" data-translate>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" data-translate>Entropy Type</label>
186 <div class="type col-sm-3 form-control-static"></div>
187 <label class="col-sm-3 control-label" data-translate>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" data-translate>Raw Entropy Words</label>
192 <div class="word-count col-sm-3 form-control-static"></div>
193 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
194 <div class="bits col-sm-3 form-control-static"></div>
195 </div>
196 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
197 <div class="filtered col-sm-9 form-control-static"></div>
198 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
199 <div class="binary col-sm-9 form-control-static"></div>
200 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
201 <div class="col-sm-9">
202 <select class="mnemonic-length form-control">
203 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
204 <option value="12">12 <span data-translate>Words</span></option>
205 <option value="15">15 <span data-translate>Words</option>
206 <option value="18">18 <span data-translate>Words</span></option>
207 <option value="21">21 <span data-translate>Words</span></option>
208 <option value="24">24 <span data-translate>Words</span></option>
209 </select>
210 </div>
211 </div>
212 <div class="col-sm-3">
213 <p data-translate>Valid entropy values include:</p>
214 <ul>
215 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
216 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
217 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
218 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
219 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
220 <li><strong data-translate>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 data-translate>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" data-translate>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" data-translate>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" data-translate>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" data-translate>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" data-translate>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" data-translate>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" data-translate>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 data-translate-html>
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" data-translate>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" data-translate>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" data-translate>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" data-translate>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 data-translate>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 data-translate>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 data-translate>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 data-translate>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" data-translate>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 data-translate>
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" data-translate>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" data-translate>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 data-translate>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 data-translate>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" data-translate>Bitcoin Core</label>
431 <div class="col-sm-10">
432 <p class="form-control no-border" data-translate-html>
433 Use path <code>m/0'/0'</code> with hardened addresses.
434 </p>
435 <p class="form-control no-border" data-translate-html>
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" data-translate>Multibit</label>
443 <div class="col-sm-10">
444 <p class="form-control no-border">
445 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
446 </p>
447 <p class="form-control no-border">
448 <span data-translate>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" data-translate>Block Explorers</label>
455 <div class="col-sm-10">
456 <p class="form-control no-border">
457 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
458 <span data-translate-html>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 data-translate>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 data-translate>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 data-translate-html>
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" data-translate>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" data-translate>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" data-translate>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" data-translate>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 data-translate>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 data-translate>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 data-translate>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 data-translate>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" data-translate>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" data-translate>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" data-translate>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 data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
582 <table class="table table-striped">
583 <thead>
584 <th>
585 <div class="input-group">
586 <span data-translate>Path</span>&nbsp;&nbsp;
587 <button class="index-toggle" data-translate>Toggle</button>
588 </div>
589 </th>
590 <th>
591 <div class="input-group">
592 <span data-translate>Address</span>&nbsp;&nbsp;
593 <button class="address-toggle" data-translate>Toggle</button>
594 </div>
595 </th>
596 <th>
597 <div class="input-group">
598 <span data-translate>Public Key</span>&nbsp;&nbsp;
599 <button class="public-key-toggle" data-translate>Toggle</button>
600 </div>
601 </th>
602 <th>
603 <div class="input-group">
604 <span data-translate>Private Key</span>&nbsp;&nbsp;
605 <button class="private-key-toggle" data-translate>Toggle</button>
606 </div>
607 </th>
608 </thead>
609 <tbody class="addresses monospace">
610 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
611 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
612 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
613 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
614 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
615 </tbody>
616 </table>
617 </div>
618 </div>
619 <span data-translate>Show more rows</span>:
620 <input type="number" class="rows-to-add" value="20">
621 <button class="more" data-translate>Show</button>
622
623 <hr>
624
625 <div class="row">
626 <div class="col-md-12">
627 <h2 data-translate>More info</h2>
628 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
629 <p data-translate-html>
630 Read more at the
631 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
632 </p>
633 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
634 <p data-translate-html>
635 Read more at the
636 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
637 </p>
638 <p data-translate-html>
639 See the demo at
640 <a href="http://bip32.org/" target="_blank">bip32.org</a>
641 </p>
642 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
643 <p data-translate-html>
644 Read more at the
645 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
646 </p>
647 <h3>BIP49 <span class="small" data-translate>Derivation scheme for P2WPKH-nested-in-P2SH based accounts</span></h3>
648 <p data-translate-html>
649 Read more at the
650 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">official BIP49 spec</a>
651 </p>
652 <h3 data-translate>Private Keys</h3>
653 <p>
654 <span data-translate-html>
655 Use private keys at
656 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
657 </span>
658 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
659 </p>
660 <h3 id="entropy-notes" data-translate>Entropy</h3>
661 <p>
662 <span data-translate-html>
663 Entropy values must be sourced from a
664 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
665 </span>
666 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
667 <span data-translate-html>
668 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
669 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
670 random enough for the needs of this tool.
671 </span>
672 </p>
673 <p>
674 <strong><span data-translate>Do not store entropy.</span></strong>
675 </p>
676 <p>
677 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
678 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
679 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
680 </p>
681 <p>
682 <span data-translate-html>
683 The random mnemonic generator on this page uses a
684 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
685 </span>
686 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
687 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
688 <span data-translate>In that case you might choose to use your own source of entropy.</span>
689 </p>
690 <p>
691 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
692 </p>
693 <h3 data-translate>License</h3>
694 <p>
695 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
696 </span>
697 </p>
698 <p data-translate>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.</p>
699 </div>
700 </div>
701
702 <hr>
703
704 <div class="row">
705 <div class="col-md-12">
706
707 <h2 data-translate>Offline Usage</h2>
708
709 <p data-translate>
710 You can use this tool without having to be online.
711 </p>
712 <p data-translate>
713 In your browser, select file save-as, and save this page
714 as a file.
715 </p>
716 <p data-translate>
717 Double-click that file to open it in a browser
718 on any offline computer.
719 </p>
720 <p>
721 <span data-translate>Alternatively, download the file from the repository</span>
722 -
723 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
724 </p>
725
726 </div>
727 </div>
728
729 <hr>
730
731 <div class="row">
732 <div class="col-md-12">
733
734 <h2 data-translate>This project is 100% open-source code</h2>
735
736 <p>
737 <span data-translate>Get the source code from the repository</span>
738 -
739 <a href="https://github.com/iancoleman/bip39" target="_blank">
740 https://github.com/iancoleman/bip39
741 </a>
742 </p>
743
744 <h3 data-translate>Libraries</h3>
745
746 <p>
747 <span>BitcoinJS - </span>
748 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
749 https://github.com/bitcoinjs/bitcoinjs-lib
750 </a>
751 </p>
752
753 <p>
754 <span>jsBIP39 - </span>
755 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
756 https://github.com/iancoleman/jsbip39
757 </a>
758 </p>
759
760 <p>
761 <span>sjcl - </span>
762 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
763 https://github.com/bitwiseshiftleft/sjcl
764 </a>
765 </p>
766
767 <p>
768 <span>jQuery - </span>
769 <a href="https://jquery.com/" target="_blank">
770 https://jquery.com/
771 </a>
772 </p>
773
774 <p>
775 <span>Twitter Bootstrap - </span>
776 <a href="http://getbootstrap.com/" target="_blank">
777 http://getbootstrap.com/
778 </a>
779 </p>
780
781 </div>
782 </div>
783
784 </div>
785
786 <div class="qr-container hidden">
787 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
788 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
789 <div class="qr-hider hidden">
790 <div class="qr-image"></div>
791 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
792 </div>
793 </div>
794
795 <div class="feedback-container">
796 <div class="feedback">Loading...</div>
797 </div>
798
799 <script type="text/template" id="address-row-template">
800 <tr>
801 <td class="index"><span></span></td>
802 <td class="address"><span data-show-qr></span></td>
803 <td class="pubkey"><span data-show-qr></span></td>
804 <td class="privkey"><span data-show-qr></span></td>
805 </tr>
806 </script>
807 <script>// From
808 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
809 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
810 // but is not required in any modern browsers.
811 // For more information, see
812 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
813
814 //----------------------------------------------------------------------
815 //
816 // ECMAScript 2015 Polyfills
817 //
818 //----------------------------------------------------------------------
819
820 (function (global) {
821 "use strict";
822
823 // Set this to always override native implementations, for testing
824 // the polyfill in browsers with partial/full ES2015 support.
825 var OVERRIDE_NATIVE_FOR_TESTING = false;
826
827 var undefined = (void 0); // Paranoia
828
829 // Helpers
830
831 function strict(o) {
832 return o === global ? undefined : o;
833 }
834
835 function hook(o, p, f) {
836 var op = o[p];
837 console.assert(typeof op === 'function', 'Hooking a non-function');
838 o[p] = function() {
839 var o = strict(this);
840 var r = f.apply(o, arguments);
841 return r !== undefined ? r : op.apply(o, arguments);
842 };
843 }
844
845 function isSymbol(s) {
846 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
847 }
848
849 function getPropertyDescriptor(target, name) {
850 var desc = Object.getOwnPropertyDescriptor(target, name);
851 var proto = Object.getPrototypeOf(target);
852 while (!desc && proto) {
853 desc = Object.getOwnPropertyDescriptor(proto, name);
854 proto = Object.getPrototypeOf(proto);
855 }
856 return desc;
857 }
858
859 var enqueue = (function(nativePromise, nativeSetImmediate) {
860 if (nativePromise)
861 return function(job) { nativePromise.resolve().then(function() { job(); }); };
862 if (nativeSetImmediate)
863 return function(job) { nativeSetImmediate(job); };
864 return function(job) { setTimeout(job, 0); };
865 }(global['Promise'], global['setImmediate']));
866
867 function define(o, p, v, override) {
868 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
869 return;
870
871 if (typeof v === 'function') {
872 // Sanity check that functions are appropriately named (where possible)
873 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
874 Object.defineProperty(o, p, {
875 value: v,
876 configurable: true,
877 enumerable: false,
878 writable: true
879 });
880 } else {
881 Object.defineProperty(o, p, {
882 value: v,
883 configurable: false,
884 enumerable: false,
885 writable: false
886 });
887 }
888 }
889
890 function set_internal(o, p, v) {
891 Object.defineProperty(o, p, {
892 value: v,
893 configurable: false,
894 enumerable: false,
895 writable: true
896 });
897 }
898
899 // Snapshot intrinsic functions
900 var $isNaN = global.isNaN,
901 $parseInt = global.parseInt,
902 $parseFloat = global.parseFloat;
903
904 var E = Math.E,
905 LOG10E = Math.LOG10E,
906 LOG2E = Math.LOG2E,
907 abs = Math.abs,
908 ceil = Math.ceil,
909 exp = Math.exp,
910 floor = Math.floor,
911 log = Math.log,
912 max = Math.max,
913 min = Math.min,
914 pow = Math.pow,
915 random = Math.random,
916 sqrt = Math.sqrt;
917
918 var orig_match = String.prototype.match,
919 orig_replace = String.prototype.replace,
920 orig_search = String.prototype.search,
921 orig_split = String.prototype.split;
922
923 // These are used for implementing the polyfills, but not exported.
924
925 // Inspired by https://gist.github.com/1638059
926 /** @constructor */
927 function EphemeronTable() {
928 var secretKey = ObjectCreate(null);
929
930 function conceal(o) {
931 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
932 Object.defineProperty(o, 'valueOf', {
933 value: (function(secretKey) {
934 return function (k) {
935 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
936 };
937 }(secretKey)),
938 configurable: true,
939 writeable: true,
940 enumerable: false
941 });
942 return secrets;
943 }
944
945 function reveal(o) {
946 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
947 return v === o ? null : v;
948 }
949
950 return {
951 clear: function() {
952 secretKey = ObjectCreate(null);
953 },
954 remove: function(key) {
955 var secrets = reveal(key);
956 if (secrets && HasOwnProperty(secrets, 'value')) {
957 delete secrets.value;
958 return true;
959 }
960 return false;
961 },
962 get: function(key, defaultValue) {
963 var secrets = reveal(key);
964 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
965 },
966 has: function(key) {
967 var secrets = reveal(key);
968 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
969 },
970 set: function(key, value) {
971 var secrets = reveal(key) || conceal(key);
972 secrets.value = value;
973 }
974 };
975 }
976
977 var empty = Object.create(null);
978
979 //----------------------------------------------------------------------
980 //
981 // ECMAScript 2015
982 // http://www.ecma-international.org/ecma-262/6.0/
983 //
984 //----------------------------------------------------------------------
985
986 // ---------------------------------------
987 // 19.4 Symbol Objects
988 // ---------------------------------------
989
990 // NOTE: Symbols are defined here - out of spec order - since we need the
991 // properties and prototype to be populated for other polyfills.
992
993 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
994
995 var symbolForKey;
996 (function() {
997 var secret = Object.create(null);
998 var symbolMap = {};
999 symbolForKey = function(k) {
1000 return symbolMap[k];
1001 };
1002
1003 var GlobalSymbolRegistry = [];
1004
1005 function unique(bits) {
1006 return Array(bits + 1).join('x').replace(/x/g, function() {
1007 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
1008 });
1009 }
1010
1011 // 19.4.1 The Symbol Constructor
1012 // 19.4.1.1 Symbol ( description=undefined )
1013 function Symbol(description) {
1014 if (!(this instanceof Symbol)) return new Symbol(description, secret);
1015 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
1016
1017 var descString = description === undefined ? undefined : String(description);
1018
1019 set_internal(this, '[[SymbolData]]', unique(128));
1020 set_internal(this, '[[Description]]', descString);
1021
1022 symbolMap[this] = this;
1023 return this;
1024 }
1025
1026 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1027 global.Symbol = Symbol;
1028
1029 // 19.4.2 Properties of the Symbol Constructor
1030
1031 // 19.4.2.1 Symbol.for (key)
1032 define(Symbol, 'for', function for_(key) {
1033 var stringKey = String(key);
1034 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1035 var e = GlobalSymbolRegistry[i];
1036 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1037 }
1038 var newSymbol = Symbol(key);
1039 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1040 return newSymbol;
1041 });
1042
1043 // 19.4.2.2 Symbol.hasInstance
1044 // 19.4.2.3 Symbol.isConcatSpreadable
1045
1046 // 19.4.2.4 Symbol.iterator
1047 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1048
1049 // 19.4.2.5 Symbol.keyFor (sym)
1050 define(Symbol, 'keyFor', function keyFor(sym) {
1051 if (!(sym instanceof Symbol)) throw TypeError();
1052 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1053 var e = GlobalSymbolRegistry[i];
1054 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1055 }
1056 return undefined;
1057 });
1058
1059 // 19.4.2.6 Symbol.match
1060 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1061
1062 // 19.4.2.7 Symbol.prototype
1063
1064 // 19.4.2.8 Symbol.replace
1065 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1066
1067 // 19.4.2.9 Symbol.search
1068 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1069
1070 // 19.4.2.10 Symbol.species
1071
1072 // 19.4.2.11 Symbol.search
1073 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1074
1075 // 19.4.2.12 Symbol.toPrimitive
1076
1077 // 19.4.2.13 Symbol.toStringTag
1078 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1079
1080 // 19.4.2.14 Symbol.unscopables
1081
1082 // 19.4.3 Properties of the Symbol Prototype Object
1083 // 19.4.3.1 Symbol.prototype.constructor
1084
1085 // 19.4.3.2 Symbol.prototype.toString ( )
1086 Object.defineProperty(Symbol.prototype, 'toString', {
1087 value: function toString() {
1088 var s = strict(this);
1089 var desc = s['[[Description]]'];
1090 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1091 },
1092 configurable: true, writeable: true, enumerable: false });
1093
1094 // 19.4.3.3 Symbol.prototype.valueOf ( )
1095 Object.defineProperty(Symbol.prototype, 'valueOf', {
1096 value: function valueOf() {
1097 // To prevent automatic string conversion:
1098 throw TypeError();
1099
1100 // Spec has approximately the following:
1101 //var s = strict(this);
1102 //if (Type(s) === 'symbol') return s;
1103 //if (Type(s) !== 'object') throw TypeError();
1104 //if (!('[[SymbolData]]' in s)) throw TypeError();
1105 //return s['[[SymbolData]]'];
1106 },
1107 configurable: true, writeable: true, enumerable: false });
1108
1109 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1110 // (Done later to polyfill partial implementations)
1111
1112 // 19.4.4 Properties of Symbol Instances
1113 }());
1114
1115 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1116
1117 // Defined here so that other prototypes can reference it
1118 // 25.1.2 The %IteratorPrototype% Object
1119 var $IteratorPrototype$ = {};
1120
1121 //----------------------------------------
1122 // 6 ECMAScript Data Types and Values
1123 //----------------------------------------
1124
1125 // 6.1 ECMAScript Language Types
1126
1127 // "Type(x)" is used as shorthand for "the type of x"...
1128 function Type(v) {
1129 switch (typeof v) {
1130 case 'undefined': return 'undefined';
1131 case 'boolean': return 'boolean';
1132 case 'number': return 'number';
1133 case 'string': return 'string';
1134 case 'symbol': return 'symbol';
1135 default:
1136 if (v === null) return 'null';
1137 if (v instanceof global.Symbol) return 'symbol';
1138 return 'object';
1139 }
1140 }
1141
1142 // 6.1.5.1 Well-Known Symbols
1143 var $$iterator = global.Symbol.iterator,
1144 $$match = global.Symbol.match,
1145 $$replace = global.Symbol.replace,
1146 $$search = global.Symbol.search,
1147 $$split = global.Symbol.split,
1148 $$toStringTag = global.Symbol.toStringTag;
1149
1150 //----------------------------------------
1151 // 7 Abstract Operations
1152 //----------------------------------------
1153
1154 //----------------------------------------
1155 // 7.1 Type Conversion
1156 //----------------------------------------
1157
1158 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1159 // just use valueOf()
1160
1161 // 7.1.2 ToBoolean ( argument )
1162 // just use Boolean()
1163
1164 // 7.1.3 ToNumber ( argument )
1165 // just use Number()
1166
1167 // 7.1.4 ToInteger ( argument )
1168 function ToInteger(n) {
1169 n = Number(n);
1170 if ($isNaN(n)) return 0;
1171 if (n === 0 || n === Infinity || n === -Infinity) return n;
1172 return ((n < 0) ? -1 : 1) * floor(abs(n));
1173 }
1174
1175 // 7.1.5 ToInt32 ( argument )
1176 function ToInt32(v) { return v >> 0; }
1177
1178 // 7.1.6 ToUint32 ( argument )
1179 function ToUint32(v) { return v >>> 0; }
1180
1181 // 7.1.7 ToInt16 ( argument )
1182 function ToInt16(v) { return (v << 16) >> 16; }
1183
1184 // 7.1.8 ToUint16 ( argument )
1185 function ToUint16(v) { return v & 0xFFFF; }
1186
1187 // 7.1.9 ToInt8 ( argument )
1188 function ToInt8(v) { return (v << 24) >> 24; }
1189
1190 // 7.1.10 ToUint8 ( argument )
1191 function ToUint8(v) { return v & 0xFF; }
1192
1193 // 7.1.11 ToUint8Clamp ( argument )
1194 function ToUint8Clamp(argument) {
1195 var number = Number(argument);
1196 if ($isNaN(number)) return 0;
1197 if (number <= 0) return 0;
1198 if (number >= 255) return 255;
1199 var f = floor(number);
1200 if ((f + 0.5) < number) return f + 1;
1201 if (number < (f + 0.5)) return f;
1202 if (f % 2) return f + 1;
1203 return f;
1204 }
1205
1206 // 7.1.12 ToString ( argument )
1207 // just use String()
1208
1209 // 7.1.13 ToObject ( argument )
1210 function ToObject(v) {
1211 if (v === null || v === undefined) throw TypeError();
1212 return Object(v);
1213 }
1214
1215 // 7.1.14 ToPropertyKey ( argument )
1216 function ToPropertyKey(v) {
1217 return String(v);
1218 }
1219
1220 // 7.1.15 ToLength ( argument )
1221 function ToLength(v) {
1222 var len = ToInteger(v);
1223 if (len <= 0) return 0;
1224 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1225 return min(len, 0x20000000000000 - 1); // 2^53-1
1226 }
1227
1228 // 7.1.16 CanonicalNumericIndexString ( argument )
1229
1230 //----------------------------------------
1231 // 7.2 Testing and Comparison Operations
1232 //----------------------------------------
1233
1234 // 7.2.1 RequireObjectCoercible ( argument )
1235 // 7.2.2 IsArray ( argument )
1236
1237 // 7.2.3 IsCallable ( argument )
1238 function IsCallable(o) { return typeof o === 'function'; }
1239
1240 // 7.2.4 IsConstructor ( argument )
1241 function IsConstructor(o) {
1242 // Hacks for Safari 7 TypedArray XXXConstructor objects
1243 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1244 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1245 // TODO: Can this be improved on?
1246 return typeof o === 'function';
1247 }
1248
1249 // 7.2.5 IsExtensible (O)
1250 // 7.2.6 IsInteger ( argument )
1251
1252 // 7.2.7 IsPropertyKey ( argument )
1253 function IsPropertyKey(argument) {
1254 if (Type(argument) === 'string') return true;
1255 if (Type(argument) === 'symbol') return true;
1256 return false;
1257 }
1258
1259 // 7.2.8 IsRegExp ( argument )
1260 // 7.2.5 IsConstructor ( argument )
1261
1262 // 7.2.9 SameValue(x, y)
1263 function SameValue(x, y) {
1264 if (typeof x !== typeof y) return false;
1265 switch (typeof x) {
1266 case 'undefined':
1267 return true;
1268 case 'number':
1269 if (x !== x && y !== y) return true;
1270 if (x === 0 && y === 0) return 1/x === 1/y;
1271 return x === y;
1272 case 'boolean':
1273 case 'string':
1274 case 'object':
1275 default:
1276 return x === y;
1277 }
1278 }
1279
1280 // 7.2.10 SameValueZero(x, y)
1281 function SameValueZero(x, y) {
1282 if (typeof x !== typeof y) return false;
1283 switch (typeof x) {
1284 case 'undefined':
1285 return true;
1286 case 'number':
1287 if (x !== x && y !== y) return true;
1288 return x === y;
1289 case 'boolean':
1290 case 'string':
1291 case 'object':
1292 default:
1293 return x === y;
1294 }
1295 }
1296
1297 //----------------------------------------
1298 // 7.3 Operations on Objects
1299 //----------------------------------------
1300
1301 // 7.3.1 Get (O, P)
1302 // - just use o.p or o[p]
1303
1304 // 7.3.2 GetV (V, P)
1305 function GetV(v, p) {
1306 var o = ToObject(v);
1307 return o[p];
1308 }
1309
1310 // 7.3.3 Set (O, P, V, Throw)
1311 // - just use o.p = v or o[p] = v
1312
1313
1314
1315
1316 // 7.3.9 GetMethod (O, P)
1317 function GetMethod(o, p) {
1318 var func = GetV(o, p);
1319 if (func === undefined || func === null) return undefined;
1320 if (!IsCallable(func)) throw TypeError();
1321 return func;
1322 }
1323
1324 // 7.3.10 HasProperty (O, P)
1325 function HasProperty(o, p) {
1326 while (o) {
1327 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1328 if (Type(o) !== 'object') return false;
1329 o = Object.getPrototypeOf(o);
1330 }
1331 return false;
1332 }
1333
1334 // 7.3.11 HasOwnProperty (O, P)
1335 function HasOwnProperty(o, p) {
1336 return Object.prototype.hasOwnProperty.call(o, p);
1337 }
1338
1339 //----------------------------------------
1340 // 7.4 Operations on Iterator Objects
1341 //----------------------------------------
1342
1343 // 7.4.1 GetIterator ( obj, method )
1344 function GetIterator(obj, method) {
1345 if (arguments.length < 2)
1346 method = GetMethod(obj, $$iterator);
1347 var iterator = method.call(obj);
1348 if (Type(iterator) !== 'object') throw TypeError();
1349 return iterator;
1350 }
1351
1352 // 7.4.2 IteratorNext ( iterator, value )
1353 function IteratorNext(iterator, value) {
1354 if (arguments.length < 2)
1355 var result = iterator.next();
1356 else
1357 result = iterator.next(value);
1358 if (Type(result) !== 'object') throw TypeError();
1359 return result;
1360 }
1361
1362 // 7.4.3 IteratorComplete ( iterResult )
1363 function IteratorComplete(iterResult) {
1364 console.assert(Type(iterResult) === 'object');
1365 return Boolean(iterResult.done);
1366 }
1367
1368 // 7.4.4 IteratorValue ( iterResult )
1369 function IteratorValue(iterResult) {
1370 console.assert(Type(iterResult) === 'object');
1371 return iterResult.value;
1372 }
1373
1374 // 7.4.5 IteratorStep ( iterator )
1375 function IteratorStep( iterator, value ) {
1376 var result = IteratorNext(iterator, value);
1377 var done = result['done'];
1378 if (Boolean(done) === true) return false;
1379 return result;
1380 }
1381
1382 // 7.4.6 IteratorClose( iterator, completion )
1383 function IteratorClose( iterator, completion ) {
1384 console.assert(Type(iterator) === 'object');
1385 var _return = GetMethod(iterator, 'return');
1386 if (_return === undefined) return completion;
1387 try {
1388 var innerResult = _return[iterator]();
1389 } catch (result) {
1390 // TODO: If completion.[[type]] is throw, return completion
1391 return result;
1392 }
1393 if (Type(innerResult) !== 'object') throw TypeError();
1394 return completion;
1395 }
1396
1397 // 7.4.7 CreateIterResultObject (value, done)
1398 function CreateIterResultObject(value, done) {
1399 console.assert(Type(done) === 'boolean');
1400 var obj = {};
1401 obj["value"] = value;
1402 obj["done"] = done;
1403 return obj;
1404 }
1405
1406 // 7.4.8 CreateListIterator (list)
1407 // 7.4.8.1 ListIterator next( )
1408 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1409 // 7.4.9.1 CompoundIterator next( )
1410
1411 //----------------------------------------
1412 // 8 Executable Code and Execution Contexts
1413 //----------------------------------------
1414
1415 //----------------------------------------
1416 // 8.4 Jobs and Job Queues
1417 //----------------------------------------
1418
1419 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1420 function EnqueueJob(queueName, job, args) {
1421 var fn = function() { job.apply(undefined, args); };
1422 enqueue(fn);
1423 }
1424
1425 // 8.4.2 NextJob result
1426 function NextJob(result) {
1427 // no-op
1428 }
1429
1430 //----------------------------------------
1431 // 9 Ordinary and Exotic Objects Behaviors
1432 //----------------------------------------
1433
1434 // 9.1.11 [[Enumerate]] ()
1435 function Enumerate(obj) {
1436 var e = [];
1437 if (Object(obj) !== obj) return e;
1438 var visited = new Set;
1439 while (obj !== null) {
1440 Object.getOwnPropertyNames(obj).forEach(function(name) {
1441 if (!visited.has(name)) {
1442 var desc = Object.getOwnPropertyDescriptor(obj, name);
1443 if (desc) {
1444 visited.add(name);
1445 if (desc.enumerable) e.push(name);
1446 }
1447 }
1448 });
1449 obj = Object.getPrototypeOf(obj);
1450 }
1451 return e[$$iterator]();
1452 }
1453
1454 // 9.1.12 [[OwnPropertyKeys]] ( )
1455 function OwnPropertyKeys(o) {
1456 return Object.getOwnPropertyNames(o);
1457 }
1458
1459 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1460 function ObjectCreate(proto, internalSlotsList) {
1461 return Object.create(proto, internalSlotsList);
1462 }
1463
1464 // ---------------------------------------
1465 // 19 Fundamental Objects
1466 // ---------------------------------------
1467
1468 // ---------------------------------------
1469 // 19.1 Object Objects
1470 // ---------------------------------------
1471
1472 // 19.1.1 The Object Constructor
1473 // 19.1.1.1 Object ( [ value ] )
1474 // 19.1.2 Properties of the Object Constructor
1475 // 19.1.2.1 Object.assign ( target, ...sources )
1476 define(
1477 Object, 'assign',
1478 function assign(target, /*...*/sources) {
1479 var to = ToObject(target);
1480 if (arguments.length < 2) return to;
1481
1482 var sourcesIndex = 1;
1483 while (sourcesIndex < arguments.length) {
1484 var nextSource = arguments[sourcesIndex++];
1485 if (nextSource === undefined || nextSource === null) {
1486 var keys = [];
1487 } else {
1488 var from = ToObject(nextSource);
1489 keys = OwnPropertyKeys(from);
1490 }
1491 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1492 var nextKey = keys[keysIndex];
1493 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1494 if (desc !== undefined && desc.enumerable) {
1495 var propValue = from[nextKey];
1496 to[nextKey] = propValue;
1497 }
1498 }
1499 }
1500 return to;
1501 });
1502
1503 // 19.1.2.2 Object.create ( O [ , Properties ] )
1504 // 19.1.2.3 Object.defineProperties ( O, Properties )
1505 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1506 // 19.1.2.5 Object.freeze ( O )
1507 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1508
1509 (function() {
1510 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1511 $getOwnPropertyNames = Object.getOwnPropertyNames,
1512 $keys = Object.keys,
1513 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1514
1515 function isStringKey(k) { return !symbolForKey(k); }
1516
1517 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1518 define(
1519 Object, 'getOwnPropertyNames',
1520 function getOwnPropertyNames(o) {
1521 if (Object.prototype.toString.call(o) === '[object Window]') {
1522 // Workaround for cross-realm calling by IE itself.
1523 // https://github.com/inexorabletash/polyfill/issues/96
1524 try {
1525 return $getOwnPropertyNames(o).filter(isStringKey);
1526 } catch (_) {
1527 return $window_names.slice();
1528 }
1529 }
1530 return $getOwnPropertyNames(o).filter(isStringKey);
1531 }, !nativeSymbols);
1532
1533 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1534 define(
1535 Object, 'getOwnPropertySymbols',
1536 function getOwnPropertySymbols(o) {
1537 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1538 }, !nativeSymbols);
1539
1540 // 19.1.2.14 Object.keys ( O )
1541 define(
1542 Object, 'keys',
1543 function keys(o) {
1544 return $keys(o).filter(isStringKey);
1545 }, !nativeSymbols);
1546 }());
1547
1548 // 19.1.2.9 Object.getPrototypeOf ( O )
1549 // 19.1.2.10 Object.is ( value1, value2 )
1550 define(
1551 Object, 'is',
1552 function is(value1, value2) {
1553 return SameValue(value1, value2);
1554 });
1555
1556 // 19.1.2.11 Object.isExtensible ( O )
1557 // 19.1.2.12 Object.isFrozen ( O )
1558 // 19.1.2.13 Object.isSealed ( O )
1559
1560 // 19.1.2.14 Object.keys ( O )
1561 // see above
1562
1563 // 19.1.2.15 Object.preventExtensions ( O )
1564 // 19.1.2.16 Object.prototype
1565 // 19.1.2.17 Object.seal ( O )
1566
1567 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1568 define(
1569 Object, 'setPrototypeOf',
1570 function setPrototypeOf(o, proto) {
1571 if (Type(o) !== 'object') throw TypeError();
1572 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1573 o.__proto__ = proto;
1574 return o;
1575 }
1576 );
1577
1578 // 19.1.3 Properties of the Object Prototype Object
1579 // 19.1.3.1 Object.prototype.constructor
1580 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1581 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1582 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1583 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1584 // 19.1.3.6 Object.prototype.toString ( )
1585 hook(Object.prototype, 'toString',
1586 function() {
1587 var o = strict(this);
1588 if (o === Object(o) && $$toStringTag in o) {
1589 return '[object ' + o[$$toStringTag] + ']';
1590 }
1591 return undefined;
1592 });
1593
1594 // 19.1.3.7 Object.prototype.valueOf ( )
1595 // 19.1.4 Properties of Object Instances
1596
1597 // ---------------------------------------
1598 // 19.2 Function Objects
1599 // ---------------------------------------
1600
1601 // 19.2.1 The Function Constructor
1602 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1603 // 19.2.2 Properties of the Function Constructor
1604 // 19.2.2.1 Function.length
1605 // 19.2.2.2 Function.prototype
1606 // 19.2.3 Properties of the Function Prototype Object
1607 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1608 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1609 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1610 // 19.2.3.4 Function.prototype.constructor
1611 // 19.2.3.5 Function.prototype.toString ( )
1612 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1613 // 19.2.4 Function Instances
1614 // 19.2.4.1 length
1615 // 19.2.4.2 name
1616 // 19.2.4.3 prototype
1617
1618 // (No polyfillable changes from ES5)
1619
1620 // ---------------------------------------
1621 // 19.3 Boolean Objects
1622 // ---------------------------------------
1623
1624 // 19.3.1 The Boolean Constructor
1625 // 19.3.1.1 Boolean ( value )
1626 // 19.3.2 Properties of the Boolean Constructor
1627 // 19.3.2.1 Boolean.prototype
1628 // 19.3.3 Properties of the Boolean Prototype Object
1629 // 19.3.3.1 Boolean.prototype.constructor
1630 // 19.3.3.2 Boolean.prototype.toString ( )
1631 // 19.3.3.3 Boolean.prototype.valueOf ( )
1632 // 19.3.4 Properties of Boolean Instances
1633
1634 // (No polyfillable changes from ES5)
1635
1636 // ---------------------------------------
1637 // 19.4 Symbol Objects
1638 // ---------------------------------------
1639
1640 // Moved earlier in this script, so that other polyfills can depend on them.
1641
1642 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1643 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1644
1645 // ---------------------------------------
1646 // 19.5 Error Objects
1647 // ---------------------------------------
1648
1649 // 19.5.1 The Error Constructor
1650 // 19.5.1.1 Error ( message )
1651 // 19.5.1.2 new Error( ...argumentsList )
1652 // 19.5.2 Properties of the Error Constructor
1653 // 19.5.2.1 Error.prototype
1654 // 19.5.3 Properties of the Error Prototype Object
1655 // 19.5.3.1 Error.prototype.constructor
1656 // 19.5.3.2 Error.prototype.message
1657 // 19.5.3.3 Error.prototype.name
1658 // 19.5.3.4 Error.prototype.toString ( )
1659 // 19.5.4 Properties of Error Instances
1660 // 19.5.5 Native Error Types Used in This Standard
1661 // 19.5.5.1 EvalError
1662 // 19.5.5.2 RangeError
1663 // 19.5.5.3 ReferenceError
1664 // 19.5.5.4 SyntaxError
1665 // 19.5.5.5 TypeError
1666 // 19.5.5.6 URIError
1667 // 19.5.6 NativeError Object Structure
1668 // 19.5.6.1 NativeError Constructors
1669 // 19.5.6.1.1 NativeError ( message )
1670 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1671 // 19.5.6.2 Properties of the NativeError Constructors
1672 // 19.5.6.2.1 NativeError.prototype
1673 // 19.5.6.3 Properties of the NativeError Prototype Objects
1674 // 19.5.6.4 Properties of NativeError Instances
1675
1676 // (No polyfillable changes from ES5)
1677
1678 // ---------------------------------------
1679 // 20 Numbers and Dates
1680 // ---------------------------------------
1681
1682 // ---------------------------------------
1683 // 20.1 Number Objects
1684 // ---------------------------------------
1685
1686 // 20.1.1 The Number Constructor
1687 // 20.1.1.1 Number ( [ value ] )
1688 // 20.1.1.2 new Number ( ...argumentsList )
1689 // 20.1.2 Properties of the Number Constructor
1690
1691 // 20.1.2.1 Number.EPSILON
1692 define(
1693 Number, 'EPSILON',
1694 (function () {
1695 var next, result;
1696 for (next = 1; 1 + next !== 1; next = next / 2)
1697 result = next;
1698 return result;
1699 }()));
1700
1701 // 20.1.2.2 Number.isFinite ( number )
1702 define(
1703 Number, 'isFinite',
1704 function isFinite(number) {
1705 if (Type(number) !== 'number') return false;
1706 if (number !== number || number === +Infinity || number === -Infinity) return false;
1707 return true;
1708 });
1709
1710 // 20.1.2.3 Number.isInteger ( number )
1711 define(
1712 Number, 'isInteger',
1713 function isInteger(number) {
1714 if (Type(number) !== 'number') return false;
1715 if (number !== number || number === +Infinity || number === -Infinity) return false;
1716 var integer = ToInteger(number);
1717 if (integer !== number) return false;
1718 return true;
1719 });
1720
1721 // 20.1.2.4 Number.isNaN ( number )
1722 define(
1723 Number, 'isNaN',
1724 function isNaN(number) {
1725 if (Type(number) !== 'number') return false;
1726 if (number !== number) return true;
1727 return false;
1728 });
1729
1730 // 20.1.2.5 Number.isSafeInteger ( number )
1731 define(
1732 Number, 'isSafeInteger',
1733 function isSafeInteger(number) {
1734 if (Type(number) !== 'number') return false;
1735 if (number !== number || number === +Infinity || number === -Infinity) return false;
1736 var integer = ToInteger(number);
1737 if (integer !== number) return false;
1738 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1739 return true;
1740 return false;
1741 });
1742
1743 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1744 define(
1745 Number, 'MAX_SAFE_INTEGER',
1746 9007199254740991); // 2^53-1
1747
1748 // 20.1.2.7 Number.MAX_VALUE
1749
1750 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1751 define(
1752 Number, 'MIN_SAFE_INTEGER',
1753 -9007199254740991); // -2^53+1
1754
1755 // 20.1.2.9 Number.MIN_VALUE
1756 // 20.1.2.10 Number.NaN
1757 // 20.1.2.11 Number.NEGATIVE_INFINITY
1758
1759 // 20.1.2.12 Number.parseFloat ( string )
1760 define(Number, 'parseFloat', $parseFloat);
1761
1762 // 20.1.2.13 Number.parseInt ( string, radix )
1763 define(Number, 'parseInt', $parseInt);
1764
1765 // 20.1.2.14 Number.POSITIVE_INFINITY
1766 // 20.1.2.15 Number.prototype
1767
1768 // 20.1.3 Properties of the Number Prototype Object
1769 // 20.1.3.1 Number.prototype.constructor
1770 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1771 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1772 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1773 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1774 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1775 // 20.1.3.7 Number.prototype.valueOf ( )
1776 // 20.1.4 Properties of Number Instances
1777
1778 // ---------------------------------------
1779 // 20.2 The Math Object
1780 // ---------------------------------------
1781
1782 // 20.2.1 Value Properties of the Math Object
1783 // 20.2.1.1 Math.E
1784 // 20.2.1.2 Math.LN10
1785 // 20.2.1.3 Math.LN2
1786 // 20.2.1.4 Math.LOG10E
1787 // 20.2.1.5 Math.LOG2E
1788 // 20.2.1.6 Math.PI
1789 // 20.2.1.7 Math.SQRT1_2
1790 // 20.2.1.8 Math.SQRT2
1791
1792 // 20.2.1.9 Math [ @@toStringTag ]
1793 define(Math, $$toStringTag, 'Math');
1794
1795 // 20.2.2 Function Properties of the Math Object
1796 // 20.2.2.1 Math.abs ( x )
1797 // 20.2.2.2 Math.acos ( x )
1798
1799 // 20.2.2.3 Math.acosh(x)
1800 define(
1801 Math, 'acosh',
1802 function acosh(x) {
1803 x = Number(x);
1804 return log(x + sqrt(x * x - 1));
1805 });
1806
1807 // 20.2.2.4 Math.asin ( x )
1808
1809 // 20.2.2.5 Math.asinh( x )
1810 define(
1811 Math, 'asinh',
1812 function asinh(x) {
1813 x = Number(x);
1814 if (SameValue(x, -0)) {
1815 return x;
1816 }
1817 var s = sqrt(x * x + 1);
1818 return (s === -x) ? log(0) : log(x + s);
1819 });
1820
1821 // 20.2.2.6 Math.atan ( x )
1822
1823 // 20.2.2.7 Math.atanh( x )
1824 define(
1825 Math, 'atanh',
1826 function atanh(x) {
1827 x = Number(x);
1828 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1829 });
1830
1831 // 20.2.2.8 Math.atan2 ( y, x )
1832
1833 // 20.2.2.9 Math.cbrt ( x )
1834 define(
1835 Math, 'cbrt',
1836 function cbrt(x) {
1837 x = Number(x);
1838 if ($isNaN(x/x)) {
1839 return x;
1840 }
1841 var r = pow(abs(x), 1/3);
1842 var t = x/r/r;
1843 return r + (r * (t-r) / (2*r + t));
1844 });
1845
1846 // 20.2.2.10 Math.ceil ( x )
1847
1848 // 20.2.2.11 Math.clz32 ( x )
1849 define(
1850 Math, 'clz32',
1851 function clz32(x) {
1852 function clz8(x) {
1853 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1854 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1855 }
1856 x = ToUint32(x);
1857 return x & 0xff000000 ? clz8(x >> 24) :
1858 x & 0xff0000 ? clz8(x >> 16) + 8 :
1859 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1860 });
1861
1862
1863
1864 // 20.2.2.12 Math.cos ( x )
1865
1866 // 20.2.2.13 Math.cosh ( x )
1867 define(
1868 Math, 'cosh',
1869 function cosh(x) {
1870 x = Number(x);
1871 return (pow(E, x) + pow(E, -x)) / 2;
1872 });
1873
1874 // 20.2.2.14 Math.exp ( x )
1875
1876 // 20.2.2.15 Math.expm1 ( x )
1877 define(
1878 Math, 'expm1',
1879 function expm1(x) {
1880 x = Number(x);
1881 // from: http://www.johndcook.com/cpp_log1p.html
1882 if (SameValue(x, -0)) {
1883 return -0;
1884 } else if (abs(x) < 1e-5) {
1885 return x + 0.5 * x * x; // two terms of Taylor expansion
1886 } else {
1887 return exp(x) - 1;
1888 }
1889 });
1890
1891 // 20.2.2.16 Math.floor ( x )
1892
1893 // 20.2.2.17 Math.fround ( x )
1894 define(
1895 Math, 'fround',
1896 function fround(x) {
1897 if ($isNaN(x)) {
1898 return NaN;
1899 }
1900 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1901 return x;
1902 }
1903 return (new Float32Array([x]))[0];
1904 });
1905
1906 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1907 define(
1908 Math, 'hypot',
1909 function hypot() {
1910 var values = [];
1911 var m = 0, sawNaN = false;
1912 for (var i = 0; i < arguments.length; ++i) {
1913 var n = abs(Number(arguments[i]));
1914 if (n === Infinity) return n;
1915 if (n !== n) sawNaN = true;
1916 if (n > m) m = n;
1917 values[i] = n;
1918 }
1919 if (sawNaN) return NaN;
1920 if (m === 0) return +0;
1921 var sum = +0;
1922 for (i = 0; i < values.length; ++i) {
1923 var r = values[i] / m;
1924 sum = sum + r * r;
1925 }
1926 return m * sqrt(sum);
1927 });
1928
1929 // 20.2.2.19 Math.imul ( x, y )
1930 define(
1931 Math, 'imul',
1932 function imul(x, y) {
1933 var a = ToUint32(x);
1934 var b = ToUint32(y);
1935 // (slow but accurate)
1936 var ah = (a >>> 16) & 0xffff;
1937 var al = a & 0xffff;
1938 var bh = (b >>> 16) & 0xffff;
1939 var bl = b & 0xffff;
1940 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1941 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1942 );
1943
1944 // 20.2.2.20 Math.log ( x )
1945
1946 // 20.2.2.21 Math.log1p ( x )
1947 define(
1948 Math, 'log1p',
1949 function log1p(x) {
1950 x = Number(x);
1951 // from: http://www.johndcook.com/cpp_expm1.html
1952 if (x < -1) {
1953 return NaN;
1954 } else if (SameValue(x, -0)) {
1955 return -0;
1956 } else if (abs(x) > 1e-4) {
1957 return log(1 + x);
1958 } else {
1959 return (-0.5 * x + 1) * x;
1960 }
1961 });
1962
1963 // 20.2.2.22 Math.log10 ( x )
1964 define(
1965 Math, 'log10',
1966 function log10(x) {
1967 x = Number(x);
1968 return log(x) * LOG10E;
1969 });
1970
1971 // 20.2.2.23 Math.log2 ( x )
1972 define(
1973 Math, 'log2',
1974 function log2(x) {
1975 x = Number(x);
1976 return log(x) * LOG2E;
1977 });
1978
1979 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1980 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1981 // 20.2.2.26 Math.pow ( x, y )
1982 // 20.2.2.27 Math.random ( )
1983 // 20.2.2.28 Math.round ( x )
1984
1985 // 20.2.2.29 Math.sign(x)
1986 define(
1987 Math, 'sign',
1988 function sign(x) {
1989 x = Number(x);
1990 return x < 0 ? -1 : x > 0 ? 1 : x;
1991 });
1992
1993 // 20.2.2.30 Math.sin ( x )
1994
1995 // 20.2.2.31 Math.sinh( x )
1996 define(
1997 Math, 'sinh',
1998 function sinh(x) {
1999 x = Number(x);
2000 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
2001 });
2002
2003 // 20.2.2.32 Math.sqrt ( x )
2004 // 20.2.2.33 Math.tan ( x )
2005
2006 // 20.2.2.34 Math.tanh ( x )
2007 define(
2008 Math, 'tanh',
2009 function tanh(x) {
2010 x = Number(x);
2011 var n = pow(E, 2 * x) - 1,
2012 d = pow(E, 2 * x) + 1;
2013 if (SameValue(x, -0))
2014 return x;
2015 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
2016 });
2017
2018 // 20.2.2.35 Math.trunc ( x )
2019 define(
2020 Math, 'trunc',
2021 function trunc(x) {
2022 x = Number(x);
2023 return $isNaN(x) ? NaN :
2024 x < 0 ? ceil(x) : floor(x);
2025 });
2026
2027 // ---------------------------------------
2028 // 20.3 Date Objects
2029 // ---------------------------------------
2030
2031 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2032 // 20.3.1.1 Time Values and Time Range
2033 // 20.3.1.2 Day Number and Time within Day
2034 // 20.3.1.3 Year Number
2035 // 20.3.1.4 Month Number
2036 // 20.3.1.5 Date Number
2037 // 20.3.1.6 Week Day
2038 // 20.3.1.7 Local Time Zone Adjustment
2039 // 20.3.1.8 Daylight Saving Time Adjustment
2040 // 20.3.1.9 Local Time
2041 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2042 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2043 // 20.3.1.12 MakeDay (year, month, date)
2044 // 20.3.1.13 MakeDate (day, time)
2045 // 20.3.1.14 TimeClip (time)
2046 // 20.3.1.15 Date Time String Format
2047 // 20.3.1.15.1 Extended years
2048 // 20.3.2 The Date Constructor
2049 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2050 // 20.3.2.2 Date ( value )
2051 // 20.3.2.3 Date ( )
2052 // 20.3.3 Properties of the Date Constructor
2053 // 20.3.3.1 Date.now ( )
2054 // 20.3.3.2 Date.parse (string)
2055 // 20.3.3.3 Date.prototype
2056 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2057 // 20.3.4 Properties of the Date Prototype Object
2058 // 20.3.4.1 Date.prototype.constructor
2059 // 20.3.4.2 Date.prototype.getDate ( )
2060 // 20.3.4.3 Date.prototype.getDay ( )
2061 // 20.3.4.4 Date.prototype.getFullYear ( )
2062 // 20.3.4.5 Date.prototype.getHours ( )
2063 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2064 // 20.3.4.7 Date.prototype.getMinutes ( )
2065 // 20.3.4.8 Date.prototype.getMonth ( )
2066 // 20.3.4.9 Date.prototype.getSeconds ( )
2067 // 20.3.4.10 Date.prototype.getTime ( )
2068 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2069 // 20.3.4.12 Date.prototype.getUTCDate ( )
2070 // 20.3.4.13 Date.prototype.getUTCDay ( )
2071 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2072 // 20.3.4.15 Date.prototype.getUTCHours ( )
2073 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2074 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2075 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2076 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2077 // 20.3.4.20 Date.prototype.setDate ( date )
2078 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2079 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2080 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2081 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2082 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2083 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2084 // 20.3.4.27 Date.prototype.setTime ( time )
2085 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2086 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2087 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2088 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2089 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2090 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2091 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2092 // 20.3.4.35 Date.prototype.toDateString ( )
2093 // 20.3.4.36 Date.prototype.toISOString ( )
2094 // 20.3.4.37 Date.prototype.toJSON ( key )
2095 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2096 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2097 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2098 // 20.3.4.41 Date.prototype.toString ( )
2099 // 20.3.4.42 Date.prototype.toTimeString ( )
2100 // 20.3.4.43 Date.prototype.toUTCString ( )
2101 // 20.3.4.44 Date.prototype.valueOf ( )
2102 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2103 // 20.3.5 Properties of Date Instances
2104
2105 // (No polyfillable changes from ES5)
2106
2107 // ---------------------------------------
2108 // 21 Text Processing
2109 // ---------------------------------------
2110
2111 var string_regexp_dispatch = (function() {
2112 var faux = {}, secret = Symbol();
2113 faux[Symbol.match] = function() { return secret; };
2114 return ("").match(faux) === secret;
2115 }());
2116
2117 // 21.1 String Objects
2118 // 21.1.1 The String Constructor
2119 // 21.1.1.1 String ( value )
2120 // 21.1.2 Properties of the String Constructor
2121 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2122
2123 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2124 define(
2125 String, 'fromCodePoint',
2126 function fromCodePoint(/*...codePoints*/) {
2127 var codePoints = arguments,
2128 length = codePoints.length,
2129 elements = [],
2130 nextIndex = 0;
2131 while (nextIndex < length) {
2132 var next = codePoints[nextIndex];
2133 var nextCP = Number(next);
2134 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2135 nextCP < 0 || nextCP > 0x10FFFF) {
2136 throw RangeError('Invalid code point ' + nextCP);
2137 }
2138 if (nextCP < 0x10000) {
2139 elements.push(String.fromCharCode(nextCP));
2140 } else {
2141 nextCP -= 0x10000;
2142 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2143 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2144 }
2145 nextIndex += 1;
2146 }
2147 return elements.join('');
2148 });
2149
2150 // 21.1.2.3 String.prototype
2151
2152 // 21.1.2.4 String.raw ( template , ...substitutions )
2153 define(
2154 String, 'raw',
2155 function raw(template /*, ...substitutions*/) {
2156 var substitutions = [].slice.call(arguments, 1);
2157
2158 var cooked = Object(template);
2159 var rawValue = cooked['raw'];
2160 var raw = Object(rawValue);
2161 var len = raw['length'];
2162 var literalSegments = ToLength(len);
2163 if (literalSegments <= 0) return '';
2164 var stringElements = [];
2165 var nextIndex = 0;
2166 while (true) {
2167 var next = raw[nextIndex];
2168 var nextSeg = String(next);
2169 stringElements.push(nextSeg);
2170 if (nextIndex + 1 === literalSegments)
2171 return stringElements.join('');
2172 next = substitutions[nextIndex];
2173 var nextSub = String(next);
2174 stringElements.push(nextSub);
2175 nextIndex = nextIndex + 1;
2176 }
2177 });
2178
2179 // See https://githib.com/inexorabletash/uate for a more useful version.
2180
2181 // 21.1.3 Properties of the String Prototype Object
2182 // 21.1.3.1 String.prototype.charAt ( pos )
2183 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2184
2185 // 21.1.3.3 String.prototype.codePointAt ( pos )
2186 define(
2187 String.prototype, 'codePointAt',
2188 function codePointAt(pos) {
2189 var o = strict(this);
2190 var s = String(o);
2191 var position = ToInteger(pos);
2192 var size = s.length;
2193 if (position < 0 || position >= size) return undefined;
2194 var first = s.charCodeAt(position);
2195 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2196 var second = s.charCodeAt(position + 1);
2197 if (second < 0xDC00 || second > 0xDFFF) return first;
2198 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2199 });
2200
2201 // 21.1.3.4 String.prototype.concat ( ...args )
2202 // 21.1.3.5 String.prototype.constructor
2203
2204 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2205 define(
2206 String.prototype, 'endsWith',
2207 function endsWith(searchString) {
2208 var endPosition = arguments[1];
2209
2210 var o = strict(this);
2211 var s = String(o);
2212 var searchStr = String(searchString);
2213 var len = s.length;
2214 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2215 var end = min(max(pos, 0), len);
2216 var searchLength = searchStr.length;
2217 var start = end - searchLength;
2218 if (start < 0) return false;
2219 if (s.substring(start, start + searchLength) === searchStr) return true;
2220 return false;
2221 });
2222
2223 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2224 define(
2225 String.prototype, 'includes',
2226 function includes(searchString) {
2227 var position = arguments[1];
2228
2229 var o = strict(this);
2230 var s = String(o);
2231 var searchStr = String(searchString);
2232 var pos = ToInteger(position);
2233 var len = s.length;
2234 var start = min(max(pos, 0), len);
2235 return s.indexOf(searchStr, start) !== -1;
2236 });
2237
2238 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2239 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2240 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2241 // 21.1.3.11 String.prototype.match ( regexp )
2242 define(
2243 String.prototype, 'match',
2244 function match(regexp) {
2245 var o = strict(this);
2246 var s = String(o);
2247 if (HasProperty(regexp, $$match)) var rx = regexp;
2248 else rx = new RegExp(regexp);
2249 return rx[$$match](s);
2250 }, !string_regexp_dispatch);
2251
2252 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2253
2254 // Not practical due to table sizes; if needed, pull in:
2255 // https://github.com/walling/unorm/
2256
2257 // 21.1.3.13 String.prototype.repeat ( count )
2258 define(
2259 String.prototype, 'repeat',
2260 function repeat(count) {
2261 var o = strict(this);
2262 var s = String(o);
2263 var n = ToInteger(count);
2264 if (n < 0) throw RangeError();
2265 if (n === Infinity) throw RangeError();
2266 var t = new Array(n + 1).join(s);
2267 return t;
2268 });
2269
2270 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2271 define(
2272 String.prototype, 'replace',
2273 function replace(searchValue, replaceValue) {
2274 var o = strict(this);
2275 if (HasProperty(searchValue, $$replace))
2276 return searchValue[$$replace](o, replaceValue);
2277 return orig_replace.call(o, searchValue, replaceValue);
2278 }, !string_regexp_dispatch);
2279
2280 // 21.1.3.15 String.prototype.search ( regexp )
2281 define(
2282 String.prototype, 'search',
2283 function search(regexp) {
2284 var o = strict(this);
2285 var string = String(o);
2286 if (HasProperty(regexp, $$search)) var rx = regexp;
2287 else rx = new RegExp(regexp);
2288 return rx[$$search](string);
2289 }, !string_regexp_dispatch);
2290
2291 // 21.1.3.16 String.prototype.slice ( start, end )
2292 // 21.1.3.17 String.prototype.split ( separator, limit )
2293 define(
2294 String.prototype, 'split',
2295 function split(separator, limit) {
2296 var o = strict(this);
2297 if (HasProperty(separator, $$split))
2298 return separator[$$split](o, limit);
2299 return orig_split.call(o, separator, limit);
2300 }, !string_regexp_dispatch);
2301
2302 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2303 define(
2304 String.prototype, 'startsWith',
2305 function startsWith(searchString) {
2306 var position = arguments[1];
2307
2308 var o = strict(this);
2309 var s = String(o);
2310 var searchStr = String(searchString);
2311 var pos = ToInteger(position);
2312 var len = s.length;
2313 var start = min(max(pos, 0), len);
2314 var searchLength = searchStr.length;
2315 if (searchLength + start > len) return false;
2316 if (s.substring(start, start + searchLength) === searchStr) return true;
2317 return false;
2318 });
2319
2320 // 21.1.3.19 String.prototype.substring ( start, end )
2321 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2322 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2323 // 21.1.3.22 String.prototype.toLowerCase ( )
2324 // 21.1.3.23 String.prototype.toString ( )
2325 // 21.1.3.24 String.prototype.toUpperCase ( )
2326 // 21.1.3.25 String.prototype.trim ( )
2327 // 21.1.3.26 String.prototype.valueOf ( )
2328
2329 // 21.1.3.27 String.prototype [ @@iterator ]( )
2330 define(
2331 String.prototype, $$iterator,
2332 function entries() {
2333 return CreateStringIterator(this, 'value');
2334 });
2335
2336 // 21.1.4 Properties of String Instances
2337 // 21.1.4.1 length
2338
2339 // 21.1.5 String Iterator Objects
2340 /** @constructor */
2341 function StringIterator() {}
2342
2343 // 21.1.5.1 CreateStringIterator Abstract Operation
2344 function CreateStringIterator(string, kind) {
2345 var s = String(string);
2346 var iterator = new StringIterator;
2347 set_internal(iterator, '[[IteratedString]]', s);
2348 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2349 set_internal(iterator, '[[StringIterationKind]]', kind);
2350 return iterator;
2351 }
2352
2353 // 21.1.5.2 The %StringIteratorPrototype% Object
2354 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2355 StringIterator.prototype = $StringIteratorPrototype$;
2356
2357 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2358 define(
2359 $StringIteratorPrototype$, 'next',
2360 function next() {
2361 var o = ToObject(this);
2362 var s = String(o['[[IteratedString]]']),
2363 index = o['[[StringIteratorNextIndex]]'],
2364 len = s.length;
2365 if (index >= len) {
2366 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2367 return CreateIterResultObject(undefined, true);
2368 }
2369 var cp = s.codePointAt(index);
2370 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2371 return CreateIterResultObject(String.fromCodePoint(cp), false);
2372 });
2373
2374 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2375 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2376
2377 // 21.1.5.3 Properties of String Iterator Instances
2378
2379 // ---------------------------------------
2380 // 21.2 RegExp (Regular Expression) Objects
2381 // ---------------------------------------
2382
2383 // 21.2.1 Patterns
2384 // 21.2.2 Pattern Semantics
2385 // 21.2.2.1 Notation
2386 // 21.2.2.2 Pattern
2387 // 21.2.2.3 Disjunction
2388 // 21.2.2.4 Alternative
2389 // 21.2.2.5 Term
2390 // 21.2.2.6 Assertion
2391 // 21.2.2.7 Quantifier
2392 // 21.2.2.8 Atom
2393 // 21.2.2.9 AtomEscape
2394 // 21.2.2.10 CharacterEscape
2395 // 21.2.2.11 DecimalEscape
2396 // 21.2.2.12 CharacterClassEscape
2397 // 21.2.2.13 CharacterClass
2398 // 21.2.2.14 ClassRanges
2399 // 21.2.2.15 NonemptyClassRanges
2400 // 21.2.2.16 NonemptyClassRangesNoDash
2401 // 21.2.2.17 ClassAtom
2402 // 21.2.2.18 ClassAtomNoDash
2403 // 21.2.2.19 ClassEscape
2404 // 21.2.3 The RegExp Constructor
2405 // 21.2.3.1 RegExp ( pattern, flags )
2406 // 21.2.3.2 new RegExp( ...argumentsList )
2407 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2408 // 21.2.4 Properties of the RegExp Constructor
2409 // 21.2.4.1 RegExp.prototype
2410 // 21.2.5 Properties of the RegExp Prototype Object
2411 // 21.2.5.1 RegExp.prototype.constructor
2412 // 21.2.5.2 RegExp.prototype.exec ( string )
2413
2414 // 21.2.5.3 get RegExp.prototype.flags
2415 if (!('flags' in RegExp.prototype)) {
2416 Object.defineProperty(
2417 RegExp.prototype, 'flags', {
2418 get: function() {
2419 var s = String(this);
2420 return s.substring(s.lastIndexOf('/') + 1);
2421 }
2422 });
2423 }
2424
2425 // 21.2.5.4 get RegExp.prototype.global
2426 // 21.2.5.5 get RegExp.prototype.ignoreCase
2427
2428 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2429 define(RegExp.prototype, $$match, function(string) {
2430 var o = strict(this);
2431 return orig_match.call(string, o);
2432 });
2433
2434 // 21.2.5.7 get RegExp.prototype.multiline
2435
2436 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2437 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2438 var o = strict(this);
2439 return orig_replace.call(string, o, replaceValue);
2440 });
2441
2442 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2443 define(RegExp.prototype, $$search, function(string) {
2444 var o = strict(this);
2445 return orig_search.call(string, o);
2446 });
2447
2448 // 21.2.5.10 get RegExp.prototype.source
2449
2450 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2451 define(RegExp.prototype, $$split, function(string, limit) {
2452 var o = strict(this);
2453 return orig_split.call(string, o, limit);
2454 });
2455
2456 // 21.2.5.12 get RegExp.prototype.sticky
2457 // 21.2.5.13 RegExp.prototype.test( S )
2458 // 21.2.5.14 RegExp.prototype.toString ( )
2459 // 21.2.5.15 get RegExp.prototype.unicode
2460
2461 // 21.2.6 Properties of RegExp Instances
2462 // 21.2.6.1 lastIndex
2463
2464 // (No polyfillable changes from ES5)
2465
2466 // ---------------------------------------
2467 // 22 Indexed Collections
2468 // ---------------------------------------
2469
2470 // ---------------------------------------
2471 // 22.1 Array Objects
2472 // ---------------------------------------
2473
2474 // 22.1.1 The Array Constructor
2475 // 22.1.1.1 Array ( )
2476 // 22.1.1.2 Array (len)
2477 // 22.1.1.3 Array (...items )
2478
2479 // 22.1.2 Properties of the Array Constructor
2480
2481 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2482 define(
2483 Array, 'from',
2484 function from(items) {
2485 var mapfn = arguments[1];
2486 var thisArg = arguments[2];
2487
2488 var c = strict(this);
2489 if (mapfn === undefined) {
2490 var mapping = false;
2491 } else {
2492 if (!IsCallable(mapfn)) throw TypeError();
2493 var t = thisArg;
2494 mapping = true;
2495 }
2496 var usingIterator = GetMethod(items, $$iterator);
2497 if (usingIterator !== undefined) {
2498 if (IsConstructor(c)) {
2499 var a = new c();
2500 } else {
2501 a = new Array(0);
2502 }
2503 var iterator = GetIterator(items, usingIterator);
2504 var k = 0;
2505 while (true) {
2506 var next = IteratorStep(iterator);
2507 if (next === false) {
2508 a.length = k;
2509 return a;
2510 }
2511 var nextValue = IteratorValue(next);
2512 if (mapping)
2513 var mappedValue = mapfn.call(t, nextValue);
2514 else
2515 mappedValue = nextValue;
2516 a[k] = mappedValue;
2517 k += 1;
2518 }
2519 }
2520 var arrayLike = ToObject(items);
2521 var lenValue = arrayLike.length;
2522 var len = ToLength(lenValue);
2523 if (IsConstructor(c)) {
2524 a = new c(len);
2525 } else {
2526 a = new Array(len);
2527 }
2528 k = 0;
2529 while (k < len) {
2530 var kValue = arrayLike[k];
2531 if (mapping)
2532 mappedValue = mapfn.call(t, kValue, k);
2533 else
2534 mappedValue = kValue;
2535 a[k] = mappedValue;
2536 k += 1;
2537 }
2538 a.length = len;
2539 return a;
2540 });
2541
2542 // 22.1.2.2 Array.isArray ( arg )
2543
2544 // 22.1.2.3 Array.of ( ...items )
2545 define(
2546 Array, 'of',
2547 function of() {
2548 var items = arguments;
2549
2550 var lenValue = items.length;
2551 var len = ToUint32(lenValue);
2552 var c = strict(this), a;
2553 if (IsConstructor(c)) {
2554 a = new c(len);
2555 a = ToObject(a);
2556 } else {
2557 a = new Array(len);
2558 }
2559 var k = 0;
2560 while (k < len) {
2561 a[k] = items[k];
2562 k += 1;
2563 }
2564 a.length = len;
2565 return a;
2566 });
2567
2568 // 22.1.2.4 Array.prototype
2569 // 22.1.2.5 get Array [ @@species ]
2570 // 22.1.3 Properties of the Array Prototype Object
2571 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2572 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2573 // 22.1.3.2 Array.prototype.constructor
2574 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2575 define(
2576 Array.prototype, 'copyWithin',
2577 function copyWithin(target, start/*, end*/) {
2578 var end = arguments[2];
2579
2580 var o = ToObject(this);
2581 var lenVal = o.length;
2582 var len = ToLength(lenVal);
2583 len = max(len, 0);
2584 var relativeTarget = ToInteger(target);
2585 var to;
2586 if (relativeTarget < 0)
2587 to = max(len + relativeTarget, 0);
2588 else
2589 to = min(relativeTarget, len);
2590 var relativeStart = ToInteger(start);
2591 var from;
2592 if (relativeStart < 0)
2593 from = max(len + relativeStart, 0);
2594 else
2595 from = min(relativeStart, len);
2596 var relativeEnd;
2597 if (end === undefined)
2598 relativeEnd = len;
2599 else
2600 relativeEnd = ToInteger(end);
2601 var final;
2602 if (relativeEnd < 0)
2603 final = max(len + relativeEnd, 0);
2604 else
2605 final = min(relativeEnd, len);
2606 var count = min(final - from, len - to);
2607 var direction;
2608 if (from < to && to < from + count) {
2609 direction = -1;
2610 from = from + count - 1;
2611 to = to + count - 1;
2612 } else {
2613 direction = 1;
2614 }
2615 while (count > 0) {
2616 var fromKey = String(from);
2617 var toKey = String(to);
2618 var fromPresent = HasProperty(o, fromKey);
2619 if (fromPresent) {
2620 var fromVal = o[fromKey];
2621 o[toKey] = fromVal;
2622 } else {
2623 delete o[toKey];
2624 }
2625 from = from + direction;
2626 to = to + direction;
2627 count = count - 1;
2628 }
2629 return o;
2630 });
2631
2632 // 22.1.3.4 Array.prototype.entries ( )
2633 var nativeArrayIteratorMethods =
2634 ('entries' in Array.prototype && 'next' in [].entries());
2635
2636 define(
2637 Array.prototype, 'entries',
2638 function entries() {
2639 return CreateArrayIterator(this, 'key+value');
2640 }, !nativeArrayIteratorMethods);
2641
2642 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2643
2644 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2645 define(
2646 Array.prototype, 'fill',
2647 function fill(value/*, start, end*/) {
2648 var start = arguments[1],
2649 end = arguments[2];
2650
2651 var o = ToObject(this);
2652 var lenVal = o.length;
2653 var len = ToLength(lenVal);
2654 len = max(len, 0);
2655 var relativeStart = ToInteger(start);
2656 var k;
2657 if (relativeStart < 0)
2658 k = max((len + relativeStart), 0);
2659 else
2660 k = min(relativeStart, len);
2661 var relativeEnd;
2662 if (end === undefined)
2663 relativeEnd = len;
2664 else
2665 relativeEnd = ToInteger(end);
2666 var final;
2667 if (relativeEnd < 0)
2668 final = max((len + relativeEnd), 0);
2669 else
2670 final = min(relativeEnd, len);
2671 while (k < final) {
2672 var pk = String(k);
2673 o[pk] = value;
2674 k += 1;
2675 }
2676 return o;
2677 });
2678
2679 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2680
2681 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2682 define(
2683 Array.prototype, 'find',
2684 function find(predicate) {
2685 var o = ToObject(this);
2686 var lenValue = o.length;
2687 var len = ToInteger(lenValue);
2688 if (!IsCallable(predicate)) throw TypeError();
2689 var t = arguments.length > 1 ? arguments[1] : undefined;
2690 var k = 0;
2691 while (k < len) {
2692 var pk = String(k);
2693 var kPresent = HasProperty(o, pk);
2694 if (kPresent) {
2695 var kValue = o[pk];
2696 var testResult = predicate.call(t, kValue, k, o);
2697 if (Boolean(testResult)) {
2698 return kValue;
2699 }
2700 }
2701 ++k;
2702 }
2703 return undefined;
2704 });
2705
2706 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2707 define(
2708 Array.prototype, 'findIndex',
2709 function findIndex(predicate) {
2710 var o = ToObject(this);
2711 var lenValue = o.length;
2712 var len = ToLength(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 k;
2724 }
2725 }
2726 ++k;
2727 }
2728 return -1;
2729 });
2730
2731 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2732 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2733 // 22.1.3.12 Array.prototype.join (separator)
2734
2735 // 22.1.3.13 Array.prototype.keys ( )
2736 define(
2737 Array.prototype, 'keys',
2738 function keys() {
2739 return CreateArrayIterator(this, 'key');
2740 }, !nativeArrayIteratorMethods);
2741
2742 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2743 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2744 // 22.1.3.16 Array.prototype.pop ( )
2745 // 22.1.3.17 Array.prototype.push ( ...items )
2746 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2747 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2748 // 22.1.3.20 Array.prototype.reverse ( )
2749 // 22.1.3.21 Array.prototype.shift ( )
2750 // 22.1.3.22 Array.prototype.slice (start, end)
2751 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2752 // 22.1.3.24 Array.prototype.sort (comparefn)
2753 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2754 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2755 // 22.1.3.27 Array.prototype.toString ( )
2756 // 22.1.3.28 Array.prototype.unshift ( ...items )
2757
2758 // 22.1.3.29 Array.prototype.values ( )
2759 define(
2760 Array.prototype, 'values',
2761 function values() {
2762 return CreateArrayIterator(this, 'value');
2763 }, !nativeArrayIteratorMethods);
2764
2765 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2766 define(
2767 Array.prototype, $$iterator,
2768 Array.prototype.values
2769 );
2770
2771 // 22.1.3.31 Array.prototype [ @@unscopables ]
2772 // 22.1.4 Properties of Array Instances
2773 // 22.1.4.1 length
2774
2775 // 22.1.5 Array Iterator Objects
2776 function ArrayIterator() {}
2777
2778 // 22.1.5.1 CreateArrayIterator Abstract Operation
2779 function CreateArrayIterator(array, kind) {
2780 var o = ToObject(array);
2781 var iterator = new ArrayIterator;
2782 set_internal(iterator, '[[IteratedObject]]', o);
2783 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2784 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2785 return iterator;
2786 }
2787
2788 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2789 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2790 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2791
2792 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2793 define(
2794 $ArrayIteratorPrototype$, 'next',
2795 function next() {
2796 var o = strict(this);
2797 if (Type(o) !== 'object') throw TypeError();
2798 var a = o['[[IteratedObject]]'],
2799 index = o['[[ArrayIteratorNextIndex]]'],
2800 itemKind = o['[[ArrayIterationKind]]'],
2801 lenValue = a.length,
2802 len = ToUint32(lenValue),
2803 elementKey,
2804 elementValue;
2805 if (itemKind.indexOf('sparse') !== -1) {
2806 var found = false;
2807 while (!found && index < len) {
2808 elementKey = String(index);
2809 found = HasProperty(a, elementKey);
2810 if (!found) {
2811 index += 1;
2812 }
2813 }
2814 }
2815 if (index >= len) {
2816 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2817 return CreateIterResultObject(undefined, true);
2818 }
2819 elementKey = index;
2820 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2821 if (itemKind.indexOf('value') !== -1)
2822 elementValue = a[elementKey];
2823 if (itemKind.indexOf('key+value') !== -1)
2824 return CreateIterResultObject([elementKey, elementValue], false);
2825 if (itemKind.indexOf('key') !== -1)
2826 return CreateIterResultObject(elementKey, false);
2827 if (itemKind === 'value')
2828 return CreateIterResultObject(elementValue, false);
2829 throw Error('Internal error');
2830 });
2831
2832 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2833 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2834
2835 // 22.1.5.3 Properties of Array Iterator Instances
2836
2837
2838 // ---------------------------------------
2839 // 22.2 TypedArray Objects
2840 // ---------------------------------------
2841
2842 // See typedarray.js for TypedArray polyfill
2843
2844 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2845 'Int16Array', 'Uint16Array',
2846 'Int32Array', 'Uint32Array',
2847 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2848 if (!($TypedArrayName$ in global))
2849 return;
2850 var $TypedArray$ = global[$TypedArrayName$];
2851
2852 // 22.2.1 The %TypedArray% Intrinsic Object
2853 // 22.2.1.1 %TypedArray% ( length )
2854 // 22.2.1.2 %TypedArray% ( typedArray )
2855 // 22.2.1.3 %TypedArray% ( object )
2856 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2857 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2858 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2859
2860 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2861 define(
2862 $TypedArray$, 'from',
2863 function from(source) {
2864 var mapfn = arguments[1];
2865 var thisArg = arguments[2];
2866
2867 var c = strict(this);
2868 if (!IsConstructor(c)) throw TypeError();
2869 if (mapfn === undefined) {
2870 var mapping = false;
2871 } else {
2872 if (IsCallable(mapfn)) throw TypeError();
2873 var t = thisArg;
2874 mapping = true;
2875 }
2876 var usingIterator = GetMethod(source, $$iterator);
2877 if (usingIterator !== undefined) {
2878 var iterator = GetIterator(source, usingIterator);
2879 var values = [];
2880 var next = true;
2881 while (next !== false) {
2882 next = IteratorStep(iterator);
2883 if (next !== false) {
2884 var nextValue = IteratorValue(next);
2885 values.push(nextValue);
2886 }
2887 }
2888 var len = values.length;
2889 var newObj = new c(len);
2890 var k = 0;
2891 while (k < len) {
2892 var kValue = values.shift();
2893 if (mapping) {
2894 var mappedValue = mapfn.call(t, kValue);
2895 } else {
2896 mappedValue = kValue;
2897 }
2898 newObj[k] = mappedValue;
2899 ++k;
2900 }
2901 console.assert(values.length === 0);
2902 return newObj;
2903 }
2904 var arrayLike = ToObject(source);
2905 var lenValue = arrayLike.length;
2906 len = ToLength(lenValue);
2907 newObj = new c(len);
2908 k = 0;
2909 while (k < len) {
2910 kValue = arrayLike[k];
2911 if (mapping) {
2912 mappedValue = mapfn.call(t, kValue, k);
2913 } else {
2914 mappedValue = kValue;
2915 }
2916 newObj[k] = mappedValue;
2917 ++k;
2918 }
2919 return newObj;
2920 });
2921
2922 // 22.2.2.2 %TypedArray%.of ( ...items )
2923 define(
2924 $TypedArray$, 'of',
2925 function of() {
2926 var items = arguments;
2927
2928 var len = items.length;
2929 var c = strict(this);
2930 var newObj = new c(len);
2931 var k = 0;
2932 while (k < len) {
2933 newObj[k] = items[k];
2934 ++k;
2935 }
2936 return newObj;
2937 });
2938
2939 // 22.2.2.3 %TypedArray%.prototype
2940 // 22.2.2.4 get %TypedArray% [ @@species ]
2941 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2942 // 22.2.3.1 get %TypedArray%.prototype.buffer
2943 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2944 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2945 // 22.2.3.4 %TypedArray%.prototype.constructor
2946
2947 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2948 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2949
2950 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2951 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2952
2953 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2954 define($TypedArray$.prototype, 'every', Array.prototype.every);
2955
2956 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2957 define(
2958 $TypedArray$.prototype, 'fill',
2959 //Array.prototype.fill // Doesn't work in Safari 7
2960 function fill(value/*, start, end*/) {
2961 var start = arguments[1],
2962 end = arguments[2];
2963
2964 var o = ToObject(this);
2965 var lenVal = o.length;
2966 var len = ToLength(lenVal);
2967 len = max(len, 0);
2968 var relativeStart = ToInteger(start);
2969 var k;
2970 if (relativeStart < 0) k = max((len + relativeStart), 0);
2971 else k = min(relativeStart, len);
2972 var relativeEnd;
2973 if (end === undefined) relativeEnd = len;
2974 else relativeEnd = ToInteger(end);
2975 var final;
2976 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2977 else final = min(relativeEnd, len);
2978 while (k < final) {
2979 var pk = String(k);
2980 o[pk] = value;
2981 k += 1;
2982 }
2983 return o;
2984 });
2985
2986 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2987 define(
2988 $TypedArray$.prototype, 'filter',
2989 function filter(callbackfn) {
2990 var thisArg = arguments[1];
2991
2992 var o = ToObject(this);
2993 var lenVal = o.length;
2994 var len = ToLength(lenVal);
2995 if (!IsCallable(callbackfn)) throw TypeError();
2996 var t = thisArg;
2997 var c = o.constructor;
2998 var kept = [];
2999 var k = 0;
3000 var captured = 0;
3001 while (k < len) {
3002 var kValue = o[k];
3003 var selected = callbackfn.call(t, kValue, k, o);
3004 if (selected) {
3005 kept.push(kValue);
3006 ++captured;
3007 }
3008 ++k;
3009 }
3010 var a = new c(captured);
3011 var n = 0;
3012 for (var i = 0; i < kept.length; ++i) {
3013 var e = kept[i];
3014 a[n] = e;
3015 ++n;
3016 }
3017 return a;
3018 });
3019
3020 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3021 define($TypedArray$.prototype, 'find', Array.prototype.find);
3022
3023 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3024 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3025
3026 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3027 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3028
3029 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3030 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3031
3032 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3033 define($TypedArray$.prototype, 'join', Array.prototype.join);
3034
3035 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3036 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3037
3038 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3039 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3040
3041 // 22.2.3.17 get %TypedArray%.prototype.length
3042
3043 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3044 define(
3045 $TypedArray$.prototype, 'map',
3046 function map(callbackfn) {
3047 var thisArg = arguments[1];
3048
3049 var o = ToObject(this);
3050 var lenValue = o.length;
3051 var len = ToLength(lenValue);
3052 if (!IsCallable(callbackfn)) throw TypeError();
3053 var t = thisArg;
3054 var a = undefined;
3055 var c = o.constructor;
3056 if (IsConstructor(c))
3057 a = new c(len);
3058 if (a === undefined)
3059 a = new Array(len);
3060 var k = 0;
3061 while (k < len) {
3062 var kPresent = HasProperty(o, k);
3063 if (kPresent) {
3064 var kValue = o[k];
3065 var mappedValue = callbackfn.call(t, kValue, k, o);
3066 a[k] = mappedValue;
3067 }
3068 ++k;
3069 }
3070 return a;
3071 });
3072
3073 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3074 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3075
3076 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3077 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3078
3079 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3080 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3081
3082 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3083 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3084 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3085
3086 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3087 define(
3088 $TypedArray$.prototype, 'slice',
3089 function slice(start, end) {
3090 var o = ToObject(this);
3091 var lenVal = o.length;
3092 var len = ToLength(lenVal);
3093 var relativeStart = ToInteger(start);
3094 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3095 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3096 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3097 var count = final - k;
3098 var c = o.constructor;
3099 if (IsConstructor(c)) {
3100 var a = new c(count);
3101 } else {
3102 throw TypeError();
3103 }
3104 var n = 0;
3105 while (k < final) {
3106 var kValue = o[k];
3107 a[n] = kValue;
3108 ++k;
3109 ++n;
3110 }
3111 return a;
3112 });
3113
3114 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3115 define($TypedArray$.prototype, 'some', Array.prototype.some);
3116
3117 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3118 define(
3119 $TypedArray$.prototype, 'sort',
3120 function sort() {
3121 var comparefn = arguments[0];
3122
3123 function sortCompare(x, y) {
3124 console.assert(Type(x) === 'number' && Type(y) === 'number');
3125 if (x !== x && y !== y) return +0;
3126 if (x !== x) return 1;
3127 if (y !== y) return -1;
3128 if (comparefn !== undefined) {
3129 return comparefn(x, y);
3130 }
3131 if (x < y) return -1;
3132 if (x > y) return 1;
3133 return +0;
3134 }
3135 return Array.prototype.sort.call(this, sortCompare);
3136 });
3137
3138 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3139 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3140 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3141
3142 // 22.2.3.29 %TypedArray%.prototype.values ( )
3143 define($TypedArray$.prototype, 'values', Array.prototype.values);
3144
3145 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3146 define(
3147 $TypedArray$.prototype, $$iterator,
3148 $TypedArray$.prototype.values
3149 );
3150
3151 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3152 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3153
3154 // 22.2.4 The TypedArray Constructors
3155 // 22.2.4.1TypedArray( ... argumentsList)
3156 // 22.2.5 Properties of the TypedArray Constructors
3157 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3158 // 22.2.5.2 TypedArray.prototype
3159 // 22.2.6 Properties of TypedArray Prototype Objects
3160 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3161 // 22.2.6.2 TypedArray.prototype.constructor
3162 // 22.2.7 Properties of TypedArray Instances
3163 });
3164
3165 // ---------------------------------------
3166 // 23 Keyed Collection
3167 // ---------------------------------------
3168
3169 // ---------------------------------------
3170 // 23.1 Map Objects
3171 // ---------------------------------------
3172
3173 (function() {
3174 // 23.1.1 The Map Constructor
3175
3176 // 23.1.1.1 Map ( [ iterable ] )
3177 /** @constructor */
3178 function Map(/*iterable*/) {
3179 var map = strict(this);
3180 var iterable = arguments[0];
3181
3182 if (Type(map) !== 'object') throw TypeError();
3183 if ('[[MapData]]' in map) throw TypeError();
3184
3185 if (iterable !== undefined) {
3186 var adder = map['set'];
3187 if (!IsCallable(adder)) throw TypeError();
3188 var iter = GetIterator(ToObject(iterable));
3189 }
3190 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3191 if (iter === undefined) return map;
3192 while (true) {
3193 var next = IteratorStep(iter);
3194 if (next === false)
3195 return map;
3196 var nextItem = IteratorValue(next);
3197 if (Type(nextItem) !== 'object') throw TypeError();
3198 var k = nextItem[0];
3199 var v = nextItem[1];
3200 adder.call(map, k, v);
3201 }
3202
3203 return map;
3204 }
3205
3206 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3207 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3208 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3209 (new global.Map([['a', 1]]).size !== 1))
3210 global.Map = Map;
3211
3212
3213 function MapDataIndexOf(mapData, key) {
3214 var i;
3215 if (key === key) return mapData.keys.indexOf(key);
3216 // Slow case for NaN
3217 for (i = 0; i < mapData.keys.length; i += 1)
3218 if (SameValueZero(mapData.keys[i], key)) return i;
3219 return -1;
3220 }
3221
3222 // 23.1.1.2 new Map ( ... argumentsList )
3223 // 23.1.2 Properties of the Map Constructor
3224 // 23.1.2.1 Map.prototype
3225 var $MapPrototype$ = {};
3226 Map.prototype = $MapPrototype$;
3227
3228 // 23.1.2.2 get Map [ @@species ]
3229
3230 // 23.1.3 Properties of the Map Prototype Object
3231 // 23.1.3.1 Map.prototype.clear ()
3232 define(
3233 Map.prototype, 'clear',
3234 function clear() {
3235 var m = strict(this);
3236 if (Type(m) !== 'object') throw TypeError();
3237 if (!('[[MapData]]' in m)) throw TypeError();
3238 if (m['[[MapData]]'] === undefined) throw TypeError();
3239 var entries = m['[[MapData]]'];
3240 entries.keys.length = 0;
3241 entries.values.length = 0;
3242 return undefined;
3243 });
3244
3245 // 23.1.3.2 Map.prototype.constructor
3246
3247 // 23.1.3.3 Map.prototype.delete ( key )
3248 define(
3249 Map.prototype, 'delete',
3250 function delete_(key) {
3251 var m = strict(this);
3252 if (Type(m) !== 'object') throw TypeError();
3253 if (!('[[MapData]]' in m)) throw TypeError();
3254 if (m['[[MapData]]'] === undefined) throw TypeError();
3255 var entries = m['[[MapData]]'];
3256 var i = MapDataIndexOf(entries, key);
3257 if (i < 0) return false;
3258 entries.keys[i] = empty;
3259 entries.values[i] = empty;
3260 return true;
3261 });
3262
3263 // 23.1.3.4 Map.prototype.entries ( )
3264 define(
3265 Map.prototype, 'entries',
3266 function entries() {
3267 var m = strict(this);
3268 if (Type(m) !== 'object') throw TypeError();
3269 return CreateMapIterator(m, 'key+value');
3270 });
3271
3272 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3273 define(
3274 Map.prototype, 'forEach',
3275 function forEach(callbackfn /*, thisArg*/) {
3276 var thisArg = arguments[1];
3277
3278 var m = strict(this);
3279 if (Type(m) !== 'object') throw TypeError();
3280 if (!('[[MapData]]' in m)) throw TypeError();
3281 if (m['[[MapData]]'] === undefined) throw TypeError();
3282 var entries = m['[[MapData]]'];
3283
3284 if (!IsCallable(callbackfn)) {
3285 throw TypeError('First argument to forEach is not callable.');
3286 }
3287 for (var i = 0; i < entries.keys.length; ++i) {
3288 if (entries.keys[i] !== empty) {
3289 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3290 }
3291 }
3292 return undefined;
3293 });
3294
3295 // 23.1.3.6 Map.prototype.get ( key )
3296 define(
3297 Map.prototype, 'get',
3298 function get(key) {
3299 var m = strict(this);
3300 if (Type(m) !== 'object') throw TypeError();
3301 if (!('[[MapData]]' in m)) throw TypeError();
3302 if (m['[[MapData]]'] === undefined) throw TypeError();
3303 var entries = m['[[MapData]]'];
3304 var i = MapDataIndexOf(entries, key);
3305 if (i >= 0) return entries.values[i];
3306 return undefined;
3307 });
3308
3309 // 23.1.3.7 Map.prototype.has ( key )
3310 define(
3311 Map.prototype, 'has',
3312 function has(key) {
3313 var m = strict(this);
3314 if (Type(m) !== 'object') throw TypeError();
3315 if (!('[[MapData]]' in m)) throw TypeError();
3316 if (m['[[MapData]]'] === undefined) throw TypeError();
3317 var entries = m['[[MapData]]'];
3318 if (MapDataIndexOf(entries, key) >= 0) return true;
3319 return false;
3320 });
3321
3322 // 23.1.3.8 Map.prototype.keys ( )
3323 define(
3324 Map.prototype, 'keys',
3325 function keys() {
3326 var m = strict(this);
3327 if (Type(m) !== 'object') throw TypeError();
3328 return CreateMapIterator(m, 'key');
3329 });
3330
3331 // 23.1.3.9 Map.prototype.set ( key , value )
3332 define(
3333 Map.prototype, 'set',
3334 function set(key, value) {
3335 var m = strict(this);
3336 if (Type(m) !== 'object') throw TypeError();
3337 if (!('[[MapData]]' in m)) throw TypeError();
3338 if (m['[[MapData]]'] === undefined) throw TypeError();
3339 var entries = m['[[MapData]]'];
3340 var i = MapDataIndexOf(entries, key);
3341 if (i < 0) i = entries.keys.length;
3342 if (SameValue(key, -0)) key = 0;
3343 entries.keys[i] = key;
3344 entries.values[i] = value;
3345 return m;
3346 });
3347
3348 // 23.1.3.10 get Map.prototype.size
3349 Object.defineProperty(
3350 Map.prototype, 'size', {
3351 get: function() {
3352 var m = strict(this);
3353 if (Type(m) !== 'object') throw TypeError();
3354 if (!('[[MapData]]' in m)) throw TypeError();
3355 if (m['[[MapData]]'] === undefined) throw TypeError();
3356 var entries = m['[[MapData]]'];
3357 var count = 0;
3358 for (var i = 0; i < entries.keys.length; ++i) {
3359 if (entries.keys[i] !== empty)
3360 count = count + 1;
3361 }
3362 return count;
3363 }
3364 });
3365
3366 // 23.1.3.11 Map.prototype.values ( )
3367 define(
3368 Map.prototype, 'values',
3369 function values() {
3370 var m = strict(this);
3371 if (Type(m) !== 'object') throw TypeError();
3372 return CreateMapIterator(m, 'value');
3373 });
3374
3375 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3376 define(
3377 Map.prototype, $$iterator,
3378 function() {
3379 var m = strict(this);
3380 if (Type(m) !== 'object') throw TypeError();
3381 return CreateMapIterator(m, 'key+value');
3382 });
3383
3384 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3385 define(global.Map.prototype, $$toStringTag, 'Map');
3386
3387 // 23.1.4 Properties of Map Instances
3388 // 23.1.5 Map Iterator Objects
3389
3390 /** @constructor */
3391 function MapIterator() {}
3392
3393 // 23.1.5.1 CreateMapIterator Abstract Operation
3394 function CreateMapIterator(map, kind) {
3395 if (Type(map) !== 'object') throw TypeError();
3396 if (!('[[MapData]]' in map)) throw TypeError();
3397 if (map['[[MapData]]'] === undefined) throw TypeError();
3398 var iterator = new MapIterator;
3399 set_internal(iterator, '[[Map]]', map);
3400 set_internal(iterator, '[[MapNextIndex]]', 0);
3401 set_internal(iterator, '[[MapIterationKind]]', kind);
3402 return iterator;
3403 }
3404
3405 // 23.1.5.2 The %MapIteratorPrototype% Object
3406 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3407 MapIterator.prototype = $MapIteratorPrototype$;
3408
3409 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3410 define(
3411 $MapIteratorPrototype$, 'next',
3412 function next() {
3413 var o = strict(this);
3414 if (Type(o) !== 'object') throw TypeError();
3415 var m = o['[[Map]]'],
3416 index = o['[[MapNextIndex]]'],
3417 itemKind = o['[[MapIterationKind]]'],
3418 entries = m['[[MapData]]'];
3419 while (index < entries.keys.length) {
3420 var e = {key: entries.keys[index], value: entries.values[index]};
3421 index = index += 1;
3422 set_internal(o, '[[MapNextIndex]]', index);
3423 if (e.key !== empty) {
3424 if (itemKind === 'key') {
3425 return CreateIterResultObject(e.key, false);
3426 } else if (itemKind === 'value') {
3427 return CreateIterResultObject(e.value, false);
3428 } else {
3429 return CreateIterResultObject([e.key, e.value], false);
3430 }
3431 }
3432 }
3433 return CreateIterResultObject(undefined, true);
3434 });
3435
3436 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3437 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3438
3439 // 23.1.5.3 Properties of Map Iterator Instances
3440 }());
3441
3442 // ---------------------------------------
3443 // 23.2 Set Objects
3444 // ---------------------------------------
3445
3446 (function() {
3447 // 23.2.1 The Set Constructor
3448 // 23.2.1.1 Set ( [ iterable ] )
3449
3450 /** @constructor */
3451 function Set(/*iterable*/) {
3452 var set = strict(this);
3453 var iterable = arguments[0];
3454
3455 if (Type(set) !== 'object') throw TypeError();
3456 if ('[[SetData]]' in set) throw TypeError();
3457
3458 if (iterable !== undefined) {
3459 var adder = set['add'];
3460 if (!IsCallable(adder)) throw TypeError();
3461 var iter = GetIterator(ToObject(iterable));
3462 }
3463 set_internal(set, '[[SetData]]', []);
3464 if (iter === undefined) return set;
3465 while (true) {
3466 var next = IteratorStep(iter);
3467 if (next === false)
3468 return set;
3469 var nextValue = IteratorValue(next);
3470 adder.call(set, nextValue);
3471 }
3472
3473 return set;
3474 }
3475
3476 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3477 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3478 (new global.Set([1]).size !== 1))
3479 global.Set = Set;
3480
3481 function SetDataIndexOf(setData, key) {
3482 var i;
3483 if (key === key)
3484 return setData.indexOf(key);
3485 // Slow case for NaN
3486 for (i = 0; i < setData.length; i += 1)
3487 if (SameValueZero(setData[i], key)) return i;
3488 return -1;
3489 }
3490
3491 // 23.2.1.2 new Set ( ...argumentsList )
3492 // 23.2.2 Properties of the Set Constructor
3493
3494 // 23.2.2.1 Set.prototype
3495 var $SetPrototype$ = {};
3496 Set.prototype = $SetPrototype$;
3497
3498 // 23.2.2.2 get Set [ @@species ]
3499 // 23.2.3 Properties of the Set Prototype Object
3500
3501 // 23.2.3.1 Set.prototype.add (value )
3502 define(
3503 Set.prototype, 'add',
3504 function add(value) {
3505 var s = strict(this);
3506 if (Type(s) !== 'object') throw TypeError();
3507 if (!('[[SetData]]' in s)) throw TypeError();
3508 if (s['[[SetData]]'] === undefined) throw TypeError();
3509 if (SameValue(value, -0)) value = 0;
3510 var entries = s['[[SetData]]'];
3511 var i = SetDataIndexOf(entries, value);
3512 if (i < 0) i = s['[[SetData]]'].length;
3513 s['[[SetData]]'][i] = value;
3514
3515 return s;
3516 });
3517
3518 // 23.2.3.2 Set.prototype.clear ()
3519 define(
3520 Set.prototype, 'clear',
3521 function clear() {
3522 var s = strict(this);
3523 if (Type(s) !== 'object') throw TypeError();
3524 if (!('[[SetData]]' in s)) throw TypeError();
3525 if (s['[[SetData]]'] === undefined) throw TypeError();
3526 var entries = s['[[SetData]]'];
3527 entries.length = 0;
3528 return undefined;
3529 });
3530
3531 // 23.2.3.3 Set.prototype.constructor
3532 // 23.2.3.4 Set.prototype.delete ( value )
3533 define(
3534 Set.prototype, 'delete',
3535 function delete_(value) {
3536 var s = strict(this);
3537 if (Type(s) !== 'object') throw TypeError();
3538 if (!('[[SetData]]' in s)) throw TypeError();
3539 if (s['[[SetData]]'] === undefined) throw TypeError();
3540 var entries = s['[[SetData]]'];
3541 var i = SetDataIndexOf(entries, value);
3542 if (i < 0) return false;
3543 entries[i] = empty;
3544 return true;
3545 });
3546
3547 // 23.2.3.5 Set.prototype.entries ( )
3548 define(
3549 Set.prototype, 'entries',
3550 function entries() {
3551 var s = strict(this);
3552 if (Type(s) !== 'object') throw TypeError();
3553 return CreateSetIterator(s, 'key+value');
3554 });
3555
3556 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3557 define(
3558 Set.prototype, 'forEach',
3559 function forEach(callbackfn/*, thisArg*/) {
3560 var thisArg = arguments[1];
3561
3562 var s = strict(this);
3563 if (Type(s) !== 'object') throw TypeError();
3564 if (!('[[SetData]]' in s)) throw TypeError();
3565 if (s['[[SetData]]'] === undefined) throw TypeError();
3566 var entries = s['[[SetData]]'];
3567
3568 if (!IsCallable(callbackfn)) {
3569 throw TypeError('First argument to forEach is not callable.');
3570 }
3571 for (var i = 0; i < entries.length; ++i) {
3572 if (entries[i] !== empty) {
3573 callbackfn.call(thisArg, entries[i], entries[i], s);
3574 }
3575 }
3576 });
3577
3578 // 23.2.3.7 Set.prototype.has ( value )
3579 define(
3580 Set.prototype, 'has',
3581 function has(key) {
3582 var s = strict(this);
3583 if (Type(s) !== 'object') throw TypeError();
3584 if (!('[[SetData]]' in s)) throw TypeError();
3585 if (s['[[SetData]]'] === undefined) throw TypeError();
3586 var entries = s['[[SetData]]'];
3587 return SetDataIndexOf(entries, key) !== -1;
3588 });
3589
3590 // 23.2.3.8 Set.prototype.keys ( )
3591 // See Set.prototype.values
3592
3593 // 23.2.3.9 get Set.prototype.size
3594 Object.defineProperty(
3595 Set.prototype, 'size', {
3596 get: function() {
3597 var s = strict(this);
3598 if (Type(s) !== 'object') throw TypeError();
3599 if (!('[[SetData]]' in s)) throw TypeError();
3600 if (s['[[SetData]]'] === undefined) throw TypeError();
3601 var entries = s['[[SetData]]'];
3602 var count = 0;
3603 for (var i = 0; i < entries.length; ++i) {
3604 if (entries[i] !== empty)
3605 count = count + 1;
3606 }
3607 return count;
3608 }
3609 });
3610
3611 // 23.2.3.10 Set.prototype.values ( )
3612 define(
3613 Set.prototype, 'values',
3614 function values() {
3615 var s = strict(this);
3616 if (Type(s) !== 'object') throw TypeError();
3617 return CreateSetIterator(s, 'value');
3618 });
3619 // NOTE: function name is still 'values':
3620 Set.prototype.keys = Set.prototype.values;
3621
3622 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3623 define(
3624 Set.prototype, $$iterator,
3625 function() {
3626 var s = strict(this);
3627 if (Type(s) !== 'object') throw TypeError();
3628 return CreateSetIterator(s);
3629 });
3630
3631 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3632 define(global.Set.prototype, $$toStringTag, 'Set');
3633
3634 // 23.2.4 Properties of Set Instances
3635 // 23.2.5 Set Iterator Objects
3636 /** @constructor */
3637 function SetIterator() {}
3638
3639 // 23.2.5.1 CreateSetIterator Abstract Operation
3640 function CreateSetIterator(set, kind) {
3641 if (Type(set) !== 'object') throw TypeError();
3642 if (!('[[SetData]]' in set)) throw TypeError();
3643 if (set['[[SetData]]'] === undefined) throw TypeError();
3644 var iterator = new SetIterator;
3645 set_internal(iterator, '[[IteratedSet]]', set);
3646 set_internal(iterator, '[[SetNextIndex]]', 0);
3647 set_internal(iterator, '[[SetIterationKind]]', kind);
3648 return iterator;
3649 }
3650
3651 // 23.2.5.2 The %SetIteratorPrototype% Object
3652 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3653 SetIterator.prototype = $SetIteratorPrototype$;
3654
3655 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3656 define(
3657 $SetIteratorPrototype$, 'next',
3658 function next() {
3659 var o = strict(this);
3660 if (Type(o) !== 'object') throw TypeError();
3661 var s = o['[[IteratedSet]]'],
3662 index = o['[[SetNextIndex]]'],
3663 itemKind = o['[[SetIterationKind]]'],
3664 entries = s['[[SetData]]'];
3665 while (index < entries.length) {
3666 var e = entries[index];
3667 index = index += 1;
3668 set_internal(o, '[[SetNextIndex]]', index);
3669 if (e !== empty) {
3670 if (itemKind === 'key+value')
3671 return CreateIterResultObject([e, e], false);
3672 return CreateIterResultObject(e, false);
3673 }
3674 }
3675 return CreateIterResultObject(undefined, true);
3676 });
3677
3678 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3679 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3680
3681 // 23.2.5.3 Properties of Set Iterator Instances
3682
3683 }());
3684
3685 // ---------------------------------------
3686 // 23.3 WeakMap Objects
3687 // ---------------------------------------
3688
3689 (function() {
3690 // 23.3.1 The WeakMap Constructor
3691 // 23.3.1.1 WeakMap ( [ iterable ] )
3692 /** @constructor */
3693 function WeakMap(/*iterable*/) {
3694 var map = strict(this);
3695 var iterable = arguments[0];
3696
3697 if (Type(map) !== 'object') throw TypeError();
3698 if ('[[WeakMapData]]' in map) throw TypeError();
3699
3700 if (iterable !== undefined) {
3701 var adder = map['set'];
3702 if (!IsCallable(adder)) throw TypeError();
3703 var iter = GetIterator(ToObject(iterable));
3704 }
3705 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3706 if (iter === undefined) return map;
3707 while (true) {
3708 var next = IteratorStep(iter);
3709 if (next === false)
3710 return map;
3711 var nextValue = IteratorValue(next);
3712 if (Type(nextValue) !== 'object') throw TypeError();
3713 var k = nextValue[0];
3714 var v = nextValue[1];
3715 adder.call(map, k, v);
3716 }
3717
3718 return map;
3719 }
3720
3721 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3722 global.WeakMap = WeakMap;
3723
3724 // 23.3.2 Properties of the WeakMap Constructor
3725 // 23.3.2.1 WeakMap.prototype
3726 var $WeakMapPrototype$ = {};
3727 WeakMap.prototype = $WeakMapPrototype$;
3728
3729
3730
3731 // 23.3.2.2 WeakMap[ @@create ] ( )
3732 // 23.3.3 Properties of the WeakMap Prototype Object
3733
3734 // 23.3.3.1 WeakMap.prototype.constructor
3735
3736 // 23.3.3.2 WeakMap.prototype.delete ( key )
3737 define(
3738 WeakMap.prototype, 'delete',
3739 function delete_(key) {
3740 var M = strict(this);
3741 if (Type(M) !== 'object') throw TypeError();
3742 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3743 if (Type(key) !== 'object') throw TypeError('Expected object');
3744 return M['[[WeakMapData]]'].remove(key);
3745 });
3746
3747 // 23.3.3.3 WeakMap.prototype.get ( key )
3748 define(
3749 WeakMap.prototype, 'get',
3750 function get(key, defaultValue) {
3751 var M = strict(this);
3752 if (Type(M) !== 'object') throw TypeError();
3753 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3754 if (Type(key) !== 'object') throw TypeError('Expected object');
3755 return M['[[WeakMapData]]'].get(key, defaultValue);
3756 });
3757
3758 // 23.3.3.4 WeakMap.prototype.has ( key )
3759 define(
3760 WeakMap.prototype, 'has',
3761 function has(key) {
3762 var M = strict(this);
3763 if (Type(M) !== 'object') throw TypeError();
3764 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3765 if (Type(key) !== 'object') throw TypeError('Expected object');
3766 return M['[[WeakMapData]]'].has(key);
3767 });
3768
3769 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3770 define(
3771 WeakMap.prototype, 'set',
3772 function set(key, value) {
3773 var M = strict(this);
3774 if (Type(M) !== 'object') throw TypeError();
3775 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3776 if (Type(key) !== 'object') throw TypeError('Expected object');
3777 M['[[WeakMapData]]'].set(key, value);
3778 return M;
3779 });
3780
3781 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3782 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3783
3784 // 23.3.4 Properties of WeakMap Instances
3785
3786 // Polyfills for incomplete native implementations:
3787 (function() {
3788 var wm = new global.WeakMap();
3789 var orig = global.WeakMap.prototype.set;
3790 define(global.WeakMap.prototype, 'set', function set() {
3791 orig.apply(this, arguments);
3792 return this;
3793 }, wm.set({}, 0) !== wm);
3794 }());
3795 }());
3796
3797 // ---------------------------------------
3798 // 23.4 WeakSet Objects
3799 // ---------------------------------------
3800
3801 (function() {
3802 // 23.4.1 The WeakSet Constructor
3803 // 23.4.1.1 WeakSet ( [ iterable ] )
3804 /** @constructor */
3805 function WeakSet(/*iterable*/) {
3806 var set = strict(this);
3807 var iterable = arguments[0];
3808
3809 if (Type(set) !== 'object') throw TypeError();
3810 if ('[[WeakSetData]]' in set) throw TypeError();
3811
3812 if (iterable !== undefined) {
3813 var adder = set['add'];
3814 if (!IsCallable(adder)) throw TypeError();
3815 var iter = GetIterator(ToObject(iterable));
3816 }
3817 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3818 if (iter === undefined) return set;
3819 while (true) {
3820 var next = IteratorStep(iter);
3821 if (next === false)
3822 return set;
3823 var nextValue = IteratorValue(next);
3824 adder.call(set, nextValue);
3825 }
3826
3827 return set;
3828 }
3829
3830 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3831 global.WeakSet = WeakSet;
3832
3833 // 23.4.2 Properties of the WeakSet Constructor
3834 // 23.4.2.1 WeakSet.prototype
3835 var $WeakSetPrototype$ = {};
3836 WeakSet.prototype = $WeakSetPrototype$;
3837
3838 // 23.4.3 Properties of the WeakSet Prototype Object
3839 // 23.4.3.1 WeakSet.prototype.add (value )
3840 define(
3841 WeakSet.prototype, 'add',
3842 function add(value) {
3843 var S = strict(this);
3844 if (Type(S) !== 'object') throw TypeError();
3845 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3846 if (Type(value) !== 'object') throw TypeError('Expected object');
3847 S['[[WeakSetData]]'].set(value, true);
3848 return S;
3849 });
3850
3851 // 23.4.3.2 WeakSet.prototype.constructor
3852 // 23.4.3.3 WeakSet.prototype.delete ( value )
3853 define(
3854 WeakSet.prototype, 'delete',
3855 function delete_(value) {
3856 var S = strict(this);
3857 if (Type(S) !== 'object') throw TypeError();
3858 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3859 if (Type(value) !== 'object') throw TypeError('Expected object');
3860 return S['[[WeakSetData]]'].remove(value);
3861 });
3862
3863 // 23.4.3.4 WeakSet.prototype.has ( value )
3864 define(
3865 WeakSet.prototype, 'has',
3866 function has(key) {
3867 var S = strict(this);
3868 if (Type(S) !== 'object') throw TypeError();
3869 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3870 if (Type(key) !== 'object') throw TypeError('Expected object');
3871 return S['[[WeakSetData]]'].has(key);
3872 });
3873
3874 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3875 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3876
3877 // 23.4.4 Properties of WeakSet Instances
3878
3879 // Polyfills for incomplete native implementations:
3880 (function() {
3881 var ws = new global.WeakSet();
3882 var orig = global.WeakSet.prototype.add;
3883 define(global.WeakSet.prototype, 'add', function add() {
3884 orig.apply(this, arguments);
3885 return this;
3886 }, ws.add({}) !== ws);
3887 }());
3888 }());
3889
3890 // ---------------------------------------
3891 // 24 Structured Data
3892 // ---------------------------------------
3893
3894 // ---------------------------------------
3895 // 24.1 ArrayBuffer Objects
3896 // ---------------------------------------
3897
3898 // See typedarray.js for TypedArray polyfill
3899
3900 (function() {
3901 if (!('ArrayBuffer' in global))
3902 return;
3903
3904 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3905 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3906 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3907 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3908 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3909 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3910 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3911 // 24.1.2 The ArrayBuffer Constructor
3912 // 24.1.2.1 ArrayBuffer( length )
3913 // 24.1.3 Properties of the ArrayBuffer Constructor
3914
3915 // 24.1.3.1 ArrayBuffer.isView ( arg )
3916 define(
3917 ArrayBuffer, 'isView',
3918 function isView(arg) {
3919 if (Type(arg) !== 'object') return false;
3920 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3921 return false;
3922 });
3923
3924 // 24.1.3.2 ArrayBuffer.prototype
3925 // 24.1.3.3 get ArrayBuffer [ @@species ]
3926 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3927 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3928 // 24.1.4.2 ArrayBuffer.prototype.constructor
3929 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3930
3931 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3932 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3933
3934 // 24.1.5 Properties of the ArrayBuffer Instances
3935 }());
3936
3937 // ---------------------------------------
3938 // 24.2 DataView Objects
3939 // ---------------------------------------
3940
3941 // See typedarray.js for TypedArray polyfill
3942
3943 (function() {
3944 if (!('DataView' in global))
3945 return;
3946
3947 // 24.2.1 Abstract Operations For DataView Objects
3948 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3949 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3950 // 24.2.2 The DataView Constructor
3951 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3952 // 24.2.3 Properties of the DataView Constructor
3953 // 24.2.3.1 DataView.prototype
3954 // 24.2.4 Properties of the DataView Prototype Object
3955 // 24.2.4.1 get DataView.prototype.buffer
3956 // 24.2.4.2 get DataView.prototype.byteLength
3957 // 24.2.4.3 get DataView.prototype.byteOffset
3958 // 24.2.4.4 DataView.prototype.constructor
3959 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3960 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3961 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3962 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3963 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3964 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3965 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3966 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3967 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3968 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3969 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3970 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3971 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3972 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3973 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3974 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3975
3976 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3977 define(DataView.prototype, $$toStringTag, 'DataView');
3978
3979 // 24.2.5 Properties of DataView Instances
3980 }());
3981
3982 // ---------------------------------------
3983 // 24.3 The JSON Object
3984 // ---------------------------------------
3985
3986 // 24.3.1 JSON.parse ( text [ , reviver ] )
3987 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3988 // 24.3.3 JSON [ @@toStringTag ]
3989 define(JSON, $$toStringTag, 'JSON');
3990
3991 // ---------------------------------------
3992 // 25.1 Iteration
3993 // ---------------------------------------
3994
3995 // 25.1.1 Common Iteration Interfaces
3996 // 25.1.1.1 The Iterable Interface
3997 // 25.1.1.2 The Iterator Interface
3998 // 25.1.1.3 The IteratorResult Interface
3999
4000 // 25.1.2 The %IteratorPrototype% Object
4001 // Defined earlier, so other prototypes can reference it.
4002 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
4003 define($IteratorPrototype$, $$iterator, function() {
4004 return this;
4005 });
4006
4007
4008 // ---------------------------------------
4009 // 25.4 Promise Objects
4010 // ---------------------------------------
4011
4012 (function() {
4013 // 25.4 Promise Objects
4014
4015 // 25.4.1 Promise Abstract Operations
4016
4017 // 25.4.1.1 PromiseCapability Records
4018 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4019
4020 function IfAbruptRejectPromise(value, capability) {
4021 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4022 return capability['[[Promise]]'];
4023 }
4024
4025 // 25.4.1.2 PromiseReaction Records
4026
4027 // 25.4.1.3 CreateResolvingFunctions ( promise )
4028
4029 function CreateResolvingFunctions(promise) {
4030 var alreadyResolved = {'[[value]]': false};
4031 var resolve = PromiseResolveFunction();
4032 set_internal(resolve, '[[Promise]]', promise);
4033 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4034 var reject = PromiseRejectFunction();
4035 set_internal(reject, '[[Promise]]', promise);
4036 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4037 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4038 }
4039
4040 // 25.4.1.3.1 Promise Reject Functions
4041
4042 function PromiseRejectFunction() {
4043 var F = function(reason) {
4044 console.assert(Type(F['[[Promise]]']) === 'object');
4045 var promise = F['[[Promise]]'];
4046 var alreadyResolved = F['[[AlreadyResolved]]'];
4047 if (alreadyResolved['[[value]]']) return undefined;
4048 set_internal(alreadyResolved, '[[value]]', true);
4049 return RejectPromise(promise, reason);
4050 };
4051 return F;
4052 }
4053
4054 // 25.4.1.3.2 Promise Resolve Functions
4055
4056 function PromiseResolveFunction() {
4057 var F = function(resolution) {
4058 console.assert(Type(F['[[Promise]]']) === 'object');
4059 var promise = F['[[Promise]]'];
4060 var alreadyResolved = F['[[AlreadyResolved]]'];
4061 if (alreadyResolved['[[value]]']) return undefined;
4062 set_internal(alreadyResolved, '[[value]]', true);
4063
4064 if (SameValue(resolution, promise)) {
4065 var selfResolutionError = TypeError();
4066 return RejectPromise(promise, selfResolutionError);
4067 }
4068 if (Type(resolution) !== 'object')
4069 return FulfillPromise(promise, resolution);
4070 try {
4071 var then = resolution['then'];
4072 } catch(then) {
4073 return RejectPromise(promise, then);
4074 }
4075 if (!IsCallable(then))
4076 return FulfillPromise(promise, resolution);
4077 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4078 return undefined;
4079 };
4080 return F;
4081 }
4082
4083 // 25.4.1.4 FulfillPromise ( promise, value )
4084
4085 function FulfillPromise(promise, value) {
4086 console.assert(promise['[[PromiseState]]'] === 'pending');
4087 var reactions = promise['[[PromiseFulfillReactions]]'];
4088 set_internal(promise, '[[PromiseResult]]', value);
4089 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4090 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4091 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4092 return TriggerPromiseReactions(reactions, value);
4093 }
4094
4095 // 25.4.1.5 NewPromiseCapability ( C )
4096
4097 function NewPromiseCapability(c) {
4098 // To keep Promise hermetic, this doesn't look much like the spec.
4099 return CreatePromiseCapabilityRecord(undefined, c);
4100 }
4101
4102 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4103
4104 function CreatePromiseCapabilityRecord(promise, constructor) {
4105 // To keep Promise hermetic, this doesn't look much like the spec.
4106 console.assert(IsConstructor(constructor));
4107 var promiseCapability = {};
4108 set_internal(promiseCapability, '[[Promise]]', promise);
4109 set_internal(promiseCapability, '[[Resolve]]', undefined);
4110 set_internal(promiseCapability, '[[Reject]]', undefined);
4111 var executor = GetCapabilitiesExecutor();
4112 set_internal(executor, '[[Capability]]', promiseCapability);
4113
4114 // NOTE: Differs from spec; object is constructed here
4115 var constructorResult = promise = new constructor(executor);
4116 set_internal(promiseCapability, '[[Promise]]', promise);
4117
4118 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4119 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4120 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4121 return promiseCapability;
4122 }
4123
4124 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4125
4126 function GetCapabilitiesExecutor() {
4127 var F = function(resolve, reject) {
4128 console.assert(F['[[Capability]]']);
4129 var promiseCapability = F['[[Capability]]'];
4130 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4131 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4132 set_internal(promiseCapability, '[[Resolve]]', resolve);
4133 set_internal(promiseCapability, '[[Reject]]', reject);
4134 return undefined;
4135 };
4136 return F;
4137 }
4138
4139 // 25.4.1.6 IsPromise ( x )
4140
4141 function IsPromise(x) {
4142 if (Type(x) !== 'object') return false;
4143 if (!('[[PromiseState]]' in x)) return false;
4144 if (x['[[PromiseState]]'] === undefined) return false;
4145 return true;
4146 }
4147
4148 // 25.4.1.7 RejectPromise ( promise, reason )
4149
4150 function RejectPromise(promise, reason) {
4151 console.assert(promise['[[PromiseState]]'] === 'pending');
4152 var reactions = promise['[[PromiseRejectReactions]]'];
4153 set_internal(promise, '[[PromiseResult]]', reason);
4154 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4155 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4156 set_internal(promise, '[[PromiseState]]', 'rejected');
4157 return TriggerPromiseReactions(reactions, reason);
4158 }
4159
4160 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4161
4162 function TriggerPromiseReactions(reactions, argument) {
4163 for (var i = 0, len = reactions.length; i < len; ++i)
4164 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4165 return undefined;
4166 }
4167
4168 // 25.4.2 Promise Jobs
4169
4170 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4171
4172 function PromiseReactionJob(reaction, argument) {
4173 var promiseCapability = reaction['[[Capabilities]]'];
4174 var handler = reaction['[[Handler]]'];
4175 var handlerResult, status;
4176 try {
4177 if (handler === 'Identity') handlerResult = argument;
4178 else if (handler === 'Thrower') throw argument;
4179 else handlerResult = handler.call(undefined, argument);
4180 } catch (handlerResult) {
4181 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4182 NextJob(status); return;
4183 }
4184 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4185 NextJob(status);
4186 }
4187
4188 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4189
4190 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4191 // SPEC BUG: promise vs. promiseToResolve
4192 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4193 try {
4194 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4195 resolvingFunctions['[[Reject]]']);
4196 } catch (thenCallResult) {
4197 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4198 NextJob(status); return;
4199 }
4200 NextJob(thenCallResult);
4201 }
4202
4203 // 25.4.3 The Promise Constructor
4204
4205 // 25.4.3.1 Promise ( executor )
4206
4207 function Promise(executor) {
4208 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4209 Object.defineProperty(this, '[[PromiseState]]', config);
4210 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4211 Object.defineProperty(this, '[[PromiseResult]]', config);
4212 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4213 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4214
4215 var promise = this;
4216 if (Type(promise) !== 'object') throw new TypeError();
4217 if (!('[[PromiseState]]' in promise)) throw TypeError();
4218 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4219 if (!IsCallable(executor)) throw TypeError();
4220
4221 set_internal(promise, '[[PromiseConstructor]]', Promise);
4222
4223 return InitializePromise(promise, executor);
4224 }
4225
4226 // 25.4.3.1.1 InitializePromise ( promise, executor )
4227
4228 function InitializePromise(promise, executor) {
4229 console.assert('[[PromiseState]]' in promise);
4230 console.assert(IsCallable(executor));
4231 set_internal(promise, '[[PromiseState]]', 'pending');
4232 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4233 set_internal(promise, '[[PromiseRejectReactions]]', []);
4234 var resolvingFunctions = CreateResolvingFunctions(promise);
4235 try {
4236 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4237 resolvingFunctions['[[Reject]]']);
4238 } catch (completion) {
4239 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4240 }
4241 return promise;
4242 }
4243
4244 // 25.4.4 Properties of the Promise Constructor
4245 // 25.4.4.1 Promise.all ( iterable )
4246
4247 define(Promise, 'all', function all(iterable) {
4248 var c = strict(this);
4249 var promiseCapability = NewPromiseCapability(c);
4250 try {
4251 var iterator = GetIterator(iterable);
4252 } catch (value) {
4253 promiseCapability['[[Reject]]'].call(undefined, value);
4254 return promiseCapability['[[Promise]]'];
4255 }
4256 var values = [];
4257 var remainingElementsCount = { value: 1 };
4258 var index = 0;
4259 while (true) {
4260 try {
4261 var next = IteratorStep(iterator);
4262 } catch (value) {
4263 promiseCapability['[[Reject]]'].call(undefined, value);
4264 return promiseCapability['[[Promise]]'];
4265 }
4266 if (!next) {
4267 remainingElementsCount.value -= 1;
4268 if (remainingElementsCount.value === 0) {
4269 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4270
4271
4272 }
4273 return promiseCapability['[[Promise]]'];
4274 }
4275 try {
4276 var nextValue = IteratorValue(next);
4277 } catch (value) {
4278 promiseCapability['[[Reject]]'].call(undefined, value);
4279 return promiseCapability['[[Promise]]'];
4280 }
4281 try {
4282 var nextPromise = c.resolve(nextValue);
4283 } catch (value) {
4284 promiseCapability['[[Reject]]'].call(undefined, value);
4285 return promiseCapability['[[Promise]]'];
4286 }
4287 var resolveElement = PromiseAllResolveElementFunction();
4288 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4289 set_internal(resolveElement, '[[Index]]', index);
4290 set_internal(resolveElement, '[[Values]]', values);
4291 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4292 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4293 remainingElementsCount.value += 1;
4294 try {
4295 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4296 } catch (value) {
4297 promiseCapability['[[Reject]]'].call(undefined, value);
4298 return promiseCapability['[[Promise]]'];
4299 }
4300 index += 1;
4301 }
4302 });
4303
4304 // 25.4.4.1.1 Promise.all Resolve Element Functions
4305
4306 function PromiseAllResolveElementFunction() {
4307 var F = function(x) {
4308 var alreadyCalled = F['[[AlreadyCalled]]'];
4309 if (alreadyCalled.value) return undefined;
4310 alreadyCalled.value = true;
4311 var index = F['[[Index]]'];
4312 var values = F['[[Values]]'];
4313 var promiseCapability = F['[[Capabilities]]'];
4314 var remainingElementsCount = F['[[RemainingElements]]'];
4315 try {
4316 values[index] = x;
4317 } catch (result) {
4318 promiseCapability['[[Reject]]'].call(undefined, result);
4319 return promiseCapability['[[Promise]]'];
4320 }
4321 remainingElementsCount.value -= 1;
4322 if (remainingElementsCount.value === 0)
4323 return promiseCapability['[[Resolve]]'].call(undefined, values);
4324 return undefined;
4325 };
4326 return F;
4327 }
4328
4329 // 25.4.4.2 Promise.prototype
4330
4331 Promise.prototype = {};
4332
4333 // 25.4.4.3 Promise.race ( iterable )
4334
4335 define(Promise, 'race', function race(iterable) {
4336 var c = strict(this);
4337 var promiseCapability = NewPromiseCapability(c);
4338 try {
4339 var iterator = GetIterator(iterable);
4340 } catch (value) {
4341 promiseCapability['[[Reject]]'].call(undefined, value);
4342 return promiseCapability['[[Promise]]'];
4343 }
4344 while (true) {
4345 try {
4346 var next = IteratorStep(iterator);
4347 } catch (value) {
4348 promiseCapability['[[Reject]]'].call(undefined, value);
4349 return promiseCapability['[[Promise]]'];
4350 }
4351 if (!next) return promiseCapability['[[Promise]]'];
4352 try {
4353 var nextValue = IteratorValue(next);
4354 } catch (value) {
4355 promiseCapability['[[Reject]]'].call(undefined, value);
4356 return promiseCapability['[[Promise]]'];
4357 }
4358 try {
4359 var nextPromise = c.resolve(nextValue);
4360 } catch (value) {
4361 promiseCapability['[[Reject]]'].call(undefined, value);
4362 return promiseCapability['[[Promise]]'];
4363 }
4364 try {
4365 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4366 } catch (value) {
4367 promiseCapability['[[Reject]]'].call(undefined, value);
4368 return promiseCapability['[[Promise]]'];
4369 }
4370 }
4371 });
4372
4373 // 25.4.4.4 Promise.reject ( r )
4374
4375 define(Promise, 'reject', function reject(r) {
4376 var c = strict(this);
4377 var promiseCapability = NewPromiseCapability(c);
4378 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4379 return promiseCapability['[[Promise]]'];
4380 });
4381
4382 // 25.4.4.5 Promise.resolve ( x )
4383
4384 define(Promise, 'resolve', function resolve(x) {
4385 var c = strict(this);
4386 if (IsPromise(x)) {
4387 var constructor = x['[[PromiseConstructor]]'];
4388 if (SameValue(constructor, c)) return x;
4389 }
4390 var promiseCapability = NewPromiseCapability(c);
4391 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4392 return promiseCapability['[[Promise]]'];
4393 });
4394
4395 // 25.4.4.6 Promise [ @@create ] ( )
4396 // 25.4.4.6.1 AllocatePromise ( constructor )
4397 // 25.4.5 Properties of the Promise Prototype Object
4398 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4399
4400 define(Promise.prototype, 'catch', function catch_(onRejected) {
4401 var promise = this;
4402 return promise.then(undefined, onRejected);
4403 });
4404
4405 // 25.4.5.2 Promise.prototype.constructor
4406
4407 Promise.prototype.constructor = Promise;
4408
4409 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4410
4411 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4412 var promise = this;
4413 if (!IsPromise(promise)) throw TypeError();
4414 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4415 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4416 var c = promise.constructor;
4417 var promiseCapability = NewPromiseCapability(c);
4418 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4419 '[[Handler]]': onFulfilled };
4420 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4421 '[[Handler]]': onRejected };
4422 if (promise['[[PromiseState]]'] === 'pending') {
4423 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4424 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4425 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4426 var value = promise['[[PromiseResult]]'];
4427 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4428 } else if (promise['[[PromiseState]]'] === 'rejected') {
4429 var reason = promise['[[PromiseResult]]'];
4430 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4431 }
4432 return promiseCapability['[[Promise]]'];
4433 });
4434
4435 // 25.4.6 Properties of Promise Instances
4436
4437 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4438 global.Promise = Promise;
4439
4440 // Patch early Promise.cast vs. Promise.resolve implementations
4441 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4442 }());
4443
4444 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4445 define(Promise.prototype, $$toStringTag, 'Promise');
4446
4447 // ---------------------------------------
4448 // 26 Reflection
4449 // ---------------------------------------
4450
4451 (function() {
4452 // 26.1 The Reflect Object
4453 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4454 global.Reflect = {};
4455
4456 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4457 define(
4458 Reflect, 'apply',
4459 function apply(target, thisArgument, argumentsList) {
4460 if (!IsCallable(target)) throw TypeError();
4461 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4462 });
4463
4464 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4465 define(
4466 Reflect, 'construct',
4467 function construct(target, argumentsList) {
4468 return __cons(target, argumentsList);
4469 });
4470
4471 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4472 define(
4473 Reflect, 'defineProperty',
4474 function defineProperty(target, propertyKey, attributes) {
4475 try {
4476 Object.defineProperty(target, propertyKey, attributes);
4477 return true;
4478 } catch (_) {
4479 return false;
4480 }
4481 });
4482
4483 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4484 define(
4485 Reflect, 'deleteProperty',
4486 function deleteProperty(target,name) {
4487 try {
4488 delete target[name];
4489 return !HasOwnProperty(target, name);
4490 } catch (_) {
4491 return false;
4492 }
4493 });
4494
4495 // 26.1.5 Reflect.enumerate ( target )
4496 define(
4497 Reflect, 'enumerate',
4498 function enumerate(target) {
4499 target = ToObject(target);
4500 var iterator = Enumerate(target);
4501 return iterator;
4502 });
4503
4504 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4505 define(
4506 Reflect, 'get',
4507 function get(target, name, receiver) {
4508 target = ToObject(target);
4509 name = String(name);
4510 receiver = (receiver === undefined) ? target : ToObject(receiver);
4511 var desc = getPropertyDescriptor(target, name);
4512 if (desc && 'get' in desc)
4513 return Function.prototype.call.call(desc['get'], receiver);
4514 return target[name];
4515 });
4516
4517 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4518 define(
4519 Reflect, 'getOwnPropertyDescriptor',
4520 Object.getOwnPropertyDescriptor);
4521
4522 // 26.1.8 Reflect.getPrototypeOf ( target )
4523 define(
4524 Reflect, 'getPrototypeOf',
4525 Object.getPrototypeOf);
4526
4527 // 26.1.9 Reflect.has ( target, propertyKey )
4528 define(
4529 Reflect, 'has',
4530 function has(target,name) {
4531 return String(name) in ToObject(target);
4532 });
4533
4534 // 26.1.10 Reflect.isExtensible (target)
4535 define(
4536 Reflect, 'isExtensible',
4537 Object.isExtensible);
4538
4539 // 26.1.11 Reflect.ownKeys ( target )
4540 define(
4541 Reflect, 'ownKeys',
4542 function ownKeys(target) {
4543 var obj = ToObject(target);
4544 return Object.getOwnPropertyNames(obj);
4545 });
4546
4547 // 26.1.12 Reflect.preventExtensions ( target )
4548 define(
4549 Reflect, 'preventExtensions',
4550 function preventExtensions(target) {
4551 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4552 });
4553
4554 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4555 define(
4556 Reflect, 'set',
4557 function set(target, name, value, receiver) {
4558 target = ToObject(target);
4559 name = String(name);
4560 receiver = (receiver === undefined) ? target : ToObject(receiver);
4561 var desc = getPropertyDescriptor(target, name);
4562 try {
4563 if (desc && 'set' in desc)
4564 Function.prototype.call.call(desc['set'], receiver, value);
4565 else
4566 target[name] = value;
4567 return true;
4568 } catch (_) {
4569 return false;
4570 }
4571 });
4572
4573 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4574 define(
4575 Reflect, 'setPrototypeOf',
4576 function setPrototypeOf(target, proto) {
4577 try {
4578 target.__proto__ = proto;
4579 return Reflect.getPrototypeOf(target) === proto;
4580 } catch(_) {
4581 return false;
4582 }
4583 });
4584
4585 }());
4586
4587 // ---------------------------------------
4588 // 26.2 Proxy Objects
4589 // ---------------------------------------
4590
4591 // Not polyfillable.
4592
4593 }(self));
4594
4595 // This helper is defined outside the main scope so that the use of
4596 // 'eval' does not taint the scope for minifiers.
4597 function __cons(t, a) {
4598 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4599 }
4600 </script>
4601 <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){
4602 'use strict'
4603
4604 exports.byteLength = byteLength
4605 exports.toByteArray = toByteArray
4606 exports.fromByteArray = fromByteArray
4607
4608 var lookup = []
4609 var revLookup = []
4610 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4611
4612 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4613 for (var i = 0, len = code.length; i < len; ++i) {
4614 lookup[i] = code[i]
4615 revLookup[code.charCodeAt(i)] = i
4616 }
4617
4618 revLookup['-'.charCodeAt(0)] = 62
4619 revLookup['_'.charCodeAt(0)] = 63
4620
4621 function placeHoldersCount (b64) {
4622 var len = b64.length
4623 if (len % 4 > 0) {
4624 throw new Error('Invalid string. Length must be a multiple of 4')
4625 }
4626
4627 // the number of equal signs (place holders)
4628 // if there are two placeholders, than the two characters before it
4629 // represent one byte
4630 // if there is only one, then the three characters before it represent 2 bytes
4631 // this is just a cheap hack to not do indexOf twice
4632 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4633 }
4634
4635 function byteLength (b64) {
4636 // base64 is 4/3 + up to two characters of the original data
4637 return b64.length * 3 / 4 - placeHoldersCount(b64)
4638 }
4639
4640 function toByteArray (b64) {
4641 var i, j, l, tmp, placeHolders, arr
4642 var len = b64.length
4643 placeHolders = placeHoldersCount(b64)
4644
4645 arr = new Arr(len * 3 / 4 - placeHolders)
4646
4647 // if there are placeholders, only get up to the last complete 4 chars
4648 l = placeHolders > 0 ? len - 4 : len
4649
4650 var L = 0
4651
4652 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4653 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4654 arr[L++] = (tmp >> 16) & 0xFF
4655 arr[L++] = (tmp >> 8) & 0xFF
4656 arr[L++] = tmp & 0xFF
4657 }
4658
4659 if (placeHolders === 2) {
4660 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4661 arr[L++] = tmp & 0xFF
4662 } else if (placeHolders === 1) {
4663 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4664 arr[L++] = (tmp >> 8) & 0xFF
4665 arr[L++] = tmp & 0xFF
4666 }
4667
4668 return arr
4669 }
4670
4671 function tripletToBase64 (num) {
4672 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4673 }
4674
4675 function encodeChunk (uint8, start, end) {
4676 var tmp
4677 var output = []
4678 for (var i = start; i < end; i += 3) {
4679 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4680 output.push(tripletToBase64(tmp))
4681 }
4682 return output.join('')
4683 }
4684
4685 function fromByteArray (uint8) {
4686 var tmp
4687 var len = uint8.length
4688 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4689 var output = ''
4690 var parts = []
4691 var maxChunkLength = 16383 // must be multiple of 3
4692
4693 // go through the array every three bytes, we'll deal with trailing stuff later
4694 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4695 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4696 }
4697
4698 // pad the end with zeros, but make sure to not forget the extra bytes
4699 if (extraBytes === 1) {
4700 tmp = uint8[len - 1]
4701 output += lookup[tmp >> 2]
4702 output += lookup[(tmp << 4) & 0x3F]
4703 output += '=='
4704 } else if (extraBytes === 2) {
4705 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4706 output += lookup[tmp >> 10]
4707 output += lookup[(tmp >> 4) & 0x3F]
4708 output += lookup[(tmp << 2) & 0x3F]
4709 output += '='
4710 }
4711
4712 parts.push(output)
4713
4714 return parts.join('')
4715 }
4716
4717 },{}],2:[function(require,module,exports){
4718 /*!
4719 * The buffer module from node.js, for the browser.
4720 *
4721 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4722 * @license MIT
4723 */
4724 /* eslint-disable no-proto */
4725
4726 'use strict'
4727
4728 var base64 = require('base64-js')
4729 var ieee754 = require('ieee754')
4730
4731 exports.Buffer = Buffer
4732 exports.SlowBuffer = SlowBuffer
4733 exports.INSPECT_MAX_BYTES = 50
4734
4735 var K_MAX_LENGTH = 0x7fffffff
4736 exports.kMaxLength = K_MAX_LENGTH
4737
4738 /**
4739 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4740 * === true Use Uint8Array implementation (fastest)
4741 * === false Print warning and recommend using `buffer` v4.x which has an Object
4742 * implementation (most compatible, even IE6)
4743 *
4744 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4745 * Opera 11.6+, iOS 4.2+.
4746 *
4747 * We report that the browser does not support typed arrays if the are not subclassable
4748 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4749 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4750 * for __proto__ and has a buggy typed array implementation.
4751 */
4752 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4753
4754 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4755 typeof console.error === 'function') {
4756 console.error(
4757 'This browser lacks typed array (Uint8Array) support which is required by ' +
4758 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4759 )
4760 }
4761
4762 function typedArraySupport () {
4763 // Can typed array instances can be augmented?
4764 try {
4765 var arr = new Uint8Array(1)
4766 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4767 return arr.foo() === 42
4768 } catch (e) {
4769 return false
4770 }
4771 }
4772
4773 function createBuffer (length) {
4774 if (length > K_MAX_LENGTH) {
4775 throw new RangeError('Invalid typed array length')
4776 }
4777 // Return an augmented `Uint8Array` instance
4778 var buf = new Uint8Array(length)
4779 buf.__proto__ = Buffer.prototype
4780 return buf
4781 }
4782
4783 /**
4784 * The Buffer constructor returns instances of `Uint8Array` that have their
4785 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4786 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4787 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4788 * returns a single octet.
4789 *
4790 * The `Uint8Array` prototype remains unmodified.
4791 */
4792
4793 function Buffer (arg, encodingOrOffset, length) {
4794 // Common case.
4795 if (typeof arg === 'number') {
4796 if (typeof encodingOrOffset === 'string') {
4797 throw new Error(
4798 'If encoding is specified then the first argument must be a string'
4799 )
4800 }
4801 return allocUnsafe(arg)
4802 }
4803 return from(arg, encodingOrOffset, length)
4804 }
4805
4806 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4807 if (typeof Symbol !== 'undefined' && Symbol.species &&
4808 Buffer[Symbol.species] === Buffer) {
4809 Object.defineProperty(Buffer, Symbol.species, {
4810 value: null,
4811 configurable: true,
4812 enumerable: false,
4813 writable: false
4814 })
4815 }
4816
4817 Buffer.poolSize = 8192 // not used by this implementation
4818
4819 function from (value, encodingOrOffset, length) {
4820 if (typeof value === 'number') {
4821 throw new TypeError('"value" argument must not be a number')
4822 }
4823
4824 if (value instanceof ArrayBuffer) {
4825 return fromArrayBuffer(value, encodingOrOffset, length)
4826 }
4827
4828 if (typeof value === 'string') {
4829 return fromString(value, encodingOrOffset)
4830 }
4831
4832 return fromObject(value)
4833 }
4834
4835 /**
4836 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4837 * if value is a number.
4838 * Buffer.from(str[, encoding])
4839 * Buffer.from(array)
4840 * Buffer.from(buffer)
4841 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4842 **/
4843 Buffer.from = function (value, encodingOrOffset, length) {
4844 return from(value, encodingOrOffset, length)
4845 }
4846
4847 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4848 // https://github.com/feross/buffer/pull/148
4849 Buffer.prototype.__proto__ = Uint8Array.prototype
4850 Buffer.__proto__ = Uint8Array
4851
4852 function assertSize (size) {
4853 if (typeof size !== 'number') {
4854 throw new TypeError('"size" argument must be a number')
4855 } else if (size < 0) {
4856 throw new RangeError('"size" argument must not be negative')
4857 }
4858 }
4859
4860 function alloc (size, fill, encoding) {
4861 assertSize(size)
4862 if (size <= 0) {
4863 return createBuffer(size)
4864 }
4865 if (fill !== undefined) {
4866 // Only pay attention to encoding if it's a string. This
4867 // prevents accidentally sending in a number that would
4868 // be interpretted as a start offset.
4869 return typeof encoding === 'string'
4870 ? createBuffer(size).fill(fill, encoding)
4871 : createBuffer(size).fill(fill)
4872 }
4873 return createBuffer(size)
4874 }
4875
4876 /**
4877 * Creates a new filled Buffer instance.
4878 * alloc(size[, fill[, encoding]])
4879 **/
4880 Buffer.alloc = function (size, fill, encoding) {
4881 return alloc(size, fill, encoding)
4882 }
4883
4884 function allocUnsafe (size) {
4885 assertSize(size)
4886 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4887 }
4888
4889 /**
4890 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4891 * */
4892 Buffer.allocUnsafe = function (size) {
4893 return allocUnsafe(size)
4894 }
4895 /**
4896 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4897 */
4898 Buffer.allocUnsafeSlow = function (size) {
4899 return allocUnsafe(size)
4900 }
4901
4902 function fromString (string, encoding) {
4903 if (typeof encoding !== 'string' || encoding === '') {
4904 encoding = 'utf8'
4905 }
4906
4907 if (!Buffer.isEncoding(encoding)) {
4908 throw new TypeError('"encoding" must be a valid string encoding')
4909 }
4910
4911 var length = byteLength(string, encoding) | 0
4912 var buf = createBuffer(length)
4913
4914 var actual = buf.write(string, encoding)
4915
4916 if (actual !== length) {
4917 // Writing a hex string, for example, that contains invalid characters will
4918 // cause everything after the first invalid character to be ignored. (e.g.
4919 // 'abxxcd' will be treated as 'ab')
4920 buf = buf.slice(0, actual)
4921 }
4922
4923 return buf
4924 }
4925
4926 function fromArrayLike (array) {
4927 var length = array.length < 0 ? 0 : checked(array.length) | 0
4928 var buf = createBuffer(length)
4929 for (var i = 0; i < length; i += 1) {
4930 buf[i] = array[i] & 255
4931 }
4932 return buf
4933 }
4934
4935 function fromArrayBuffer (array, byteOffset, length) {
4936 if (byteOffset < 0 || array.byteLength < byteOffset) {
4937 throw new RangeError('\'offset\' is out of bounds')
4938 }
4939
4940 if (array.byteLength < byteOffset + (length || 0)) {
4941 throw new RangeError('\'length\' is out of bounds')
4942 }
4943
4944 var buf
4945 if (byteOffset === undefined && length === undefined) {
4946 buf = new Uint8Array(array)
4947 } else if (length === undefined) {
4948 buf = new Uint8Array(array, byteOffset)
4949 } else {
4950 buf = new Uint8Array(array, byteOffset, length)
4951 }
4952
4953 // Return an augmented `Uint8Array` instance
4954 buf.__proto__ = Buffer.prototype
4955 return buf
4956 }
4957
4958 function fromObject (obj) {
4959 if (Buffer.isBuffer(obj)) {
4960 var len = checked(obj.length) | 0
4961 var buf = createBuffer(len)
4962
4963 if (buf.length === 0) {
4964 return buf
4965 }
4966
4967 obj.copy(buf, 0, 0, len)
4968 return buf
4969 }
4970
4971 if (obj) {
4972 if (isArrayBufferView(obj) || 'length' in obj) {
4973 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4974 return createBuffer(0)
4975 }
4976 return fromArrayLike(obj)
4977 }
4978
4979 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4980 return fromArrayLike(obj.data)
4981 }
4982 }
4983
4984 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4985 }
4986
4987 function checked (length) {
4988 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4989 // length is NaN (which is otherwise coerced to zero.)
4990 if (length >= K_MAX_LENGTH) {
4991 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4992 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4993 }
4994 return length | 0
4995 }
4996
4997 function SlowBuffer (length) {
4998 if (+length != length) { // eslint-disable-line eqeqeq
4999 length = 0
5000 }
5001 return Buffer.alloc(+length)
5002 }
5003
5004 Buffer.isBuffer = function isBuffer (b) {
5005 return b != null && b._isBuffer === true
5006 }
5007
5008 Buffer.compare = function compare (a, b) {
5009 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
5010 throw new TypeError('Arguments must be Buffers')
5011 }
5012
5013 if (a === b) return 0
5014
5015 var x = a.length
5016 var y = b.length
5017
5018 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
5019 if (a[i] !== b[i]) {
5020 x = a[i]
5021 y = b[i]
5022 break
5023 }
5024 }
5025
5026 if (x < y) return -1
5027 if (y < x) return 1
5028 return 0
5029 }
5030
5031 Buffer.isEncoding = function isEncoding (encoding) {
5032 switch (String(encoding).toLowerCase()) {
5033 case 'hex':
5034 case 'utf8':
5035 case 'utf-8':
5036 case 'ascii':
5037 case 'latin1':
5038 case 'binary':
5039 case 'base64':
5040 case 'ucs2':
5041 case 'ucs-2':
5042 case 'utf16le':
5043 case 'utf-16le':
5044 return true
5045 default:
5046 return false
5047 }
5048 }
5049
5050 Buffer.concat = function concat (list, length) {
5051 if (!Array.isArray(list)) {
5052 throw new TypeError('"list" argument must be an Array of Buffers')
5053 }
5054
5055 if (list.length === 0) {
5056 return Buffer.alloc(0)
5057 }
5058
5059 var i
5060 if (length === undefined) {
5061 length = 0
5062 for (i = 0; i < list.length; ++i) {
5063 length += list[i].length
5064 }
5065 }
5066
5067 var buffer = Buffer.allocUnsafe(length)
5068 var pos = 0
5069 for (i = 0; i < list.length; ++i) {
5070 var buf = list[i]
5071 if (!Buffer.isBuffer(buf)) {
5072 throw new TypeError('"list" argument must be an Array of Buffers')
5073 }
5074 buf.copy(buffer, pos)
5075 pos += buf.length
5076 }
5077 return buffer
5078 }
5079
5080 function byteLength (string, encoding) {
5081 if (Buffer.isBuffer(string)) {
5082 return string.length
5083 }
5084 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5085 return string.byteLength
5086 }
5087 if (typeof string !== 'string') {
5088 string = '' + string
5089 }
5090
5091 var len = string.length
5092 if (len === 0) return 0
5093
5094 // Use a for loop to avoid recursion
5095 var loweredCase = false
5096 for (;;) {
5097 switch (encoding) {
5098 case 'ascii':
5099 case 'latin1':
5100 case 'binary':
5101 return len
5102 case 'utf8':
5103 case 'utf-8':
5104 case undefined:
5105 return utf8ToBytes(string).length
5106 case 'ucs2':
5107 case 'ucs-2':
5108 case 'utf16le':
5109 case 'utf-16le':
5110 return len * 2
5111 case 'hex':
5112 return len >>> 1
5113 case 'base64':
5114 return base64ToBytes(string).length
5115 default:
5116 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5117 encoding = ('' + encoding).toLowerCase()
5118 loweredCase = true
5119 }
5120 }
5121 }
5122 Buffer.byteLength = byteLength
5123
5124 function slowToString (encoding, start, end) {
5125 var loweredCase = false
5126
5127 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5128 // property of a typed array.
5129
5130 // This behaves neither like String nor Uint8Array in that we set start/end
5131 // to their upper/lower bounds if the value passed is out of range.
5132 // undefined is handled specially as per ECMA-262 6th Edition,
5133 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5134 if (start === undefined || start < 0) {
5135 start = 0
5136 }
5137 // Return early if start > this.length. Done here to prevent potential uint32
5138 // coercion fail below.
5139 if (start > this.length) {
5140 return ''
5141 }
5142
5143 if (end === undefined || end > this.length) {
5144 end = this.length
5145 }
5146
5147 if (end <= 0) {
5148 return ''
5149 }
5150
5151 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5152 end >>>= 0
5153 start >>>= 0
5154
5155 if (end <= start) {
5156 return ''
5157 }
5158
5159 if (!encoding) encoding = 'utf8'
5160
5161 while (true) {
5162 switch (encoding) {
5163 case 'hex':
5164 return hexSlice(this, start, end)
5165
5166 case 'utf8':
5167 case 'utf-8':
5168 return utf8Slice(this, start, end)
5169
5170 case 'ascii':
5171 return asciiSlice(this, start, end)
5172
5173 case 'latin1':
5174 case 'binary':
5175 return latin1Slice(this, start, end)
5176
5177 case 'base64':
5178 return base64Slice(this, start, end)
5179
5180 case 'ucs2':
5181 case 'ucs-2':
5182 case 'utf16le':
5183 case 'utf-16le':
5184 return utf16leSlice(this, start, end)
5185
5186 default:
5187 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5188 encoding = (encoding + '').toLowerCase()
5189 loweredCase = true
5190 }
5191 }
5192 }
5193
5194 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5195 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5196 // reliably in a browserify context because there could be multiple different
5197 // copies of the 'buffer' package in use. This method works even for Buffer
5198 // instances that were created from another copy of the `buffer` package.
5199 // See: https://github.com/feross/buffer/issues/154
5200 Buffer.prototype._isBuffer = true
5201
5202 function swap (b, n, m) {
5203 var i = b[n]
5204 b[n] = b[m]
5205 b[m] = i
5206 }
5207
5208 Buffer.prototype.swap16 = function swap16 () {
5209 var len = this.length
5210 if (len % 2 !== 0) {
5211 throw new RangeError('Buffer size must be a multiple of 16-bits')
5212 }
5213 for (var i = 0; i < len; i += 2) {
5214 swap(this, i, i + 1)
5215 }
5216 return this
5217 }
5218
5219 Buffer.prototype.swap32 = function swap32 () {
5220 var len = this.length
5221 if (len % 4 !== 0) {
5222 throw new RangeError('Buffer size must be a multiple of 32-bits')
5223 }
5224 for (var i = 0; i < len; i += 4) {
5225 swap(this, i, i + 3)
5226 swap(this, i + 1, i + 2)
5227 }
5228 return this
5229 }
5230
5231 Buffer.prototype.swap64 = function swap64 () {
5232 var len = this.length
5233 if (len % 8 !== 0) {
5234 throw new RangeError('Buffer size must be a multiple of 64-bits')
5235 }
5236 for (var i = 0; i < len; i += 8) {
5237 swap(this, i, i + 7)
5238 swap(this, i + 1, i + 6)
5239 swap(this, i + 2, i + 5)
5240 swap(this, i + 3, i + 4)
5241 }
5242 return this
5243 }
5244
5245 Buffer.prototype.toString = function toString () {
5246 var length = this.length
5247 if (length === 0) return ''
5248 if (arguments.length === 0) return utf8Slice(this, 0, length)
5249 return slowToString.apply(this, arguments)
5250 }
5251
5252 Buffer.prototype.equals = function equals (b) {
5253 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5254 if (this === b) return true
5255 return Buffer.compare(this, b) === 0
5256 }
5257
5258 Buffer.prototype.inspect = function inspect () {
5259 var str = ''
5260 var max = exports.INSPECT_MAX_BYTES
5261 if (this.length > 0) {
5262 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5263 if (this.length > max) str += ' ... '
5264 }
5265 return '<Buffer ' + str + '>'
5266 }
5267
5268 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5269 if (!Buffer.isBuffer(target)) {
5270 throw new TypeError('Argument must be a Buffer')
5271 }
5272
5273 if (start === undefined) {
5274 start = 0
5275 }
5276 if (end === undefined) {
5277 end = target ? target.length : 0
5278 }
5279 if (thisStart === undefined) {
5280 thisStart = 0
5281 }
5282 if (thisEnd === undefined) {
5283 thisEnd = this.length
5284 }
5285
5286 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5287 throw new RangeError('out of range index')
5288 }
5289
5290 if (thisStart >= thisEnd && start >= end) {
5291 return 0
5292 }
5293 if (thisStart >= thisEnd) {
5294 return -1
5295 }
5296 if (start >= end) {
5297 return 1
5298 }
5299
5300 start >>>= 0
5301 end >>>= 0
5302 thisStart >>>= 0
5303 thisEnd >>>= 0
5304
5305 if (this === target) return 0
5306
5307 var x = thisEnd - thisStart
5308 var y = end - start
5309 var len = Math.min(x, y)
5310
5311 var thisCopy = this.slice(thisStart, thisEnd)
5312 var targetCopy = target.slice(start, end)
5313
5314 for (var i = 0; i < len; ++i) {
5315 if (thisCopy[i] !== targetCopy[i]) {
5316 x = thisCopy[i]
5317 y = targetCopy[i]
5318 break
5319 }
5320 }
5321
5322 if (x < y) return -1
5323 if (y < x) return 1
5324 return 0
5325 }
5326
5327 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5328 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5329 //
5330 // Arguments:
5331 // - buffer - a Buffer to search
5332 // - val - a string, Buffer, or number
5333 // - byteOffset - an index into `buffer`; will be clamped to an int32
5334 // - encoding - an optional encoding, relevant is val is a string
5335 // - dir - true for indexOf, false for lastIndexOf
5336 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5337 // Empty buffer means no match
5338 if (buffer.length === 0) return -1
5339
5340 // Normalize byteOffset
5341 if (typeof byteOffset === 'string') {
5342 encoding = byteOffset
5343 byteOffset = 0
5344 } else if (byteOffset > 0x7fffffff) {
5345 byteOffset = 0x7fffffff
5346 } else if (byteOffset < -0x80000000) {
5347 byteOffset = -0x80000000
5348 }
5349 byteOffset = +byteOffset // Coerce to Number.
5350 if (numberIsNaN(byteOffset)) {
5351 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5352 byteOffset = dir ? 0 : (buffer.length - 1)
5353 }
5354
5355 // Normalize byteOffset: negative offsets start from the end of the buffer
5356 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5357 if (byteOffset >= buffer.length) {
5358 if (dir) return -1
5359 else byteOffset = buffer.length - 1
5360 } else if (byteOffset < 0) {
5361 if (dir) byteOffset = 0
5362 else return -1
5363 }
5364
5365 // Normalize val
5366 if (typeof val === 'string') {
5367 val = Buffer.from(val, encoding)
5368 }
5369
5370 // Finally, search either indexOf (if dir is true) or lastIndexOf
5371 if (Buffer.isBuffer(val)) {
5372 // Special case: looking for empty string/buffer always fails
5373 if (val.length === 0) {
5374 return -1
5375 }
5376 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5377 } else if (typeof val === 'number') {
5378 val = val & 0xFF // Search for a byte value [0-255]
5379 if (typeof Uint8Array.prototype.indexOf === 'function') {
5380 if (dir) {
5381 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5382 } else {
5383 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5384 }
5385 }
5386 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5387 }
5388
5389 throw new TypeError('val must be string, number or Buffer')
5390 }
5391
5392 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5393 var indexSize = 1
5394 var arrLength = arr.length
5395 var valLength = val.length
5396
5397 if (encoding !== undefined) {
5398 encoding = String(encoding).toLowerCase()
5399 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5400 encoding === 'utf16le' || encoding === 'utf-16le') {
5401 if (arr.length < 2 || val.length < 2) {
5402 return -1
5403 }
5404 indexSize = 2
5405 arrLength /= 2
5406 valLength /= 2
5407 byteOffset /= 2
5408 }
5409 }
5410
5411 function read (buf, i) {
5412 if (indexSize === 1) {
5413 return buf[i]
5414 } else {
5415 return buf.readUInt16BE(i * indexSize)
5416 }
5417 }
5418
5419 var i
5420 if (dir) {
5421 var foundIndex = -1
5422 for (i = byteOffset; i < arrLength; i++) {
5423 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5424 if (foundIndex === -1) foundIndex = i
5425 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5426 } else {
5427 if (foundIndex !== -1) i -= i - foundIndex
5428 foundIndex = -1
5429 }
5430 }
5431 } else {
5432 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5433 for (i = byteOffset; i >= 0; i--) {
5434 var found = true
5435 for (var j = 0; j < valLength; j++) {
5436 if (read(arr, i + j) !== read(val, j)) {
5437 found = false
5438 break
5439 }
5440 }
5441 if (found) return i
5442 }
5443 }
5444
5445 return -1
5446 }
5447
5448 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5449 return this.indexOf(val, byteOffset, encoding) !== -1
5450 }
5451
5452 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5453 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5454 }
5455
5456 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5457 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5458 }
5459
5460 function hexWrite (buf, string, offset, length) {
5461 offset = Number(offset) || 0
5462 var remaining = buf.length - offset
5463 if (!length) {
5464 length = remaining
5465 } else {
5466 length = Number(length)
5467 if (length > remaining) {
5468 length = remaining
5469 }
5470 }
5471
5472 // must be an even number of digits
5473 var strLen = string.length
5474 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5475
5476 if (length > strLen / 2) {
5477 length = strLen / 2
5478 }
5479 for (var i = 0; i < length; ++i) {
5480 var parsed = parseInt(string.substr(i * 2, 2), 16)
5481 if (numberIsNaN(parsed)) return i
5482 buf[offset + i] = parsed
5483 }
5484 return i
5485 }
5486
5487 function utf8Write (buf, string, offset, length) {
5488 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5489 }
5490
5491 function asciiWrite (buf, string, offset, length) {
5492 return blitBuffer(asciiToBytes(string), buf, offset, length)
5493 }
5494
5495 function latin1Write (buf, string, offset, length) {
5496 return asciiWrite(buf, string, offset, length)
5497 }
5498
5499 function base64Write (buf, string, offset, length) {
5500 return blitBuffer(base64ToBytes(string), buf, offset, length)
5501 }
5502
5503 function ucs2Write (buf, string, offset, length) {
5504 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5505 }
5506
5507 Buffer.prototype.write = function write (string, offset, length, encoding) {
5508 // Buffer#write(string)
5509 if (offset === undefined) {
5510 encoding = 'utf8'
5511 length = this.length
5512 offset = 0
5513 // Buffer#write(string, encoding)
5514 } else if (length === undefined && typeof offset === 'string') {
5515 encoding = offset
5516 length = this.length
5517 offset = 0
5518 // Buffer#write(string, offset[, length][, encoding])
5519 } else if (isFinite(offset)) {
5520 offset = offset >>> 0
5521 if (isFinite(length)) {
5522 length = length >>> 0
5523 if (encoding === undefined) encoding = 'utf8'
5524 } else {
5525 encoding = length
5526 length = undefined
5527 }
5528 } else {
5529 throw new Error(
5530 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5531 )
5532 }
5533
5534 var remaining = this.length - offset
5535 if (length === undefined || length > remaining) length = remaining
5536
5537 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5538 throw new RangeError('Attempt to write outside buffer bounds')
5539 }
5540
5541 if (!encoding) encoding = 'utf8'
5542
5543 var loweredCase = false
5544 for (;;) {
5545 switch (encoding) {
5546 case 'hex':
5547 return hexWrite(this, string, offset, length)
5548
5549 case 'utf8':
5550 case 'utf-8':
5551 return utf8Write(this, string, offset, length)
5552
5553 case 'ascii':
5554 return asciiWrite(this, string, offset, length)
5555
5556 case 'latin1':
5557 case 'binary':
5558 return latin1Write(this, string, offset, length)
5559
5560 case 'base64':
5561 // Warning: maxLength not taken into account in base64Write
5562 return base64Write(this, string, offset, length)
5563
5564 case 'ucs2':
5565 case 'ucs-2':
5566 case 'utf16le':
5567 case 'utf-16le':
5568 return ucs2Write(this, string, offset, length)
5569
5570 default:
5571 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5572 encoding = ('' + encoding).toLowerCase()
5573 loweredCase = true
5574 }
5575 }
5576 }
5577
5578 Buffer.prototype.toJSON = function toJSON () {
5579 return {
5580 type: 'Buffer',
5581 data: Array.prototype.slice.call(this._arr || this, 0)
5582 }
5583 }
5584
5585 function base64Slice (buf, start, end) {
5586 if (start === 0 && end === buf.length) {
5587 return base64.fromByteArray(buf)
5588 } else {
5589 return base64.fromByteArray(buf.slice(start, end))
5590 }
5591 }
5592
5593 function utf8Slice (buf, start, end) {
5594 end = Math.min(buf.length, end)
5595 var res = []
5596
5597 var i = start
5598 while (i < end) {
5599 var firstByte = buf[i]
5600 var codePoint = null
5601 var bytesPerSequence = (firstByte > 0xEF) ? 4
5602 : (firstByte > 0xDF) ? 3
5603 : (firstByte > 0xBF) ? 2
5604 : 1
5605
5606 if (i + bytesPerSequence <= end) {
5607 var secondByte, thirdByte, fourthByte, tempCodePoint
5608
5609 switch (bytesPerSequence) {
5610 case 1:
5611 if (firstByte < 0x80) {
5612 codePoint = firstByte
5613 }
5614 break
5615 case 2:
5616 secondByte = buf[i + 1]
5617 if ((secondByte & 0xC0) === 0x80) {
5618 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5619 if (tempCodePoint > 0x7F) {
5620 codePoint = tempCodePoint
5621 }
5622 }
5623 break
5624 case 3:
5625 secondByte = buf[i + 1]
5626 thirdByte = buf[i + 2]
5627 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5628 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5629 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5630 codePoint = tempCodePoint
5631 }
5632 }
5633 break
5634 case 4:
5635 secondByte = buf[i + 1]
5636 thirdByte = buf[i + 2]
5637 fourthByte = buf[i + 3]
5638 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5639 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5640 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5641 codePoint = tempCodePoint
5642 }
5643 }
5644 }
5645 }
5646
5647 if (codePoint === null) {
5648 // we did not generate a valid codePoint so insert a
5649 // replacement char (U+FFFD) and advance only 1 byte
5650 codePoint = 0xFFFD
5651 bytesPerSequence = 1
5652 } else if (codePoint > 0xFFFF) {
5653 // encode to utf16 (surrogate pair dance)
5654 codePoint -= 0x10000
5655 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5656 codePoint = 0xDC00 | codePoint & 0x3FF
5657 }
5658
5659 res.push(codePoint)
5660 i += bytesPerSequence
5661 }
5662
5663 return decodeCodePointsArray(res)
5664 }
5665
5666 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5667 // the lowest limit is Chrome, with 0x10000 args.
5668 // We go 1 magnitude less, for safety
5669 var MAX_ARGUMENTS_LENGTH = 0x1000
5670
5671 function decodeCodePointsArray (codePoints) {
5672 var len = codePoints.length
5673 if (len <= MAX_ARGUMENTS_LENGTH) {
5674 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5675 }
5676
5677 // Decode in chunks to avoid "call stack size exceeded".
5678 var res = ''
5679 var i = 0
5680 while (i < len) {
5681 res += String.fromCharCode.apply(
5682 String,
5683 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5684 )
5685 }
5686 return res
5687 }
5688
5689 function asciiSlice (buf, start, end) {
5690 var ret = ''
5691 end = Math.min(buf.length, end)
5692
5693 for (var i = start; i < end; ++i) {
5694 ret += String.fromCharCode(buf[i] & 0x7F)
5695 }
5696 return ret
5697 }
5698
5699 function latin1Slice (buf, start, end) {
5700 var ret = ''
5701 end = Math.min(buf.length, end)
5702
5703 for (var i = start; i < end; ++i) {
5704 ret += String.fromCharCode(buf[i])
5705 }
5706 return ret
5707 }
5708
5709 function hexSlice (buf, start, end) {
5710 var len = buf.length
5711
5712 if (!start || start < 0) start = 0
5713 if (!end || end < 0 || end > len) end = len
5714
5715 var out = ''
5716 for (var i = start; i < end; ++i) {
5717 out += toHex(buf[i])
5718 }
5719 return out
5720 }
5721
5722 function utf16leSlice (buf, start, end) {
5723 var bytes = buf.slice(start, end)
5724 var res = ''
5725 for (var i = 0; i < bytes.length; i += 2) {
5726 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5727 }
5728 return res
5729 }
5730
5731 Buffer.prototype.slice = function slice (start, end) {
5732 var len = this.length
5733 start = ~~start
5734 end = end === undefined ? len : ~~end
5735
5736 if (start < 0) {
5737 start += len
5738 if (start < 0) start = 0
5739 } else if (start > len) {
5740 start = len
5741 }
5742
5743 if (end < 0) {
5744 end += len
5745 if (end < 0) end = 0
5746 } else if (end > len) {
5747 end = len
5748 }
5749
5750 if (end < start) end = start
5751
5752 var newBuf = this.subarray(start, end)
5753 // Return an augmented `Uint8Array` instance
5754 newBuf.__proto__ = Buffer.prototype
5755 return newBuf
5756 }
5757
5758 /*
5759 * Need to make sure that buffer isn't trying to write out of bounds.
5760 */
5761 function checkOffset (offset, ext, length) {
5762 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5763 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5764 }
5765
5766 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5767 offset = offset >>> 0
5768 byteLength = byteLength >>> 0
5769 if (!noAssert) checkOffset(offset, byteLength, this.length)
5770
5771 var val = this[offset]
5772 var mul = 1
5773 var i = 0
5774 while (++i < byteLength && (mul *= 0x100)) {
5775 val += this[offset + i] * mul
5776 }
5777
5778 return val
5779 }
5780
5781 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5782 offset = offset >>> 0
5783 byteLength = byteLength >>> 0
5784 if (!noAssert) {
5785 checkOffset(offset, byteLength, this.length)
5786 }
5787
5788 var val = this[offset + --byteLength]
5789 var mul = 1
5790 while (byteLength > 0 && (mul *= 0x100)) {
5791 val += this[offset + --byteLength] * mul
5792 }
5793
5794 return val
5795 }
5796
5797 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 1, this.length)
5800 return this[offset]
5801 }
5802
5803 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 2, this.length)
5806 return this[offset] | (this[offset + 1] << 8)
5807 }
5808
5809 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5810 offset = offset >>> 0
5811 if (!noAssert) checkOffset(offset, 2, this.length)
5812 return (this[offset] << 8) | this[offset + 1]
5813 }
5814
5815 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5816 offset = offset >>> 0
5817 if (!noAssert) checkOffset(offset, 4, this.length)
5818
5819 return ((this[offset]) |
5820 (this[offset + 1] << 8) |
5821 (this[offset + 2] << 16)) +
5822 (this[offset + 3] * 0x1000000)
5823 }
5824
5825 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5826 offset = offset >>> 0
5827 if (!noAssert) checkOffset(offset, 4, this.length)
5828
5829 return (this[offset] * 0x1000000) +
5830 ((this[offset + 1] << 16) |
5831 (this[offset + 2] << 8) |
5832 this[offset + 3])
5833 }
5834
5835 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5836 offset = offset >>> 0
5837 byteLength = byteLength >>> 0
5838 if (!noAssert) checkOffset(offset, byteLength, this.length)
5839
5840 var val = this[offset]
5841 var mul = 1
5842 var i = 0
5843 while (++i < byteLength && (mul *= 0x100)) {
5844 val += this[offset + i] * mul
5845 }
5846 mul *= 0x80
5847
5848 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5849
5850 return val
5851 }
5852
5853 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5854 offset = offset >>> 0
5855 byteLength = byteLength >>> 0
5856 if (!noAssert) checkOffset(offset, byteLength, this.length)
5857
5858 var i = byteLength
5859 var mul = 1
5860 var val = this[offset + --i]
5861 while (i > 0 && (mul *= 0x100)) {
5862 val += this[offset + --i] * mul
5863 }
5864 mul *= 0x80
5865
5866 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5867
5868 return val
5869 }
5870
5871 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5872 offset = offset >>> 0
5873 if (!noAssert) checkOffset(offset, 1, this.length)
5874 if (!(this[offset] & 0x80)) return (this[offset])
5875 return ((0xff - this[offset] + 1) * -1)
5876 }
5877
5878 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5879 offset = offset >>> 0
5880 if (!noAssert) checkOffset(offset, 2, this.length)
5881 var val = this[offset] | (this[offset + 1] << 8)
5882 return (val & 0x8000) ? val | 0xFFFF0000 : val
5883 }
5884
5885 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5886 offset = offset >>> 0
5887 if (!noAssert) checkOffset(offset, 2, this.length)
5888 var val = this[offset + 1] | (this[offset] << 8)
5889 return (val & 0x8000) ? val | 0xFFFF0000 : val
5890 }
5891
5892 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5893 offset = offset >>> 0
5894 if (!noAssert) checkOffset(offset, 4, this.length)
5895
5896 return (this[offset]) |
5897 (this[offset + 1] << 8) |
5898 (this[offset + 2] << 16) |
5899 (this[offset + 3] << 24)
5900 }
5901
5902 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5903 offset = offset >>> 0
5904 if (!noAssert) checkOffset(offset, 4, this.length)
5905
5906 return (this[offset] << 24) |
5907 (this[offset + 1] << 16) |
5908 (this[offset + 2] << 8) |
5909 (this[offset + 3])
5910 }
5911
5912 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5913 offset = offset >>> 0
5914 if (!noAssert) checkOffset(offset, 4, this.length)
5915 return ieee754.read(this, offset, true, 23, 4)
5916 }
5917
5918 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5919 offset = offset >>> 0
5920 if (!noAssert) checkOffset(offset, 4, this.length)
5921 return ieee754.read(this, offset, false, 23, 4)
5922 }
5923
5924 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5925 offset = offset >>> 0
5926 if (!noAssert) checkOffset(offset, 8, this.length)
5927 return ieee754.read(this, offset, true, 52, 8)
5928 }
5929
5930 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5931 offset = offset >>> 0
5932 if (!noAssert) checkOffset(offset, 8, this.length)
5933 return ieee754.read(this, offset, false, 52, 8)
5934 }
5935
5936 function checkInt (buf, value, offset, ext, max, min) {
5937 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5938 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5939 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5940 }
5941
5942 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5943 value = +value
5944 offset = offset >>> 0
5945 byteLength = byteLength >>> 0
5946 if (!noAssert) {
5947 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5948 checkInt(this, value, offset, byteLength, maxBytes, 0)
5949 }
5950
5951 var mul = 1
5952 var i = 0
5953 this[offset] = value & 0xFF
5954 while (++i < byteLength && (mul *= 0x100)) {
5955 this[offset + i] = (value / mul) & 0xFF
5956 }
5957
5958 return offset + byteLength
5959 }
5960
5961 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5962 value = +value
5963 offset = offset >>> 0
5964 byteLength = byteLength >>> 0
5965 if (!noAssert) {
5966 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5967 checkInt(this, value, offset, byteLength, maxBytes, 0)
5968 }
5969
5970 var i = byteLength - 1
5971 var mul = 1
5972 this[offset + i] = value & 0xFF
5973 while (--i >= 0 && (mul *= 0x100)) {
5974 this[offset + i] = (value / mul) & 0xFF
5975 }
5976
5977 return offset + byteLength
5978 }
5979
5980 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5981 value = +value
5982 offset = offset >>> 0
5983 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5984 this[offset] = (value & 0xff)
5985 return offset + 1
5986 }
5987
5988 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5989 value = +value
5990 offset = offset >>> 0
5991 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5992 this[offset] = (value & 0xff)
5993 this[offset + 1] = (value >>> 8)
5994 return offset + 2
5995 }
5996
5997 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5998 value = +value
5999 offset = offset >>> 0
6000 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
6001 this[offset] = (value >>> 8)
6002 this[offset + 1] = (value & 0xff)
6003 return offset + 2
6004 }
6005
6006 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
6007 value = +value
6008 offset = offset >>> 0
6009 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6010 this[offset + 3] = (value >>> 24)
6011 this[offset + 2] = (value >>> 16)
6012 this[offset + 1] = (value >>> 8)
6013 this[offset] = (value & 0xff)
6014 return offset + 4
6015 }
6016
6017 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
6018 value = +value
6019 offset = offset >>> 0
6020 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6021 this[offset] = (value >>> 24)
6022 this[offset + 1] = (value >>> 16)
6023 this[offset + 2] = (value >>> 8)
6024 this[offset + 3] = (value & 0xff)
6025 return offset + 4
6026 }
6027
6028 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6029 value = +value
6030 offset = offset >>> 0
6031 if (!noAssert) {
6032 var limit = Math.pow(2, (8 * byteLength) - 1)
6033
6034 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6035 }
6036
6037 var i = 0
6038 var mul = 1
6039 var sub = 0
6040 this[offset] = value & 0xFF
6041 while (++i < byteLength && (mul *= 0x100)) {
6042 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6043 sub = 1
6044 }
6045 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6046 }
6047
6048 return offset + byteLength
6049 }
6050
6051 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6052 value = +value
6053 offset = offset >>> 0
6054 if (!noAssert) {
6055 var limit = Math.pow(2, (8 * byteLength) - 1)
6056
6057 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6058 }
6059
6060 var i = byteLength - 1
6061 var mul = 1
6062 var sub = 0
6063 this[offset + i] = value & 0xFF
6064 while (--i >= 0 && (mul *= 0x100)) {
6065 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6066 sub = 1
6067 }
6068 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6069 }
6070
6071 return offset + byteLength
6072 }
6073
6074 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6075 value = +value
6076 offset = offset >>> 0
6077 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6078 if (value < 0) value = 0xff + value + 1
6079 this[offset] = (value & 0xff)
6080 return offset + 1
6081 }
6082
6083 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6084 value = +value
6085 offset = offset >>> 0
6086 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6087 this[offset] = (value & 0xff)
6088 this[offset + 1] = (value >>> 8)
6089 return offset + 2
6090 }
6091
6092 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6093 value = +value
6094 offset = offset >>> 0
6095 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6096 this[offset] = (value >>> 8)
6097 this[offset + 1] = (value & 0xff)
6098 return offset + 2
6099 }
6100
6101 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6102 value = +value
6103 offset = offset >>> 0
6104 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6105 this[offset] = (value & 0xff)
6106 this[offset + 1] = (value >>> 8)
6107 this[offset + 2] = (value >>> 16)
6108 this[offset + 3] = (value >>> 24)
6109 return offset + 4
6110 }
6111
6112 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6113 value = +value
6114 offset = offset >>> 0
6115 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6116 if (value < 0) value = 0xffffffff + value + 1
6117 this[offset] = (value >>> 24)
6118 this[offset + 1] = (value >>> 16)
6119 this[offset + 2] = (value >>> 8)
6120 this[offset + 3] = (value & 0xff)
6121 return offset + 4
6122 }
6123
6124 function checkIEEE754 (buf, value, offset, ext, max, min) {
6125 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6126 if (offset < 0) throw new RangeError('Index out of range')
6127 }
6128
6129 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6130 value = +value
6131 offset = offset >>> 0
6132 if (!noAssert) {
6133 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6134 }
6135 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6136 return offset + 4
6137 }
6138
6139 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6140 return writeFloat(this, value, offset, true, noAssert)
6141 }
6142
6143 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6144 return writeFloat(this, value, offset, false, noAssert)
6145 }
6146
6147 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6148 value = +value
6149 offset = offset >>> 0
6150 if (!noAssert) {
6151 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6152 }
6153 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6154 return offset + 8
6155 }
6156
6157 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6158 return writeDouble(this, value, offset, true, noAssert)
6159 }
6160
6161 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6162 return writeDouble(this, value, offset, false, noAssert)
6163 }
6164
6165 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6166 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6167 if (!start) start = 0
6168 if (!end && end !== 0) end = this.length
6169 if (targetStart >= target.length) targetStart = target.length
6170 if (!targetStart) targetStart = 0
6171 if (end > 0 && end < start) end = start
6172
6173 // Copy 0 bytes; we're done
6174 if (end === start) return 0
6175 if (target.length === 0 || this.length === 0) return 0
6176
6177 // Fatal error conditions
6178 if (targetStart < 0) {
6179 throw new RangeError('targetStart out of bounds')
6180 }
6181 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6182 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6183
6184 // Are we oob?
6185 if (end > this.length) end = this.length
6186 if (target.length - targetStart < end - start) {
6187 end = target.length - targetStart + start
6188 }
6189
6190 var len = end - start
6191 var i
6192
6193 if (this === target && start < targetStart && targetStart < end) {
6194 // descending copy from end
6195 for (i = len - 1; i >= 0; --i) {
6196 target[i + targetStart] = this[i + start]
6197 }
6198 } else if (len < 1000) {
6199 // ascending copy from start
6200 for (i = 0; i < len; ++i) {
6201 target[i + targetStart] = this[i + start]
6202 }
6203 } else {
6204 Uint8Array.prototype.set.call(
6205 target,
6206 this.subarray(start, start + len),
6207 targetStart
6208 )
6209 }
6210
6211 return len
6212 }
6213
6214 // Usage:
6215 // buffer.fill(number[, offset[, end]])
6216 // buffer.fill(buffer[, offset[, end]])
6217 // buffer.fill(string[, offset[, end]][, encoding])
6218 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6219 // Handle string cases:
6220 if (typeof val === 'string') {
6221 if (typeof start === 'string') {
6222 encoding = start
6223 start = 0
6224 end = this.length
6225 } else if (typeof end === 'string') {
6226 encoding = end
6227 end = this.length
6228 }
6229 if (val.length === 1) {
6230 var code = val.charCodeAt(0)
6231 if (code < 256) {
6232 val = code
6233 }
6234 }
6235 if (encoding !== undefined && typeof encoding !== 'string') {
6236 throw new TypeError('encoding must be a string')
6237 }
6238 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6239 throw new TypeError('Unknown encoding: ' + encoding)
6240 }
6241 } else if (typeof val === 'number') {
6242 val = val & 255
6243 }
6244
6245 // Invalid ranges are not set to a default, so can range check early.
6246 if (start < 0 || this.length < start || this.length < end) {
6247 throw new RangeError('Out of range index')
6248 }
6249
6250 if (end <= start) {
6251 return this
6252 }
6253
6254 start = start >>> 0
6255 end = end === undefined ? this.length : end >>> 0
6256
6257 if (!val) val = 0
6258
6259 var i
6260 if (typeof val === 'number') {
6261 for (i = start; i < end; ++i) {
6262 this[i] = val
6263 }
6264 } else {
6265 var bytes = Buffer.isBuffer(val)
6266 ? val
6267 : new Buffer(val, encoding)
6268 var len = bytes.length
6269 for (i = 0; i < end - start; ++i) {
6270 this[i + start] = bytes[i % len]
6271 }
6272 }
6273
6274 return this
6275 }
6276
6277 // HELPER FUNCTIONS
6278 // ================
6279
6280 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6281
6282 function base64clean (str) {
6283 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6284 str = str.trim().replace(INVALID_BASE64_RE, '')
6285 // Node converts strings with length < 2 to ''
6286 if (str.length < 2) return ''
6287 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6288 while (str.length % 4 !== 0) {
6289 str = str + '='
6290 }
6291 return str
6292 }
6293
6294 function toHex (n) {
6295 if (n < 16) return '0' + n.toString(16)
6296 return n.toString(16)
6297 }
6298
6299 function utf8ToBytes (string, units) {
6300 units = units || Infinity
6301 var codePoint
6302 var length = string.length
6303 var leadSurrogate = null
6304 var bytes = []
6305
6306 for (var i = 0; i < length; ++i) {
6307 codePoint = string.charCodeAt(i)
6308
6309 // is surrogate component
6310 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6311 // last char was a lead
6312 if (!leadSurrogate) {
6313 // no lead yet
6314 if (codePoint > 0xDBFF) {
6315 // unexpected trail
6316 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6317 continue
6318 } else if (i + 1 === length) {
6319 // unpaired lead
6320 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6321 continue
6322 }
6323
6324 // valid lead
6325 leadSurrogate = codePoint
6326
6327 continue
6328 }
6329
6330 // 2 leads in a row
6331 if (codePoint < 0xDC00) {
6332 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6333 leadSurrogate = codePoint
6334 continue
6335 }
6336
6337 // valid surrogate pair
6338 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6339 } else if (leadSurrogate) {
6340 // valid bmp char, but last char was a lead
6341 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6342 }
6343
6344 leadSurrogate = null
6345
6346 // encode utf8
6347 if (codePoint < 0x80) {
6348 if ((units -= 1) < 0) break
6349 bytes.push(codePoint)
6350 } else if (codePoint < 0x800) {
6351 if ((units -= 2) < 0) break
6352 bytes.push(
6353 codePoint >> 0x6 | 0xC0,
6354 codePoint & 0x3F | 0x80
6355 )
6356 } else if (codePoint < 0x10000) {
6357 if ((units -= 3) < 0) break
6358 bytes.push(
6359 codePoint >> 0xC | 0xE0,
6360 codePoint >> 0x6 & 0x3F | 0x80,
6361 codePoint & 0x3F | 0x80
6362 )
6363 } else if (codePoint < 0x110000) {
6364 if ((units -= 4) < 0) break
6365 bytes.push(
6366 codePoint >> 0x12 | 0xF0,
6367 codePoint >> 0xC & 0x3F | 0x80,
6368 codePoint >> 0x6 & 0x3F | 0x80,
6369 codePoint & 0x3F | 0x80
6370 )
6371 } else {
6372 throw new Error('Invalid code point')
6373 }
6374 }
6375
6376 return bytes
6377 }
6378
6379 function asciiToBytes (str) {
6380 var byteArray = []
6381 for (var i = 0; i < str.length; ++i) {
6382 // Node's code seems to be doing this and not & 0x7F..
6383 byteArray.push(str.charCodeAt(i) & 0xFF)
6384 }
6385 return byteArray
6386 }
6387
6388 function utf16leToBytes (str, units) {
6389 var c, hi, lo
6390 var byteArray = []
6391 for (var i = 0; i < str.length; ++i) {
6392 if ((units -= 2) < 0) break
6393
6394 c = str.charCodeAt(i)
6395 hi = c >> 8
6396 lo = c % 256
6397 byteArray.push(lo)
6398 byteArray.push(hi)
6399 }
6400
6401 return byteArray
6402 }
6403
6404 function base64ToBytes (str) {
6405 return base64.toByteArray(base64clean(str))
6406 }
6407
6408 function blitBuffer (src, dst, offset, length) {
6409 for (var i = 0; i < length; ++i) {
6410 if ((i + offset >= dst.length) || (i >= src.length)) break
6411 dst[i + offset] = src[i]
6412 }
6413 return i
6414 }
6415
6416 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6417 function isArrayBufferView (obj) {
6418 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6419 }
6420
6421 function numberIsNaN (obj) {
6422 return obj !== obj // eslint-disable-line no-self-compare
6423 }
6424
6425 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6426 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6427 var e, m
6428 var eLen = nBytes * 8 - mLen - 1
6429 var eMax = (1 << eLen) - 1
6430 var eBias = eMax >> 1
6431 var nBits = -7
6432 var i = isLE ? (nBytes - 1) : 0
6433 var d = isLE ? -1 : 1
6434 var s = buffer[offset + i]
6435
6436 i += d
6437
6438 e = s & ((1 << (-nBits)) - 1)
6439 s >>= (-nBits)
6440 nBits += eLen
6441 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6442
6443 m = e & ((1 << (-nBits)) - 1)
6444 e >>= (-nBits)
6445 nBits += mLen
6446 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6447
6448 if (e === 0) {
6449 e = 1 - eBias
6450 } else if (e === eMax) {
6451 return m ? NaN : ((s ? -1 : 1) * Infinity)
6452 } else {
6453 m = m + Math.pow(2, mLen)
6454 e = e - eBias
6455 }
6456 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6457 }
6458
6459 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6460 var e, m, c
6461 var eLen = nBytes * 8 - mLen - 1
6462 var eMax = (1 << eLen) - 1
6463 var eBias = eMax >> 1
6464 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6465 var i = isLE ? 0 : (nBytes - 1)
6466 var d = isLE ? 1 : -1
6467 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6468
6469 value = Math.abs(value)
6470
6471 if (isNaN(value) || value === Infinity) {
6472 m = isNaN(value) ? 1 : 0
6473 e = eMax
6474 } else {
6475 e = Math.floor(Math.log(value) / Math.LN2)
6476 if (value * (c = Math.pow(2, -e)) < 1) {
6477 e--
6478 c *= 2
6479 }
6480 if (e + eBias >= 1) {
6481 value += rt / c
6482 } else {
6483 value += rt * Math.pow(2, 1 - eBias)
6484 }
6485 if (value * c >= 2) {
6486 e++
6487 c /= 2
6488 }
6489
6490 if (e + eBias >= eMax) {
6491 m = 0
6492 e = eMax
6493 } else if (e + eBias >= 1) {
6494 m = (value * c - 1) * Math.pow(2, mLen)
6495 e = e + eBias
6496 } else {
6497 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6498 e = 0
6499 }
6500 }
6501
6502 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6503
6504 e = (e << mLen) | m
6505 eLen += mLen
6506 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6507
6508 buffer[offset + i - d] |= s * 128
6509 }
6510
6511 },{}],4:[function(require,module,exports){
6512 window.basex = require('base-x')
6513 },{"base-x":5}],5:[function(require,module,exports){
6514 // base-x encoding
6515 // Forked from https://github.com/cryptocoinjs/bs58
6516 // Originally written by Mike Hearn for BitcoinJ
6517 // Copyright (c) 2011 Google Inc
6518 // Ported to JavaScript by Stefan Thomas
6519 // Merged Buffer refactorings from base58-native by Stephen Pair
6520 // Copyright (c) 2013 BitPay Inc
6521
6522 var Buffer = require('safe-buffer').Buffer
6523
6524 module.exports = function base (ALPHABET) {
6525 var ALPHABET_MAP = {}
6526 var BASE = ALPHABET.length
6527 var LEADER = ALPHABET.charAt(0)
6528
6529 // pre-compute lookup table
6530 for (var z = 0; z < ALPHABET.length; z++) {
6531 var x = ALPHABET.charAt(z)
6532
6533 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6534 ALPHABET_MAP[x] = z
6535 }
6536
6537 function encode (source) {
6538 if (source.length === 0) return ''
6539
6540 var digits = [0]
6541 for (var i = 0; i < source.length; ++i) {
6542 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6543 carry += digits[j] << 8
6544 digits[j] = carry % BASE
6545 carry = (carry / BASE) | 0
6546 }
6547
6548 while (carry > 0) {
6549 digits.push(carry % BASE)
6550 carry = (carry / BASE) | 0
6551 }
6552 }
6553
6554 var string = ''
6555
6556 // deal with leading zeros
6557 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6558 // convert digits to a string
6559 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6560
6561 return string
6562 }
6563
6564 function decodeUnsafe (string) {
6565 if (string.length === 0) return Buffer.allocUnsafe(0)
6566
6567 var bytes = [0]
6568 for (var i = 0; i < string.length; i++) {
6569 var value = ALPHABET_MAP[string[i]]
6570 if (value === undefined) return
6571
6572 for (var j = 0, carry = value; j < bytes.length; ++j) {
6573 carry += bytes[j] * BASE
6574 bytes[j] = carry & 0xff
6575 carry >>= 8
6576 }
6577
6578 while (carry > 0) {
6579 bytes.push(carry & 0xff)
6580 carry >>= 8
6581 }
6582 }
6583
6584 // deal with leading zeros
6585 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6586 bytes.push(0)
6587 }
6588
6589 return Buffer.from(bytes.reverse())
6590 }
6591
6592 function decode (string) {
6593 var buffer = decodeUnsafe(string)
6594 if (buffer) return buffer
6595
6596 throw new Error('Non-base' + BASE + ' character')
6597 }
6598
6599 return {
6600 encode: encode,
6601 decodeUnsafe: decodeUnsafe,
6602 decode: decode
6603 }
6604 }
6605
6606 },{"safe-buffer":6}],6:[function(require,module,exports){
6607 module.exports = require('buffer')
6608
6609 },{"buffer":2}]},{},[4])(4)
6610 });</script>
6611 <script>(function (root) {
6612 "use strict";
6613
6614 /***** unorm.js *****/
6615
6616 /*
6617 * UnicodeNormalizer 1.0.0
6618 * Copyright (c) 2008 Matsuza
6619 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6620 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6621 * $Rev: 13309 $
6622 */
6623
6624 var DEFAULT_FEATURE = [null, 0, {}];
6625 var CACHE_THRESHOLD = 10;
6626 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6627 var NCount = VCount * TCount; // 588
6628 var SCount = LCount * NCount; // 11172
6629
6630 var UChar = function(cp, feature){
6631 this.codepoint = cp;
6632 this.feature = feature;
6633 };
6634
6635 // Strategies
6636 var cache = {};
6637 var cacheCounter = [];
6638 for (var i = 0; i <= 0xFF; ++i){
6639 cacheCounter[i] = 0;
6640 }
6641
6642 function fromCache(next, cp, needFeature){
6643 var ret = cache[cp];
6644 if(!ret){
6645 ret = next(cp, needFeature);
6646 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6647 cache[cp] = ret;
6648 }
6649 }
6650 return ret;
6651 }
6652
6653 function fromData(next, cp, needFeature){
6654 var hash = cp & 0xFF00;
6655 var dunit = UChar.udata[hash] || {};
6656 var f = dunit[cp];
6657 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6658 }
6659 function fromCpOnly(next, cp, needFeature){
6660 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6661 }
6662 function fromRuleBasedJamo(next, cp, needFeature){
6663 var j;
6664 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6665 return next(cp, needFeature);
6666 }
6667 if(LBase <= cp && cp < LBase + LCount){
6668 var c = {};
6669 var base = (cp - LBase) * VCount;
6670 for (j = 0; j < VCount; ++j){
6671 c[VBase + j] = SBase + TCount * (j + base);
6672 }
6673 return new UChar(cp, [,,c]);
6674 }
6675
6676 var SIndex = cp - SBase;
6677 var TIndex = SIndex % TCount;
6678 var feature = [];
6679 if(TIndex !== 0){
6680 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6681 } else {
6682 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6683 feature[2] = {};
6684 for (j = 1; j < TCount; ++j){
6685 feature[2][TBase + j] = cp + j;
6686 }
6687 }
6688 return new UChar(cp, feature);
6689 }
6690 function fromCpFilter(next, cp, needFeature){
6691 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6692 }
6693
6694 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6695
6696 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6697 return function (cp, needFeature) {
6698 return strategy(next, cp, needFeature);
6699 };
6700 }, null);
6701
6702 UChar.isHighSurrogate = function(cp){
6703 return cp >= 0xD800 && cp <= 0xDBFF;
6704 };
6705 UChar.isLowSurrogate = function(cp){
6706 return cp >= 0xDC00 && cp <= 0xDFFF;
6707 };
6708
6709 UChar.prototype.prepFeature = function(){
6710 if(!this.feature){
6711 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6712 }
6713 };
6714
6715 UChar.prototype.toString = function(){
6716 if(this.codepoint < 0x10000){
6717 return String.fromCharCode(this.codepoint);
6718 } else {
6719 var x = this.codepoint - 0x10000;
6720 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6721 }
6722 };
6723
6724 UChar.prototype.getDecomp = function(){
6725 this.prepFeature();
6726 return this.feature[0] || null;
6727 };
6728
6729 UChar.prototype.isCompatibility = function(){
6730 this.prepFeature();
6731 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6732 };
6733 UChar.prototype.isExclude = function(){
6734 this.prepFeature();
6735 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6736 };
6737 UChar.prototype.getCanonicalClass = function(){
6738 this.prepFeature();
6739 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6740 };
6741 UChar.prototype.getComposite = function(following){
6742 this.prepFeature();
6743 if(!this.feature[2]){
6744 return null;
6745 }
6746 var cp = this.feature[2][following.codepoint];
6747 return cp ? UChar.fromCharCode(cp) : null;
6748 };
6749
6750 var UCharIterator = function(str){
6751 this.str = str;
6752 this.cursor = 0;
6753 };
6754 UCharIterator.prototype.next = function(){
6755 if(!!this.str && this.cursor < this.str.length){
6756 var cp = this.str.charCodeAt(this.cursor++);
6757 var d;
6758 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6759 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6760 ++this.cursor;
6761 }
6762 return UChar.fromCharCode(cp);
6763 } else {
6764 this.str = null;
6765 return null;
6766 }
6767 };
6768
6769 var RecursDecompIterator = function(it, cano){
6770 this.it = it;
6771 this.canonical = cano;
6772 this.resBuf = [];
6773 };
6774
6775 RecursDecompIterator.prototype.next = function(){
6776 function recursiveDecomp(cano, uchar){
6777 var decomp = uchar.getDecomp();
6778 if(!!decomp && !(cano && uchar.isCompatibility())){
6779 var ret = [];
6780 for(var i = 0; i < decomp.length; ++i){
6781 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6782 ret = ret.concat(a);
6783 }
6784 return ret;
6785 } else {
6786 return [uchar];
6787 }
6788 }
6789 if(this.resBuf.length === 0){
6790 var uchar = this.it.next();
6791 if(!uchar){
6792 return null;
6793 }
6794 this.resBuf = recursiveDecomp(this.canonical, uchar);
6795 }
6796 return this.resBuf.shift();
6797 };
6798
6799 var DecompIterator = function(it){
6800 this.it = it;
6801 this.resBuf = [];
6802 };
6803
6804 DecompIterator.prototype.next = function(){
6805 var cc;
6806 if(this.resBuf.length === 0){
6807 do{
6808 var uchar = this.it.next();
6809 if(!uchar){
6810 break;
6811 }
6812 cc = uchar.getCanonicalClass();
6813 var inspt = this.resBuf.length;
6814 if(cc !== 0){
6815 for(; inspt > 0; --inspt){
6816 var uchar2 = this.resBuf[inspt - 1];
6817 var cc2 = uchar2.getCanonicalClass();
6818 if(cc2 <= cc){
6819 break;
6820 }
6821 }
6822 }
6823 this.resBuf.splice(inspt, 0, uchar);
6824 } while(cc !== 0);
6825 }
6826 return this.resBuf.shift();
6827 };
6828
6829 var CompIterator = function(it){
6830 this.it = it;
6831 this.procBuf = [];
6832 this.resBuf = [];
6833 this.lastClass = null;
6834 };
6835
6836 CompIterator.prototype.next = function(){
6837 while(this.resBuf.length === 0){
6838 var uchar = this.it.next();
6839 if(!uchar){
6840 this.resBuf = this.procBuf;
6841 this.procBuf = [];
6842 break;
6843 }
6844 if(this.procBuf.length === 0){
6845 this.lastClass = uchar.getCanonicalClass();
6846 this.procBuf.push(uchar);
6847 } else {
6848 var starter = this.procBuf[0];
6849 var composite = starter.getComposite(uchar);
6850 var cc = uchar.getCanonicalClass();
6851 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6852 this.procBuf[0] = composite;
6853 } else {
6854 if(cc === 0){
6855 this.resBuf = this.procBuf;
6856 this.procBuf = [];
6857 }
6858 this.lastClass = cc;
6859 this.procBuf.push(uchar);
6860 }
6861 }
6862 }
6863 return this.resBuf.shift();
6864 };
6865
6866 var createIterator = function(mode, str){
6867 switch(mode){
6868 case "NFD":
6869 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6870 case "NFKD":
6871 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6872 case "NFC":
6873 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6874 case "NFKC":
6875 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6876 }
6877 throw mode + " is invalid";
6878 };
6879 var normalize = function(mode, str){
6880 var it = createIterator(mode, str);
6881 var ret = "";
6882 var uchar;
6883 while(!!(uchar = it.next())){
6884 ret += uchar.toString();
6885 }
6886 return ret;
6887 };
6888
6889 /* API functions */
6890 function nfd(str){
6891 return normalize("NFD", str);
6892 }
6893
6894 function nfkd(str){
6895 return normalize("NFKD", str);
6896 }
6897
6898 function nfc(str){
6899 return normalize("NFC", str);
6900 }
6901
6902 function nfkc(str){
6903 return normalize("NFKC", str);
6904 }
6905
6906 /* Unicode data */
6907 UChar.udata={
6908 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]]},
6909 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]},
6910 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]},
6911 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]},
6912 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]]},
6913 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]},
6914 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]},
6915 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]},
6916 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]},
6917 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]},
6918 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]},
6919 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]},
6920 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]},
6921 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]]},
6922 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]},
6923 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]},
6924 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]},
6925 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]},
6926 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6927 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]},
6928 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6929 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6930 5632:{71231:[,9],71350:[,9],71351:[,7]},
6931 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6932 6144:{6313:[,228]},
6933 6400:{6457:[,222],6458:[,230],6459:[,220]},
6934 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]},
6935 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]},
6936 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]},
6937 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]},
6938 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]]},
6939 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}]},
6940 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]},
6941 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}]},
6942 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]]},
6943 8960:{9001:[[12296]],9002:[[12297]]},
6944 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]},
6945 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]},
6946 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6947 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]},
6948 11776:{11935:[[27597],256],12019:[[40863],256]},
6949 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]},
6950 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]},
6951 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]},
6952 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]},
6953 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]},
6954 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6955 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6956 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]},
6957 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6958 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]},
6959 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6960 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6961 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6962 48128:{113822:[,1]},
6963 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]},
6964 53760:{119362:[,230],119363:[,230],119364:[,230]},
6965 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]},
6966 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]},
6967 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]},
6968 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]},
6969 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6970 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]},
6971 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]},
6972 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]},
6973 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]]},
6974 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]]},
6975 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]]},
6976 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]},
6977 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]},
6978 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]},
6979 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]},
6980 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]}
6981
6982 };
6983
6984 /***** Module to export */
6985 var unorm = {
6986 nfc: nfc,
6987 nfd: nfd,
6988 nfkc: nfkc,
6989 nfkd: nfkd
6990 };
6991
6992 /*globals module:true,define:true*/
6993
6994 // CommonJS
6995 if (typeof module === "object") {
6996 module.exports = unorm;
6997
6998 // AMD
6999 } else if (typeof define === "function" && define.amd) {
7000 define("unorm", function () {
7001 return unorm;
7002 });
7003
7004 // Global
7005 } else {
7006 root.unorm = unorm;
7007 }
7008
7009 /***** Export as shim for String::normalize method *****/
7010 /*
7011 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
7012
7013 21.1.3.12 String.prototype.normalize(form="NFC")
7014 When the normalize method is called with one argument form, the following steps are taken:
7015
7016 1. Let O be CheckObjectCoercible(this value).
7017 2. Let S be ToString(O).
7018 3. ReturnIfAbrupt(S).
7019 4. If form is not provided or undefined let form be "NFC".
7020 5. Let f be ToString(form).
7021 6. ReturnIfAbrupt(f).
7022 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
7023 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.
7024 9. Return ns.
7025
7026 The length property of the normalize method is 0.
7027
7028 *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.
7029 */
7030 unorm.shimApplied = false;
7031
7032 if (!String.prototype.normalize) {
7033 String.prototype.normalize = function(form) {
7034 var str = "" + this;
7035 form = form === undefined ? "NFC" : form;
7036
7037 if (form === "NFC") {
7038 return unorm.nfc(str);
7039 } else if (form === "NFD") {
7040 return unorm.nfd(str);
7041 } else if (form === "NFKC") {
7042 return unorm.nfkc(str);
7043 } else if (form === "NFKD") {
7044 return unorm.nfkd(str);
7045 } else {
7046 throw new RangeError("Invalid normalization form: " + form);
7047 }
7048 };
7049
7050 unorm.shimApplied = true;
7051 }
7052 }(this));
7053 </script>
7054 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7055 !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)
7056 },_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))
7057 },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});
7058 </script>
7059 <script>/*!
7060 * Bootstrap v3.2.0 (http://getbootstrap.com)
7061 * Copyright 2011-2014 Twitter, Inc.
7062 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7063 */
7064 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>
7065 <script>(function() {
7066 'use strict';
7067
7068 /**
7069 * Extend an Object with another Object's properties.
7070 *
7071 * The source objects are specified as additional arguments.
7072 *
7073 * @param dst Object the object to extend.
7074 *
7075 * @return Object the final object.
7076 */
7077 var _extend = function(dst) {
7078 var sources = Array.prototype.slice.call(arguments, 1);
7079 for (var i=0; i<sources.length; ++i) {
7080 var src = sources[i];
7081 for (var p in src) {
7082 if (src.hasOwnProperty(p)) dst[p] = src[p];
7083 }
7084 }
7085 return dst;
7086 };
7087
7088
7089 /**
7090 * Defer execution of given function.
7091 * @param {Function} func
7092 */
7093 var _defer = function(func) {
7094 if (typeof setImmediate === 'function') {
7095 return setImmediate(func);
7096 } else {
7097 return setTimeout(func, 0);
7098 }
7099 };
7100
7101 /**
7102 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7103 */
7104 var Levenshtein = {
7105 /**
7106 * Calculate levenshtein distance of the two strings.
7107 *
7108 * @param str1 String the first string.
7109 * @param str2 String the second string.
7110 * @return Integer the levenshtein distance (0 and above).
7111 */
7112 get: function(str1, str2) {
7113 // base cases
7114 if (str1 === str2) return 0;
7115 if (str1.length === 0) return str2.length;
7116 if (str2.length === 0) return str1.length;
7117
7118 // two rows
7119 var prevRow = new Array(str2.length + 1),
7120 curCol, nextCol, i, j, tmp;
7121
7122 // initialise previous row
7123 for (i=0; i<prevRow.length; ++i) {
7124 prevRow[i] = i;
7125 }
7126
7127 // calculate current row distance from previous row
7128 for (i=0; i<str1.length; ++i) {
7129 nextCol = i + 1;
7130
7131 for (j=0; j<str2.length; ++j) {
7132 curCol = nextCol;
7133
7134 // substution
7135 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7136 // insertion
7137 tmp = curCol + 1;
7138 if (nextCol > tmp) {
7139 nextCol = tmp;
7140 }
7141 // deletion
7142 tmp = prevRow[j + 1] + 1;
7143 if (nextCol > tmp) {
7144 nextCol = tmp;
7145 }
7146
7147 // copy current col value into previous (in preparation for next iteration)
7148 prevRow[j] = curCol;
7149 }
7150
7151 // copy last col value into previous (in preparation for next iteration)
7152 prevRow[j] = nextCol;
7153 }
7154
7155 return nextCol;
7156 },
7157
7158 /**
7159 * Asynchronously calculate levenshtein distance of the two strings.
7160 *
7161 * @param str1 String the first string.
7162 * @param str2 String the second string.
7163 * @param cb Function callback function with signature: function(Error err, int distance)
7164 * @param [options] Object additional options.
7165 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7166 */
7167 getAsync: function(str1, str2, cb, options) {
7168 options = _extend({}, {
7169 progress: null
7170 }, options);
7171
7172 // base cases
7173 if (str1 === str2) return cb(null, 0);
7174 if (str1.length === 0) return cb(null, str2.length);
7175 if (str2.length === 0) return cb(null, str1.length);
7176
7177 // two rows
7178 var prevRow = new Array(str2.length + 1),
7179 curCol, nextCol,
7180 i, j, tmp,
7181 startTime, currentTime;
7182
7183 // initialise previous row
7184 for (i=0; i<prevRow.length; ++i) {
7185 prevRow[i] = i;
7186 }
7187
7188 nextCol = 1;
7189 i = 0;
7190 j = -1;
7191
7192 var __calculate = function() {
7193 // reset timer
7194 startTime = new Date().valueOf();
7195 currentTime = startTime;
7196
7197 // keep going until one second has elapsed
7198 while (currentTime - startTime < 1000) {
7199 // reached end of current row?
7200 if (str2.length <= (++j)) {
7201 // copy current into previous (in preparation for next iteration)
7202 prevRow[j] = nextCol;
7203
7204 // if already done all chars
7205 if (str1.length <= (++i)) {
7206 return cb(null, nextCol);
7207 }
7208 // else if we have more left to do
7209 else {
7210 nextCol = i + 1;
7211 j = 0;
7212 }
7213 }
7214
7215 // calculation
7216 curCol = nextCol;
7217
7218 // substution
7219 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7220 // insertion
7221 tmp = curCol + 1;
7222 if (nextCol > tmp) {
7223 nextCol = tmp;
7224 }
7225 // deletion
7226 tmp = prevRow[j + 1] + 1;
7227 if (nextCol > tmp) {
7228 nextCol = tmp;
7229 }
7230
7231 // copy current into previous (in preparation for next iteration)
7232 prevRow[j] = curCol;
7233
7234 // get current time
7235 currentTime = new Date().valueOf();
7236 }
7237
7238 // send a progress update?
7239 if (null !== options.progress) {
7240 try {
7241 options.progress.call(null, (i * 100.0/ str1.length));
7242 } catch (err) {
7243 return cb('Progress callback: ' + err.toString());
7244 }
7245 }
7246
7247 // next iteration
7248 _defer(__calculate);
7249 };
7250
7251 __calculate();
7252 }
7253
7254 };
7255
7256 // amd
7257 if (typeof define !== "undefined" && define !== null && define.amd) {
7258 define(function() {
7259 return Levenshtein;
7260 });
7261 }
7262 // commonjs
7263 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7264 module.exports = Levenshtein;
7265 }
7266 // web worker
7267 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7268 self.Levenshtein = Levenshtein;
7269 }
7270 // browser main thread
7271 else if (typeof window !== "undefined" && window !== null) {
7272 window.Levenshtein = Levenshtein;
7273 }
7274 }());
7275
7276 </script>
7277 <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},
7278 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;
7279 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-
7280 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]=
7281 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},
7282 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=
7283 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-
7284 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,
7285 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=
7286 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&&
7287 (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,
7288 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)-
7289 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:"+
7290 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:"+
7291 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+
7292 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),
7293 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>
7294 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],
7295 [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,
7296 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,
7297 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,
7298 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,
7299 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,
7300 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*
7301 (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,
7302 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),
7303 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",
7304 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7305 </script>
7306 <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){
7307 (function (global){
7308 'use strict';
7309
7310 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7311 // original notice:
7312
7313 /*!
7314 * The buffer module from node.js, for the browser.
7315 *
7316 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7317 * @license MIT
7318 */
7319 function compare(a, b) {
7320 if (a === b) {
7321 return 0;
7322 }
7323
7324 var x = a.length;
7325 var y = b.length;
7326
7327 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7328 if (a[i] !== b[i]) {
7329 x = a[i];
7330 y = b[i];
7331 break;
7332 }
7333 }
7334
7335 if (x < y) {
7336 return -1;
7337 }
7338 if (y < x) {
7339 return 1;
7340 }
7341 return 0;
7342 }
7343 function isBuffer(b) {
7344 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7345 return global.Buffer.isBuffer(b);
7346 }
7347 return !!(b != null && b._isBuffer);
7348 }
7349
7350 // based on node assert, original notice:
7351
7352 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7353 //
7354 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7355 //
7356 // Originally from narwhal.js (http://narwhaljs.org)
7357 // Copyright (c) 2009 Thomas Robinson <280north.com>
7358 //
7359 // Permission is hereby granted, free of charge, to any person obtaining a copy
7360 // of this software and associated documentation files (the 'Software'), to
7361 // deal in the Software without restriction, including without limitation the
7362 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7363 // sell copies of the Software, and to permit persons to whom the Software is
7364 // furnished to do so, subject to the following conditions:
7365 //
7366 // The above copyright notice and this permission notice shall be included in
7367 // all copies or substantial portions of the Software.
7368 //
7369 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7370 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7371 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7372 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7373 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7374 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7375
7376 var util = require('util/');
7377 var hasOwn = Object.prototype.hasOwnProperty;
7378 var pSlice = Array.prototype.slice;
7379 var functionsHaveNames = (function () {
7380 return function foo() {}.name === 'foo';
7381 }());
7382 function pToString (obj) {
7383 return Object.prototype.toString.call(obj);
7384 }
7385 function isView(arrbuf) {
7386 if (isBuffer(arrbuf)) {
7387 return false;
7388 }
7389 if (typeof global.ArrayBuffer !== 'function') {
7390 return false;
7391 }
7392 if (typeof ArrayBuffer.isView === 'function') {
7393 return ArrayBuffer.isView(arrbuf);
7394 }
7395 if (!arrbuf) {
7396 return false;
7397 }
7398 if (arrbuf instanceof DataView) {
7399 return true;
7400 }
7401 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7402 return true;
7403 }
7404 return false;
7405 }
7406 // 1. The assert module provides functions that throw
7407 // AssertionError's when particular conditions are not met. The
7408 // assert module must conform to the following interface.
7409
7410 var assert = module.exports = ok;
7411
7412 // 2. The AssertionError is defined in assert.
7413 // new assert.AssertionError({ message: message,
7414 // actual: actual,
7415 // expected: expected })
7416
7417 var regex = /\s*function\s+([^\(\s]*)\s*/;
7418 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7419 function getName(func) {
7420 if (!util.isFunction(func)) {
7421 return;
7422 }
7423 if (functionsHaveNames) {
7424 return func.name;
7425 }
7426 var str = func.toString();
7427 var match = str.match(regex);
7428 return match && match[1];
7429 }
7430 assert.AssertionError = function AssertionError(options) {
7431 this.name = 'AssertionError';
7432 this.actual = options.actual;
7433 this.expected = options.expected;
7434 this.operator = options.operator;
7435 if (options.message) {
7436 this.message = options.message;
7437 this.generatedMessage = false;
7438 } else {
7439 this.message = getMessage(this);
7440 this.generatedMessage = true;
7441 }
7442 var stackStartFunction = options.stackStartFunction || fail;
7443 if (Error.captureStackTrace) {
7444 Error.captureStackTrace(this, stackStartFunction);
7445 } else {
7446 // non v8 browsers so we can have a stacktrace
7447 var err = new Error();
7448 if (err.stack) {
7449 var out = err.stack;
7450
7451 // try to strip useless frames
7452 var fn_name = getName(stackStartFunction);
7453 var idx = out.indexOf('\n' + fn_name);
7454 if (idx >= 0) {
7455 // once we have located the function frame
7456 // we need to strip out everything before it (and its line)
7457 var next_line = out.indexOf('\n', idx + 1);
7458 out = out.substring(next_line + 1);
7459 }
7460
7461 this.stack = out;
7462 }
7463 }
7464 };
7465
7466 // assert.AssertionError instanceof Error
7467 util.inherits(assert.AssertionError, Error);
7468
7469 function truncate(s, n) {
7470 if (typeof s === 'string') {
7471 return s.length < n ? s : s.slice(0, n);
7472 } else {
7473 return s;
7474 }
7475 }
7476 function inspect(something) {
7477 if (functionsHaveNames || !util.isFunction(something)) {
7478 return util.inspect(something);
7479 }
7480 var rawname = getName(something);
7481 var name = rawname ? ': ' + rawname : '';
7482 return '[Function' + name + ']';
7483 }
7484 function getMessage(self) {
7485 return truncate(inspect(self.actual), 128) + ' ' +
7486 self.operator + ' ' +
7487 truncate(inspect(self.expected), 128);
7488 }
7489
7490 // At present only the three keys mentioned above are used and
7491 // understood by the spec. Implementations or sub modules can pass
7492 // other keys to the AssertionError's constructor - they will be
7493 // ignored.
7494
7495 // 3. All of the following functions must throw an AssertionError
7496 // when a corresponding condition is not met, with a message that
7497 // may be undefined if not provided. All assertion methods provide
7498 // both the actual and expected values to the assertion error for
7499 // display purposes.
7500
7501 function fail(actual, expected, message, operator, stackStartFunction) {
7502 throw new assert.AssertionError({
7503 message: message,
7504 actual: actual,
7505 expected: expected,
7506 operator: operator,
7507 stackStartFunction: stackStartFunction
7508 });
7509 }
7510
7511 // EXTENSION! allows for well behaved errors defined elsewhere.
7512 assert.fail = fail;
7513
7514 // 4. Pure assertion tests whether a value is truthy, as determined
7515 // by !!guard.
7516 // assert.ok(guard, message_opt);
7517 // This statement is equivalent to assert.equal(true, !!guard,
7518 // message_opt);. To test strictly for the value true, use
7519 // assert.strictEqual(true, guard, message_opt);.
7520
7521 function ok(value, message) {
7522 if (!value) fail(value, true, message, '==', assert.ok);
7523 }
7524 assert.ok = ok;
7525
7526 // 5. The equality assertion tests shallow, coercive equality with
7527 // ==.
7528 // assert.equal(actual, expected, message_opt);
7529
7530 assert.equal = function equal(actual, expected, message) {
7531 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7532 };
7533
7534 // 6. The non-equality assertion tests for whether two objects are not equal
7535 // with != assert.notEqual(actual, expected, message_opt);
7536
7537 assert.notEqual = function notEqual(actual, expected, message) {
7538 if (actual == expected) {
7539 fail(actual, expected, message, '!=', assert.notEqual);
7540 }
7541 };
7542
7543 // 7. The equivalence assertion tests a deep equality relation.
7544 // assert.deepEqual(actual, expected, message_opt);
7545
7546 assert.deepEqual = function deepEqual(actual, expected, message) {
7547 if (!_deepEqual(actual, expected, false)) {
7548 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7549 }
7550 };
7551
7552 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7553 if (!_deepEqual(actual, expected, true)) {
7554 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7555 }
7556 };
7557
7558 function _deepEqual(actual, expected, strict, memos) {
7559 // 7.1. All identical values are equivalent, as determined by ===.
7560 if (actual === expected) {
7561 return true;
7562 } else if (isBuffer(actual) && isBuffer(expected)) {
7563 return compare(actual, expected) === 0;
7564
7565 // 7.2. If the expected value is a Date object, the actual value is
7566 // equivalent if it is also a Date object that refers to the same time.
7567 } else if (util.isDate(actual) && util.isDate(expected)) {
7568 return actual.getTime() === expected.getTime();
7569
7570 // 7.3 If the expected value is a RegExp object, the actual value is
7571 // equivalent if it is also a RegExp object with the same source and
7572 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7573 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7574 return actual.source === expected.source &&
7575 actual.global === expected.global &&
7576 actual.multiline === expected.multiline &&
7577 actual.lastIndex === expected.lastIndex &&
7578 actual.ignoreCase === expected.ignoreCase;
7579
7580 // 7.4. Other pairs that do not both pass typeof value == 'object',
7581 // equivalence is determined by ==.
7582 } else if ((actual === null || typeof actual !== 'object') &&
7583 (expected === null || typeof expected !== 'object')) {
7584 return strict ? actual === expected : actual == expected;
7585
7586 // If both values are instances of typed arrays, wrap their underlying
7587 // ArrayBuffers in a Buffer each to increase performance
7588 // This optimization requires the arrays to have the same type as checked by
7589 // Object.prototype.toString (aka pToString). Never perform binary
7590 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7591 // bit patterns are not identical.
7592 } else if (isView(actual) && isView(expected) &&
7593 pToString(actual) === pToString(expected) &&
7594 !(actual instanceof Float32Array ||
7595 actual instanceof Float64Array)) {
7596 return compare(new Uint8Array(actual.buffer),
7597 new Uint8Array(expected.buffer)) === 0;
7598
7599 // 7.5 For all other Object pairs, including Array objects, equivalence is
7600 // determined by having the same number of owned properties (as verified
7601 // with Object.prototype.hasOwnProperty.call), the same set of keys
7602 // (although not necessarily the same order), equivalent values for every
7603 // corresponding key, and an identical 'prototype' property. Note: this
7604 // accounts for both named and indexed properties on Arrays.
7605 } else if (isBuffer(actual) !== isBuffer(expected)) {
7606 return false;
7607 } else {
7608 memos = memos || {actual: [], expected: []};
7609
7610 var actualIndex = memos.actual.indexOf(actual);
7611 if (actualIndex !== -1) {
7612 if (actualIndex === memos.expected.indexOf(expected)) {
7613 return true;
7614 }
7615 }
7616
7617 memos.actual.push(actual);
7618 memos.expected.push(expected);
7619
7620 return objEquiv(actual, expected, strict, memos);
7621 }
7622 }
7623
7624 function isArguments(object) {
7625 return Object.prototype.toString.call(object) == '[object Arguments]';
7626 }
7627
7628 function objEquiv(a, b, strict, actualVisitedObjects) {
7629 if (a === null || a === undefined || b === null || b === undefined)
7630 return false;
7631 // if one is a primitive, the other must be same
7632 if (util.isPrimitive(a) || util.isPrimitive(b))
7633 return a === b;
7634 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7635 return false;
7636 var aIsArgs = isArguments(a);
7637 var bIsArgs = isArguments(b);
7638 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7639 return false;
7640 if (aIsArgs) {
7641 a = pSlice.call(a);
7642 b = pSlice.call(b);
7643 return _deepEqual(a, b, strict);
7644 }
7645 var ka = objectKeys(a);
7646 var kb = objectKeys(b);
7647 var key, i;
7648 // having the same number of owned properties (keys incorporates
7649 // hasOwnProperty)
7650 if (ka.length !== kb.length)
7651 return false;
7652 //the same set of keys (although not necessarily the same order),
7653 ka.sort();
7654 kb.sort();
7655 //~~~cheap key test
7656 for (i = ka.length - 1; i >= 0; i--) {
7657 if (ka[i] !== kb[i])
7658 return false;
7659 }
7660 //equivalent values for every corresponding key, and
7661 //~~~possibly expensive deep test
7662 for (i = ka.length - 1; i >= 0; i--) {
7663 key = ka[i];
7664 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7665 return false;
7666 }
7667 return true;
7668 }
7669
7670 // 8. The non-equivalence assertion tests for any deep inequality.
7671 // assert.notDeepEqual(actual, expected, message_opt);
7672
7673 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7674 if (_deepEqual(actual, expected, false)) {
7675 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7676 }
7677 };
7678
7679 assert.notDeepStrictEqual = notDeepStrictEqual;
7680 function notDeepStrictEqual(actual, expected, message) {
7681 if (_deepEqual(actual, expected, true)) {
7682 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7683 }
7684 }
7685
7686
7687 // 9. The strict equality assertion tests strict equality, as determined by ===.
7688 // assert.strictEqual(actual, expected, message_opt);
7689
7690 assert.strictEqual = function strictEqual(actual, expected, message) {
7691 if (actual !== expected) {
7692 fail(actual, expected, message, '===', assert.strictEqual);
7693 }
7694 };
7695
7696 // 10. The strict non-equality assertion tests for strict inequality, as
7697 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7698
7699 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7700 if (actual === expected) {
7701 fail(actual, expected, message, '!==', assert.notStrictEqual);
7702 }
7703 };
7704
7705 function expectedException(actual, expected) {
7706 if (!actual || !expected) {
7707 return false;
7708 }
7709
7710 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7711 return expected.test(actual);
7712 }
7713
7714 try {
7715 if (actual instanceof expected) {
7716 return true;
7717 }
7718 } catch (e) {
7719 // Ignore. The instanceof check doesn't work for arrow functions.
7720 }
7721
7722 if (Error.isPrototypeOf(expected)) {
7723 return false;
7724 }
7725
7726 return expected.call({}, actual) === true;
7727 }
7728
7729 function _tryBlock(block) {
7730 var error;
7731 try {
7732 block();
7733 } catch (e) {
7734 error = e;
7735 }
7736 return error;
7737 }
7738
7739 function _throws(shouldThrow, block, expected, message) {
7740 var actual;
7741
7742 if (typeof block !== 'function') {
7743 throw new TypeError('"block" argument must be a function');
7744 }
7745
7746 if (typeof expected === 'string') {
7747 message = expected;
7748 expected = null;
7749 }
7750
7751 actual = _tryBlock(block);
7752
7753 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7754 (message ? ' ' + message : '.');
7755
7756 if (shouldThrow && !actual) {
7757 fail(actual, expected, 'Missing expected exception' + message);
7758 }
7759
7760 var userProvidedMessage = typeof message === 'string';
7761 var isUnwantedException = !shouldThrow && util.isError(actual);
7762 var isUnexpectedException = !shouldThrow && actual && !expected;
7763
7764 if ((isUnwantedException &&
7765 userProvidedMessage &&
7766 expectedException(actual, expected)) ||
7767 isUnexpectedException) {
7768 fail(actual, expected, 'Got unwanted exception' + message);
7769 }
7770
7771 if ((shouldThrow && actual && expected &&
7772 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7773 throw actual;
7774 }
7775 }
7776
7777 // 11. Expected to throw an error:
7778 // assert.throws(block, Error_opt, message_opt);
7779
7780 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7781 _throws(true, block, error, message);
7782 };
7783
7784 // EXTENSION! This is annoying to write outside this module.
7785 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7786 _throws(false, block, error, message);
7787 };
7788
7789 assert.ifError = function(err) { if (err) throw err; };
7790
7791 var objectKeys = Object.keys || function (obj) {
7792 var keys = [];
7793 for (var key in obj) {
7794 if (hasOwn.call(obj, key)) keys.push(key);
7795 }
7796 return keys;
7797 };
7798
7799 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7800 },{"util/":32}],2:[function(require,module,exports){
7801 'use strict'
7802
7803 exports.byteLength = byteLength
7804 exports.toByteArray = toByteArray
7805 exports.fromByteArray = fromByteArray
7806
7807 var lookup = []
7808 var revLookup = []
7809 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7810
7811 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7812 for (var i = 0, len = code.length; i < len; ++i) {
7813 lookup[i] = code[i]
7814 revLookup[code.charCodeAt(i)] = i
7815 }
7816
7817 revLookup['-'.charCodeAt(0)] = 62
7818 revLookup['_'.charCodeAt(0)] = 63
7819
7820 function placeHoldersCount (b64) {
7821 var len = b64.length
7822 if (len % 4 > 0) {
7823 throw new Error('Invalid string. Length must be a multiple of 4')
7824 }
7825
7826 // the number of equal signs (place holders)
7827 // if there are two placeholders, than the two characters before it
7828 // represent one byte
7829 // if there is only one, then the three characters before it represent 2 bytes
7830 // this is just a cheap hack to not do indexOf twice
7831 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7832 }
7833
7834 function byteLength (b64) {
7835 // base64 is 4/3 + up to two characters of the original data
7836 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7837 }
7838
7839 function toByteArray (b64) {
7840 var i, l, tmp, placeHolders, arr
7841 var len = b64.length
7842 placeHolders = placeHoldersCount(b64)
7843
7844 arr = new Arr((len * 3 / 4) - placeHolders)
7845
7846 // if there are placeholders, only get up to the last complete 4 chars
7847 l = placeHolders > 0 ? len - 4 : len
7848
7849 var L = 0
7850
7851 for (i = 0; i < l; i += 4) {
7852 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7853 arr[L++] = (tmp >> 16) & 0xFF
7854 arr[L++] = (tmp >> 8) & 0xFF
7855 arr[L++] = tmp & 0xFF
7856 }
7857
7858 if (placeHolders === 2) {
7859 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7860 arr[L++] = tmp & 0xFF
7861 } else if (placeHolders === 1) {
7862 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7863 arr[L++] = (tmp >> 8) & 0xFF
7864 arr[L++] = tmp & 0xFF
7865 }
7866
7867 return arr
7868 }
7869
7870 function tripletToBase64 (num) {
7871 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7872 }
7873
7874 function encodeChunk (uint8, start, end) {
7875 var tmp
7876 var output = []
7877 for (var i = start; i < end; i += 3) {
7878 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7879 output.push(tripletToBase64(tmp))
7880 }
7881 return output.join('')
7882 }
7883
7884 function fromByteArray (uint8) {
7885 var tmp
7886 var len = uint8.length
7887 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7888 var output = ''
7889 var parts = []
7890 var maxChunkLength = 16383 // must be multiple of 3
7891
7892 // go through the array every three bytes, we'll deal with trailing stuff later
7893 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7894 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7895 }
7896
7897 // pad the end with zeros, but make sure to not forget the extra bytes
7898 if (extraBytes === 1) {
7899 tmp = uint8[len - 1]
7900 output += lookup[tmp >> 2]
7901 output += lookup[(tmp << 4) & 0x3F]
7902 output += '=='
7903 } else if (extraBytes === 2) {
7904 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7905 output += lookup[tmp >> 10]
7906 output += lookup[(tmp >> 4) & 0x3F]
7907 output += lookup[(tmp << 2) & 0x3F]
7908 output += '='
7909 }
7910
7911 parts.push(output)
7912
7913 return parts.join('')
7914 }
7915
7916 },{}],3:[function(require,module,exports){
7917
7918 },{}],4:[function(require,module,exports){
7919 /*!
7920 * The buffer module from node.js, for the browser.
7921 *
7922 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7923 * @license MIT
7924 */
7925 /* eslint-disable no-proto */
7926
7927 'use strict'
7928
7929 var base64 = require('base64-js')
7930 var ieee754 = require('ieee754')
7931
7932 exports.Buffer = Buffer
7933 exports.SlowBuffer = SlowBuffer
7934 exports.INSPECT_MAX_BYTES = 50
7935
7936 var K_MAX_LENGTH = 0x7fffffff
7937 exports.kMaxLength = K_MAX_LENGTH
7938
7939 /**
7940 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7941 * === true Use Uint8Array implementation (fastest)
7942 * === false Print warning and recommend using `buffer` v4.x which has an Object
7943 * implementation (most compatible, even IE6)
7944 *
7945 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7946 * Opera 11.6+, iOS 4.2+.
7947 *
7948 * We report that the browser does not support typed arrays if the are not subclassable
7949 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7950 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7951 * for __proto__ and has a buggy typed array implementation.
7952 */
7953 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7954
7955 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7956 typeof console.error === 'function') {
7957 console.error(
7958 'This browser lacks typed array (Uint8Array) support which is required by ' +
7959 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7960 )
7961 }
7962
7963 function typedArraySupport () {
7964 // Can typed array instances can be augmented?
7965 try {
7966 var arr = new Uint8Array(1)
7967 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7968 return arr.foo() === 42
7969 } catch (e) {
7970 return false
7971 }
7972 }
7973
7974 function createBuffer (length) {
7975 if (length > K_MAX_LENGTH) {
7976 throw new RangeError('Invalid typed array length')
7977 }
7978 // Return an augmented `Uint8Array` instance
7979 var buf = new Uint8Array(length)
7980 buf.__proto__ = Buffer.prototype
7981 return buf
7982 }
7983
7984 /**
7985 * The Buffer constructor returns instances of `Uint8Array` that have their
7986 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
7987 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
7988 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
7989 * returns a single octet.
7990 *
7991 * The `Uint8Array` prototype remains unmodified.
7992 */
7993
7994 function Buffer (arg, encodingOrOffset, length) {
7995 // Common case.
7996 if (typeof arg === 'number') {
7997 if (typeof encodingOrOffset === 'string') {
7998 throw new Error(
7999 'If encoding is specified then the first argument must be a string'
8000 )
8001 }
8002 return allocUnsafe(arg)
8003 }
8004 return from(arg, encodingOrOffset, length)
8005 }
8006
8007 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
8008 if (typeof Symbol !== 'undefined' && Symbol.species &&
8009 Buffer[Symbol.species] === Buffer) {
8010 Object.defineProperty(Buffer, Symbol.species, {
8011 value: null,
8012 configurable: true,
8013 enumerable: false,
8014 writable: false
8015 })
8016 }
8017
8018 Buffer.poolSize = 8192 // not used by this implementation
8019
8020 function from (value, encodingOrOffset, length) {
8021 if (typeof value === 'number') {
8022 throw new TypeError('"value" argument must not be a number')
8023 }
8024
8025 if (value instanceof ArrayBuffer) {
8026 return fromArrayBuffer(value, encodingOrOffset, length)
8027 }
8028
8029 if (typeof value === 'string') {
8030 return fromString(value, encodingOrOffset)
8031 }
8032
8033 return fromObject(value)
8034 }
8035
8036 /**
8037 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8038 * if value is a number.
8039 * Buffer.from(str[, encoding])
8040 * Buffer.from(array)
8041 * Buffer.from(buffer)
8042 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8043 **/
8044 Buffer.from = function (value, encodingOrOffset, length) {
8045 return from(value, encodingOrOffset, length)
8046 }
8047
8048 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8049 // https://github.com/feross/buffer/pull/148
8050 Buffer.prototype.__proto__ = Uint8Array.prototype
8051 Buffer.__proto__ = Uint8Array
8052
8053 function assertSize (size) {
8054 if (typeof size !== 'number') {
8055 throw new TypeError('"size" argument must be a number')
8056 } else if (size < 0) {
8057 throw new RangeError('"size" argument must not be negative')
8058 }
8059 }
8060
8061 function alloc (size, fill, encoding) {
8062 assertSize(size)
8063 if (size <= 0) {
8064 return createBuffer(size)
8065 }
8066 if (fill !== undefined) {
8067 // Only pay attention to encoding if it's a string. This
8068 // prevents accidentally sending in a number that would
8069 // be interpretted as a start offset.
8070 return typeof encoding === 'string'
8071 ? createBuffer(size).fill(fill, encoding)
8072 : createBuffer(size).fill(fill)
8073 }
8074 return createBuffer(size)
8075 }
8076
8077 /**
8078 * Creates a new filled Buffer instance.
8079 * alloc(size[, fill[, encoding]])
8080 **/
8081 Buffer.alloc = function (size, fill, encoding) {
8082 return alloc(size, fill, encoding)
8083 }
8084
8085 function allocUnsafe (size) {
8086 assertSize(size)
8087 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8088 }
8089
8090 /**
8091 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8092 * */
8093 Buffer.allocUnsafe = function (size) {
8094 return allocUnsafe(size)
8095 }
8096 /**
8097 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8098 */
8099 Buffer.allocUnsafeSlow = function (size) {
8100 return allocUnsafe(size)
8101 }
8102
8103 function fromString (string, encoding) {
8104 if (typeof encoding !== 'string' || encoding === '') {
8105 encoding = 'utf8'
8106 }
8107
8108 if (!Buffer.isEncoding(encoding)) {
8109 throw new TypeError('"encoding" must be a valid string encoding')
8110 }
8111
8112 var length = byteLength(string, encoding) | 0
8113 var buf = createBuffer(length)
8114
8115 var actual = buf.write(string, encoding)
8116
8117 if (actual !== length) {
8118 // Writing a hex string, for example, that contains invalid characters will
8119 // cause everything after the first invalid character to be ignored. (e.g.
8120 // 'abxxcd' will be treated as 'ab')
8121 buf = buf.slice(0, actual)
8122 }
8123
8124 return buf
8125 }
8126
8127 function fromArrayLike (array) {
8128 var length = array.length < 0 ? 0 : checked(array.length) | 0
8129 var buf = createBuffer(length)
8130 for (var i = 0; i < length; i += 1) {
8131 buf[i] = array[i] & 255
8132 }
8133 return buf
8134 }
8135
8136 function fromArrayBuffer (array, byteOffset, length) {
8137 if (byteOffset < 0 || array.byteLength < byteOffset) {
8138 throw new RangeError('\'offset\' is out of bounds')
8139 }
8140
8141 if (array.byteLength < byteOffset + (length || 0)) {
8142 throw new RangeError('\'length\' is out of bounds')
8143 }
8144
8145 var buf
8146 if (byteOffset === undefined && length === undefined) {
8147 buf = new Uint8Array(array)
8148 } else if (length === undefined) {
8149 buf = new Uint8Array(array, byteOffset)
8150 } else {
8151 buf = new Uint8Array(array, byteOffset, length)
8152 }
8153
8154 // Return an augmented `Uint8Array` instance
8155 buf.__proto__ = Buffer.prototype
8156 return buf
8157 }
8158
8159 function fromObject (obj) {
8160 if (Buffer.isBuffer(obj)) {
8161 var len = checked(obj.length) | 0
8162 var buf = createBuffer(len)
8163
8164 if (buf.length === 0) {
8165 return buf
8166 }
8167
8168 obj.copy(buf, 0, 0, len)
8169 return buf
8170 }
8171
8172 if (obj) {
8173 if (isArrayBufferView(obj) || 'length' in obj) {
8174 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8175 return createBuffer(0)
8176 }
8177 return fromArrayLike(obj)
8178 }
8179
8180 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8181 return fromArrayLike(obj.data)
8182 }
8183 }
8184
8185 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8186 }
8187
8188 function checked (length) {
8189 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8190 // length is NaN (which is otherwise coerced to zero.)
8191 if (length >= K_MAX_LENGTH) {
8192 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8193 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8194 }
8195 return length | 0
8196 }
8197
8198 function SlowBuffer (length) {
8199 if (+length != length) { // eslint-disable-line eqeqeq
8200 length = 0
8201 }
8202 return Buffer.alloc(+length)
8203 }
8204
8205 Buffer.isBuffer = function isBuffer (b) {
8206 return b != null && b._isBuffer === true
8207 }
8208
8209 Buffer.compare = function compare (a, b) {
8210 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8211 throw new TypeError('Arguments must be Buffers')
8212 }
8213
8214 if (a === b) return 0
8215
8216 var x = a.length
8217 var y = b.length
8218
8219 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8220 if (a[i] !== b[i]) {
8221 x = a[i]
8222 y = b[i]
8223 break
8224 }
8225 }
8226
8227 if (x < y) return -1
8228 if (y < x) return 1
8229 return 0
8230 }
8231
8232 Buffer.isEncoding = function isEncoding (encoding) {
8233 switch (String(encoding).toLowerCase()) {
8234 case 'hex':
8235 case 'utf8':
8236 case 'utf-8':
8237 case 'ascii':
8238 case 'latin1':
8239 case 'binary':
8240 case 'base64':
8241 case 'ucs2':
8242 case 'ucs-2':
8243 case 'utf16le':
8244 case 'utf-16le':
8245 return true
8246 default:
8247 return false
8248 }
8249 }
8250
8251 Buffer.concat = function concat (list, length) {
8252 if (!Array.isArray(list)) {
8253 throw new TypeError('"list" argument must be an Array of Buffers')
8254 }
8255
8256 if (list.length === 0) {
8257 return Buffer.alloc(0)
8258 }
8259
8260 var i
8261 if (length === undefined) {
8262 length = 0
8263 for (i = 0; i < list.length; ++i) {
8264 length += list[i].length
8265 }
8266 }
8267
8268 var buffer = Buffer.allocUnsafe(length)
8269 var pos = 0
8270 for (i = 0; i < list.length; ++i) {
8271 var buf = list[i]
8272 if (!Buffer.isBuffer(buf)) {
8273 throw new TypeError('"list" argument must be an Array of Buffers')
8274 }
8275 buf.copy(buffer, pos)
8276 pos += buf.length
8277 }
8278 return buffer
8279 }
8280
8281 function byteLength (string, encoding) {
8282 if (Buffer.isBuffer(string)) {
8283 return string.length
8284 }
8285 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8286 return string.byteLength
8287 }
8288 if (typeof string !== 'string') {
8289 string = '' + string
8290 }
8291
8292 var len = string.length
8293 if (len === 0) return 0
8294
8295 // Use a for loop to avoid recursion
8296 var loweredCase = false
8297 for (;;) {
8298 switch (encoding) {
8299 case 'ascii':
8300 case 'latin1':
8301 case 'binary':
8302 return len
8303 case 'utf8':
8304 case 'utf-8':
8305 case undefined:
8306 return utf8ToBytes(string).length
8307 case 'ucs2':
8308 case 'ucs-2':
8309 case 'utf16le':
8310 case 'utf-16le':
8311 return len * 2
8312 case 'hex':
8313 return len >>> 1
8314 case 'base64':
8315 return base64ToBytes(string).length
8316 default:
8317 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8318 encoding = ('' + encoding).toLowerCase()
8319 loweredCase = true
8320 }
8321 }
8322 }
8323 Buffer.byteLength = byteLength
8324
8325 function slowToString (encoding, start, end) {
8326 var loweredCase = false
8327
8328 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8329 // property of a typed array.
8330
8331 // This behaves neither like String nor Uint8Array in that we set start/end
8332 // to their upper/lower bounds if the value passed is out of range.
8333 // undefined is handled specially as per ECMA-262 6th Edition,
8334 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8335 if (start === undefined || start < 0) {
8336 start = 0
8337 }
8338 // Return early if start > this.length. Done here to prevent potential uint32
8339 // coercion fail below.
8340 if (start > this.length) {
8341 return ''
8342 }
8343
8344 if (end === undefined || end > this.length) {
8345 end = this.length
8346 }
8347
8348 if (end <= 0) {
8349 return ''
8350 }
8351
8352 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8353 end >>>= 0
8354 start >>>= 0
8355
8356 if (end <= start) {
8357 return ''
8358 }
8359
8360 if (!encoding) encoding = 'utf8'
8361
8362 while (true) {
8363 switch (encoding) {
8364 case 'hex':
8365 return hexSlice(this, start, end)
8366
8367 case 'utf8':
8368 case 'utf-8':
8369 return utf8Slice(this, start, end)
8370
8371 case 'ascii':
8372 return asciiSlice(this, start, end)
8373
8374 case 'latin1':
8375 case 'binary':
8376 return latin1Slice(this, start, end)
8377
8378 case 'base64':
8379 return base64Slice(this, start, end)
8380
8381 case 'ucs2':
8382 case 'ucs-2':
8383 case 'utf16le':
8384 case 'utf-16le':
8385 return utf16leSlice(this, start, end)
8386
8387 default:
8388 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8389 encoding = (encoding + '').toLowerCase()
8390 loweredCase = true
8391 }
8392 }
8393 }
8394
8395 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8396 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8397 // reliably in a browserify context because there could be multiple different
8398 // copies of the 'buffer' package in use. This method works even for Buffer
8399 // instances that were created from another copy of the `buffer` package.
8400 // See: https://github.com/feross/buffer/issues/154
8401 Buffer.prototype._isBuffer = true
8402
8403 function swap (b, n, m) {
8404 var i = b[n]
8405 b[n] = b[m]
8406 b[m] = i
8407 }
8408
8409 Buffer.prototype.swap16 = function swap16 () {
8410 var len = this.length
8411 if (len % 2 !== 0) {
8412 throw new RangeError('Buffer size must be a multiple of 16-bits')
8413 }
8414 for (var i = 0; i < len; i += 2) {
8415 swap(this, i, i + 1)
8416 }
8417 return this
8418 }
8419
8420 Buffer.prototype.swap32 = function swap32 () {
8421 var len = this.length
8422 if (len % 4 !== 0) {
8423 throw new RangeError('Buffer size must be a multiple of 32-bits')
8424 }
8425 for (var i = 0; i < len; i += 4) {
8426 swap(this, i, i + 3)
8427 swap(this, i + 1, i + 2)
8428 }
8429 return this
8430 }
8431
8432 Buffer.prototype.swap64 = function swap64 () {
8433 var len = this.length
8434 if (len % 8 !== 0) {
8435 throw new RangeError('Buffer size must be a multiple of 64-bits')
8436 }
8437 for (var i = 0; i < len; i += 8) {
8438 swap(this, i, i + 7)
8439 swap(this, i + 1, i + 6)
8440 swap(this, i + 2, i + 5)
8441 swap(this, i + 3, i + 4)
8442 }
8443 return this
8444 }
8445
8446 Buffer.prototype.toString = function toString () {
8447 var length = this.length
8448 if (length === 0) return ''
8449 if (arguments.length === 0) return utf8Slice(this, 0, length)
8450 return slowToString.apply(this, arguments)
8451 }
8452
8453 Buffer.prototype.equals = function equals (b) {
8454 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8455 if (this === b) return true
8456 return Buffer.compare(this, b) === 0
8457 }
8458
8459 Buffer.prototype.inspect = function inspect () {
8460 var str = ''
8461 var max = exports.INSPECT_MAX_BYTES
8462 if (this.length > 0) {
8463 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8464 if (this.length > max) str += ' ... '
8465 }
8466 return '<Buffer ' + str + '>'
8467 }
8468
8469 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8470 if (!Buffer.isBuffer(target)) {
8471 throw new TypeError('Argument must be a Buffer')
8472 }
8473
8474 if (start === undefined) {
8475 start = 0
8476 }
8477 if (end === undefined) {
8478 end = target ? target.length : 0
8479 }
8480 if (thisStart === undefined) {
8481 thisStart = 0
8482 }
8483 if (thisEnd === undefined) {
8484 thisEnd = this.length
8485 }
8486
8487 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8488 throw new RangeError('out of range index')
8489 }
8490
8491 if (thisStart >= thisEnd && start >= end) {
8492 return 0
8493 }
8494 if (thisStart >= thisEnd) {
8495 return -1
8496 }
8497 if (start >= end) {
8498 return 1
8499 }
8500
8501 start >>>= 0
8502 end >>>= 0
8503 thisStart >>>= 0
8504 thisEnd >>>= 0
8505
8506 if (this === target) return 0
8507
8508 var x = thisEnd - thisStart
8509 var y = end - start
8510 var len = Math.min(x, y)
8511
8512 var thisCopy = this.slice(thisStart, thisEnd)
8513 var targetCopy = target.slice(start, end)
8514
8515 for (var i = 0; i < len; ++i) {
8516 if (thisCopy[i] !== targetCopy[i]) {
8517 x = thisCopy[i]
8518 y = targetCopy[i]
8519 break
8520 }
8521 }
8522
8523 if (x < y) return -1
8524 if (y < x) return 1
8525 return 0
8526 }
8527
8528 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8529 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8530 //
8531 // Arguments:
8532 // - buffer - a Buffer to search
8533 // - val - a string, Buffer, or number
8534 // - byteOffset - an index into `buffer`; will be clamped to an int32
8535 // - encoding - an optional encoding, relevant is val is a string
8536 // - dir - true for indexOf, false for lastIndexOf
8537 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8538 // Empty buffer means no match
8539 if (buffer.length === 0) return -1
8540
8541 // Normalize byteOffset
8542 if (typeof byteOffset === 'string') {
8543 encoding = byteOffset
8544 byteOffset = 0
8545 } else if (byteOffset > 0x7fffffff) {
8546 byteOffset = 0x7fffffff
8547 } else if (byteOffset < -0x80000000) {
8548 byteOffset = -0x80000000
8549 }
8550 byteOffset = +byteOffset // Coerce to Number.
8551 if (numberIsNaN(byteOffset)) {
8552 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8553 byteOffset = dir ? 0 : (buffer.length - 1)
8554 }
8555
8556 // Normalize byteOffset: negative offsets start from the end of the buffer
8557 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8558 if (byteOffset >= buffer.length) {
8559 if (dir) return -1
8560 else byteOffset = buffer.length - 1
8561 } else if (byteOffset < 0) {
8562 if (dir) byteOffset = 0
8563 else return -1
8564 }
8565
8566 // Normalize val
8567 if (typeof val === 'string') {
8568 val = Buffer.from(val, encoding)
8569 }
8570
8571 // Finally, search either indexOf (if dir is true) or lastIndexOf
8572 if (Buffer.isBuffer(val)) {
8573 // Special case: looking for empty string/buffer always fails
8574 if (val.length === 0) {
8575 return -1
8576 }
8577 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8578 } else if (typeof val === 'number') {
8579 val = val & 0xFF // Search for a byte value [0-255]
8580 if (typeof Uint8Array.prototype.indexOf === 'function') {
8581 if (dir) {
8582 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8583 } else {
8584 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8585 }
8586 }
8587 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8588 }
8589
8590 throw new TypeError('val must be string, number or Buffer')
8591 }
8592
8593 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8594 var indexSize = 1
8595 var arrLength = arr.length
8596 var valLength = val.length
8597
8598 if (encoding !== undefined) {
8599 encoding = String(encoding).toLowerCase()
8600 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8601 encoding === 'utf16le' || encoding === 'utf-16le') {
8602 if (arr.length < 2 || val.length < 2) {
8603 return -1
8604 }
8605 indexSize = 2
8606 arrLength /= 2
8607 valLength /= 2
8608 byteOffset /= 2
8609 }
8610 }
8611
8612 function read (buf, i) {
8613 if (indexSize === 1) {
8614 return buf[i]
8615 } else {
8616 return buf.readUInt16BE(i * indexSize)
8617 }
8618 }
8619
8620 var i
8621 if (dir) {
8622 var foundIndex = -1
8623 for (i = byteOffset; i < arrLength; i++) {
8624 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8625 if (foundIndex === -1) foundIndex = i
8626 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8627 } else {
8628 if (foundIndex !== -1) i -= i - foundIndex
8629 foundIndex = -1
8630 }
8631 }
8632 } else {
8633 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8634 for (i = byteOffset; i >= 0; i--) {
8635 var found = true
8636 for (var j = 0; j < valLength; j++) {
8637 if (read(arr, i + j) !== read(val, j)) {
8638 found = false
8639 break
8640 }
8641 }
8642 if (found) return i
8643 }
8644 }
8645
8646 return -1
8647 }
8648
8649 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8650 return this.indexOf(val, byteOffset, encoding) !== -1
8651 }
8652
8653 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8654 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8655 }
8656
8657 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8658 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8659 }
8660
8661 function hexWrite (buf, string, offset, length) {
8662 offset = Number(offset) || 0
8663 var remaining = buf.length - offset
8664 if (!length) {
8665 length = remaining
8666 } else {
8667 length = Number(length)
8668 if (length > remaining) {
8669 length = remaining
8670 }
8671 }
8672
8673 // must be an even number of digits
8674 var strLen = string.length
8675 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8676
8677 if (length > strLen / 2) {
8678 length = strLen / 2
8679 }
8680 for (var i = 0; i < length; ++i) {
8681 var parsed = parseInt(string.substr(i * 2, 2), 16)
8682 if (numberIsNaN(parsed)) return i
8683 buf[offset + i] = parsed
8684 }
8685 return i
8686 }
8687
8688 function utf8Write (buf, string, offset, length) {
8689 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8690 }
8691
8692 function asciiWrite (buf, string, offset, length) {
8693 return blitBuffer(asciiToBytes(string), buf, offset, length)
8694 }
8695
8696 function latin1Write (buf, string, offset, length) {
8697 return asciiWrite(buf, string, offset, length)
8698 }
8699
8700 function base64Write (buf, string, offset, length) {
8701 return blitBuffer(base64ToBytes(string), buf, offset, length)
8702 }
8703
8704 function ucs2Write (buf, string, offset, length) {
8705 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8706 }
8707
8708 Buffer.prototype.write = function write (string, offset, length, encoding) {
8709 // Buffer#write(string)
8710 if (offset === undefined) {
8711 encoding = 'utf8'
8712 length = this.length
8713 offset = 0
8714 // Buffer#write(string, encoding)
8715 } else if (length === undefined && typeof offset === 'string') {
8716 encoding = offset
8717 length = this.length
8718 offset = 0
8719 // Buffer#write(string, offset[, length][, encoding])
8720 } else if (isFinite(offset)) {
8721 offset = offset >>> 0
8722 if (isFinite(length)) {
8723 length = length >>> 0
8724 if (encoding === undefined) encoding = 'utf8'
8725 } else {
8726 encoding = length
8727 length = undefined
8728 }
8729 } else {
8730 throw new Error(
8731 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8732 )
8733 }
8734
8735 var remaining = this.length - offset
8736 if (length === undefined || length > remaining) length = remaining
8737
8738 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8739 throw new RangeError('Attempt to write outside buffer bounds')
8740 }
8741
8742 if (!encoding) encoding = 'utf8'
8743
8744 var loweredCase = false
8745 for (;;) {
8746 switch (encoding) {
8747 case 'hex':
8748 return hexWrite(this, string, offset, length)
8749
8750 case 'utf8':
8751 case 'utf-8':
8752 return utf8Write(this, string, offset, length)
8753
8754 case 'ascii':
8755 return asciiWrite(this, string, offset, length)
8756
8757 case 'latin1':
8758 case 'binary':
8759 return latin1Write(this, string, offset, length)
8760
8761 case 'base64':
8762 // Warning: maxLength not taken into account in base64Write
8763 return base64Write(this, string, offset, length)
8764
8765 case 'ucs2':
8766 case 'ucs-2':
8767 case 'utf16le':
8768 case 'utf-16le':
8769 return ucs2Write(this, string, offset, length)
8770
8771 default:
8772 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8773 encoding = ('' + encoding).toLowerCase()
8774 loweredCase = true
8775 }
8776 }
8777 }
8778
8779 Buffer.prototype.toJSON = function toJSON () {
8780 return {
8781 type: 'Buffer',
8782 data: Array.prototype.slice.call(this._arr || this, 0)
8783 }
8784 }
8785
8786 function base64Slice (buf, start, end) {
8787 if (start === 0 && end === buf.length) {
8788 return base64.fromByteArray(buf)
8789 } else {
8790 return base64.fromByteArray(buf.slice(start, end))
8791 }
8792 }
8793
8794 function utf8Slice (buf, start, end) {
8795 end = Math.min(buf.length, end)
8796 var res = []
8797
8798 var i = start
8799 while (i < end) {
8800 var firstByte = buf[i]
8801 var codePoint = null
8802 var bytesPerSequence = (firstByte > 0xEF) ? 4
8803 : (firstByte > 0xDF) ? 3
8804 : (firstByte > 0xBF) ? 2
8805 : 1
8806
8807 if (i + bytesPerSequence <= end) {
8808 var secondByte, thirdByte, fourthByte, tempCodePoint
8809
8810 switch (bytesPerSequence) {
8811 case 1:
8812 if (firstByte < 0x80) {
8813 codePoint = firstByte
8814 }
8815 break
8816 case 2:
8817 secondByte = buf[i + 1]
8818 if ((secondByte & 0xC0) === 0x80) {
8819 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8820 if (tempCodePoint > 0x7F) {
8821 codePoint = tempCodePoint
8822 }
8823 }
8824 break
8825 case 3:
8826 secondByte = buf[i + 1]
8827 thirdByte = buf[i + 2]
8828 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8829 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8830 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8831 codePoint = tempCodePoint
8832 }
8833 }
8834 break
8835 case 4:
8836 secondByte = buf[i + 1]
8837 thirdByte = buf[i + 2]
8838 fourthByte = buf[i + 3]
8839 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8840 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8841 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8842 codePoint = tempCodePoint
8843 }
8844 }
8845 }
8846 }
8847
8848 if (codePoint === null) {
8849 // we did not generate a valid codePoint so insert a
8850 // replacement char (U+FFFD) and advance only 1 byte
8851 codePoint = 0xFFFD
8852 bytesPerSequence = 1
8853 } else if (codePoint > 0xFFFF) {
8854 // encode to utf16 (surrogate pair dance)
8855 codePoint -= 0x10000
8856 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8857 codePoint = 0xDC00 | codePoint & 0x3FF
8858 }
8859
8860 res.push(codePoint)
8861 i += bytesPerSequence
8862 }
8863
8864 return decodeCodePointsArray(res)
8865 }
8866
8867 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
8868 // the lowest limit is Chrome, with 0x10000 args.
8869 // We go 1 magnitude less, for safety
8870 var MAX_ARGUMENTS_LENGTH = 0x1000
8871
8872 function decodeCodePointsArray (codePoints) {
8873 var len = codePoints.length
8874 if (len <= MAX_ARGUMENTS_LENGTH) {
8875 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8876 }
8877
8878 // Decode in chunks to avoid "call stack size exceeded".
8879 var res = ''
8880 var i = 0
8881 while (i < len) {
8882 res += String.fromCharCode.apply(
8883 String,
8884 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8885 )
8886 }
8887 return res
8888 }
8889
8890 function asciiSlice (buf, start, end) {
8891 var ret = ''
8892 end = Math.min(buf.length, end)
8893
8894 for (var i = start; i < end; ++i) {
8895 ret += String.fromCharCode(buf[i] & 0x7F)
8896 }
8897 return ret
8898 }
8899
8900 function latin1Slice (buf, start, end) {
8901 var ret = ''
8902 end = Math.min(buf.length, end)
8903
8904 for (var i = start; i < end; ++i) {
8905 ret += String.fromCharCode(buf[i])
8906 }
8907 return ret
8908 }
8909
8910 function hexSlice (buf, start, end) {
8911 var len = buf.length
8912
8913 if (!start || start < 0) start = 0
8914 if (!end || end < 0 || end > len) end = len
8915
8916 var out = ''
8917 for (var i = start; i < end; ++i) {
8918 out += toHex(buf[i])
8919 }
8920 return out
8921 }
8922
8923 function utf16leSlice (buf, start, end) {
8924 var bytes = buf.slice(start, end)
8925 var res = ''
8926 for (var i = 0; i < bytes.length; i += 2) {
8927 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8928 }
8929 return res
8930 }
8931
8932 Buffer.prototype.slice = function slice (start, end) {
8933 var len = this.length
8934 start = ~~start
8935 end = end === undefined ? len : ~~end
8936
8937 if (start < 0) {
8938 start += len
8939 if (start < 0) start = 0
8940 } else if (start > len) {
8941 start = len
8942 }
8943
8944 if (end < 0) {
8945 end += len
8946 if (end < 0) end = 0
8947 } else if (end > len) {
8948 end = len
8949 }
8950
8951 if (end < start) end = start
8952
8953 var newBuf = this.subarray(start, end)
8954 // Return an augmented `Uint8Array` instance
8955 newBuf.__proto__ = Buffer.prototype
8956 return newBuf
8957 }
8958
8959 /*
8960 * Need to make sure that buffer isn't trying to write out of bounds.
8961 */
8962 function checkOffset (offset, ext, length) {
8963 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8964 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8965 }
8966
8967 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8968 offset = offset >>> 0
8969 byteLength = byteLength >>> 0
8970 if (!noAssert) checkOffset(offset, byteLength, this.length)
8971
8972 var val = this[offset]
8973 var mul = 1
8974 var i = 0
8975 while (++i < byteLength && (mul *= 0x100)) {
8976 val += this[offset + i] * mul
8977 }
8978
8979 return val
8980 }
8981
8982 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8983 offset = offset >>> 0
8984 byteLength = byteLength >>> 0
8985 if (!noAssert) {
8986 checkOffset(offset, byteLength, this.length)
8987 }
8988
8989 var val = this[offset + --byteLength]
8990 var mul = 1
8991 while (byteLength > 0 && (mul *= 0x100)) {
8992 val += this[offset + --byteLength] * mul
8993 }
8994
8995 return val
8996 }
8997
8998 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8999 offset = offset >>> 0
9000 if (!noAssert) checkOffset(offset, 1, this.length)
9001 return this[offset]
9002 }
9003
9004 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
9005 offset = offset >>> 0
9006 if (!noAssert) checkOffset(offset, 2, this.length)
9007 return this[offset] | (this[offset + 1] << 8)
9008 }
9009
9010 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
9011 offset = offset >>> 0
9012 if (!noAssert) checkOffset(offset, 2, this.length)
9013 return (this[offset] << 8) | this[offset + 1]
9014 }
9015
9016 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
9017 offset = offset >>> 0
9018 if (!noAssert) checkOffset(offset, 4, this.length)
9019
9020 return ((this[offset]) |
9021 (this[offset + 1] << 8) |
9022 (this[offset + 2] << 16)) +
9023 (this[offset + 3] * 0x1000000)
9024 }
9025
9026 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
9027 offset = offset >>> 0
9028 if (!noAssert) checkOffset(offset, 4, this.length)
9029
9030 return (this[offset] * 0x1000000) +
9031 ((this[offset + 1] << 16) |
9032 (this[offset + 2] << 8) |
9033 this[offset + 3])
9034 }
9035
9036 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9037 offset = offset >>> 0
9038 byteLength = byteLength >>> 0
9039 if (!noAssert) checkOffset(offset, byteLength, this.length)
9040
9041 var val = this[offset]
9042 var mul = 1
9043 var i = 0
9044 while (++i < byteLength && (mul *= 0x100)) {
9045 val += this[offset + i] * mul
9046 }
9047 mul *= 0x80
9048
9049 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9050
9051 return val
9052 }
9053
9054 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9055 offset = offset >>> 0
9056 byteLength = byteLength >>> 0
9057 if (!noAssert) checkOffset(offset, byteLength, this.length)
9058
9059 var i = byteLength
9060 var mul = 1
9061 var val = this[offset + --i]
9062 while (i > 0 && (mul *= 0x100)) {
9063 val += this[offset + --i] * mul
9064 }
9065 mul *= 0x80
9066
9067 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9068
9069 return val
9070 }
9071
9072 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9073 offset = offset >>> 0
9074 if (!noAssert) checkOffset(offset, 1, this.length)
9075 if (!(this[offset] & 0x80)) return (this[offset])
9076 return ((0xff - this[offset] + 1) * -1)
9077 }
9078
9079 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9080 offset = offset >>> 0
9081 if (!noAssert) checkOffset(offset, 2, this.length)
9082 var val = this[offset] | (this[offset + 1] << 8)
9083 return (val & 0x8000) ? val | 0xFFFF0000 : val
9084 }
9085
9086 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9087 offset = offset >>> 0
9088 if (!noAssert) checkOffset(offset, 2, this.length)
9089 var val = this[offset + 1] | (this[offset] << 8)
9090 return (val & 0x8000) ? val | 0xFFFF0000 : val
9091 }
9092
9093 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9094 offset = offset >>> 0
9095 if (!noAssert) checkOffset(offset, 4, this.length)
9096
9097 return (this[offset]) |
9098 (this[offset + 1] << 8) |
9099 (this[offset + 2] << 16) |
9100 (this[offset + 3] << 24)
9101 }
9102
9103 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9104 offset = offset >>> 0
9105 if (!noAssert) checkOffset(offset, 4, this.length)
9106
9107 return (this[offset] << 24) |
9108 (this[offset + 1] << 16) |
9109 (this[offset + 2] << 8) |
9110 (this[offset + 3])
9111 }
9112
9113 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9114 offset = offset >>> 0
9115 if (!noAssert) checkOffset(offset, 4, this.length)
9116 return ieee754.read(this, offset, true, 23, 4)
9117 }
9118
9119 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9120 offset = offset >>> 0
9121 if (!noAssert) checkOffset(offset, 4, this.length)
9122 return ieee754.read(this, offset, false, 23, 4)
9123 }
9124
9125 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9126 offset = offset >>> 0
9127 if (!noAssert) checkOffset(offset, 8, this.length)
9128 return ieee754.read(this, offset, true, 52, 8)
9129 }
9130
9131 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9132 offset = offset >>> 0
9133 if (!noAssert) checkOffset(offset, 8, this.length)
9134 return ieee754.read(this, offset, false, 52, 8)
9135 }
9136
9137 function checkInt (buf, value, offset, ext, max, min) {
9138 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9139 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9140 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9141 }
9142
9143 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9144 value = +value
9145 offset = offset >>> 0
9146 byteLength = byteLength >>> 0
9147 if (!noAssert) {
9148 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9149 checkInt(this, value, offset, byteLength, maxBytes, 0)
9150 }
9151
9152 var mul = 1
9153 var i = 0
9154 this[offset] = value & 0xFF
9155 while (++i < byteLength && (mul *= 0x100)) {
9156 this[offset + i] = (value / mul) & 0xFF
9157 }
9158
9159 return offset + byteLength
9160 }
9161
9162 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9163 value = +value
9164 offset = offset >>> 0
9165 byteLength = byteLength >>> 0
9166 if (!noAssert) {
9167 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9168 checkInt(this, value, offset, byteLength, maxBytes, 0)
9169 }
9170
9171 var i = byteLength - 1
9172 var mul = 1
9173 this[offset + i] = value & 0xFF
9174 while (--i >= 0 && (mul *= 0x100)) {
9175 this[offset + i] = (value / mul) & 0xFF
9176 }
9177
9178 return offset + byteLength
9179 }
9180
9181 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9182 value = +value
9183 offset = offset >>> 0
9184 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9185 this[offset] = (value & 0xff)
9186 return offset + 1
9187 }
9188
9189 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9190 value = +value
9191 offset = offset >>> 0
9192 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9193 this[offset] = (value & 0xff)
9194 this[offset + 1] = (value >>> 8)
9195 return offset + 2
9196 }
9197
9198 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9199 value = +value
9200 offset = offset >>> 0
9201 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9202 this[offset] = (value >>> 8)
9203 this[offset + 1] = (value & 0xff)
9204 return offset + 2
9205 }
9206
9207 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9208 value = +value
9209 offset = offset >>> 0
9210 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9211 this[offset + 3] = (value >>> 24)
9212 this[offset + 2] = (value >>> 16)
9213 this[offset + 1] = (value >>> 8)
9214 this[offset] = (value & 0xff)
9215 return offset + 4
9216 }
9217
9218 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9219 value = +value
9220 offset = offset >>> 0
9221 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9222 this[offset] = (value >>> 24)
9223 this[offset + 1] = (value >>> 16)
9224 this[offset + 2] = (value >>> 8)
9225 this[offset + 3] = (value & 0xff)
9226 return offset + 4
9227 }
9228
9229 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9230 value = +value
9231 offset = offset >>> 0
9232 if (!noAssert) {
9233 var limit = Math.pow(2, (8 * byteLength) - 1)
9234
9235 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9236 }
9237
9238 var i = 0
9239 var mul = 1
9240 var sub = 0
9241 this[offset] = value & 0xFF
9242 while (++i < byteLength && (mul *= 0x100)) {
9243 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9244 sub = 1
9245 }
9246 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9247 }
9248
9249 return offset + byteLength
9250 }
9251
9252 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9253 value = +value
9254 offset = offset >>> 0
9255 if (!noAssert) {
9256 var limit = Math.pow(2, (8 * byteLength) - 1)
9257
9258 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9259 }
9260
9261 var i = byteLength - 1
9262 var mul = 1
9263 var sub = 0
9264 this[offset + i] = value & 0xFF
9265 while (--i >= 0 && (mul *= 0x100)) {
9266 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9267 sub = 1
9268 }
9269 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9270 }
9271
9272 return offset + byteLength
9273 }
9274
9275 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9276 value = +value
9277 offset = offset >>> 0
9278 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9279 if (value < 0) value = 0xff + value + 1
9280 this[offset] = (value & 0xff)
9281 return offset + 1
9282 }
9283
9284 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9285 value = +value
9286 offset = offset >>> 0
9287 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9288 this[offset] = (value & 0xff)
9289 this[offset + 1] = (value >>> 8)
9290 return offset + 2
9291 }
9292
9293 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9294 value = +value
9295 offset = offset >>> 0
9296 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9297 this[offset] = (value >>> 8)
9298 this[offset + 1] = (value & 0xff)
9299 return offset + 2
9300 }
9301
9302 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9303 value = +value
9304 offset = offset >>> 0
9305 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9306 this[offset] = (value & 0xff)
9307 this[offset + 1] = (value >>> 8)
9308 this[offset + 2] = (value >>> 16)
9309 this[offset + 3] = (value >>> 24)
9310 return offset + 4
9311 }
9312
9313 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9314 value = +value
9315 offset = offset >>> 0
9316 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9317 if (value < 0) value = 0xffffffff + value + 1
9318 this[offset] = (value >>> 24)
9319 this[offset + 1] = (value >>> 16)
9320 this[offset + 2] = (value >>> 8)
9321 this[offset + 3] = (value & 0xff)
9322 return offset + 4
9323 }
9324
9325 function checkIEEE754 (buf, value, offset, ext, max, min) {
9326 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9327 if (offset < 0) throw new RangeError('Index out of range')
9328 }
9329
9330 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9331 value = +value
9332 offset = offset >>> 0
9333 if (!noAssert) {
9334 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
9335 }
9336 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9337 return offset + 4
9338 }
9339
9340 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9341 return writeFloat(this, value, offset, true, noAssert)
9342 }
9343
9344 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9345 return writeFloat(this, value, offset, false, noAssert)
9346 }
9347
9348 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9349 value = +value
9350 offset = offset >>> 0
9351 if (!noAssert) {
9352 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
9353 }
9354 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9355 return offset + 8
9356 }
9357
9358 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9359 return writeDouble(this, value, offset, true, noAssert)
9360 }
9361
9362 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9363 return writeDouble(this, value, offset, false, noAssert)
9364 }
9365
9366 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9367 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9368 if (!start) start = 0
9369 if (!end && end !== 0) end = this.length
9370 if (targetStart >= target.length) targetStart = target.length
9371 if (!targetStart) targetStart = 0
9372 if (end > 0 && end < start) end = start
9373
9374 // Copy 0 bytes; we're done
9375 if (end === start) return 0
9376 if (target.length === 0 || this.length === 0) return 0
9377
9378 // Fatal error conditions
9379 if (targetStart < 0) {
9380 throw new RangeError('targetStart out of bounds')
9381 }
9382 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9383 if (end < 0) throw new RangeError('sourceEnd out of bounds')
9384
9385 // Are we oob?
9386 if (end > this.length) end = this.length
9387 if (target.length - targetStart < end - start) {
9388 end = target.length - targetStart + start
9389 }
9390
9391 var len = end - start
9392 var i
9393
9394 if (this === target && start < targetStart && targetStart < end) {
9395 // descending copy from end
9396 for (i = len - 1; i >= 0; --i) {
9397 target[i + targetStart] = this[i + start]
9398 }
9399 } else if (len < 1000) {
9400 // ascending copy from start
9401 for (i = 0; i < len; ++i) {
9402 target[i + targetStart] = this[i + start]
9403 }
9404 } else {
9405 Uint8Array.prototype.set.call(
9406 target,
9407 this.subarray(start, start + len),
9408 targetStart
9409 )
9410 }
9411
9412 return len
9413 }
9414
9415 // Usage:
9416 // buffer.fill(number[, offset[, end]])
9417 // buffer.fill(buffer[, offset[, end]])
9418 // buffer.fill(string[, offset[, end]][, encoding])
9419 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9420 // Handle string cases:
9421 if (typeof val === 'string') {
9422 if (typeof start === 'string') {
9423 encoding = start
9424 start = 0
9425 end = this.length
9426 } else if (typeof end === 'string') {
9427 encoding = end
9428 end = this.length
9429 }
9430 if (val.length === 1) {
9431 var code = val.charCodeAt(0)
9432 if (code < 256) {
9433 val = code
9434 }
9435 }
9436 if (encoding !== undefined && typeof encoding !== 'string') {
9437 throw new TypeError('encoding must be a string')
9438 }
9439 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9440 throw new TypeError('Unknown encoding: ' + encoding)
9441 }
9442 } else if (typeof val === 'number') {
9443 val = val & 255
9444 }
9445
9446 // Invalid ranges are not set to a default, so can range check early.
9447 if (start < 0 || this.length < start || this.length < end) {
9448 throw new RangeError('Out of range index')
9449 }
9450
9451 if (end <= start) {
9452 return this
9453 }
9454
9455 start = start >>> 0
9456 end = end === undefined ? this.length : end >>> 0
9457
9458 if (!val) val = 0
9459
9460 var i
9461 if (typeof val === 'number') {
9462 for (i = start; i < end; ++i) {
9463 this[i] = val
9464 }
9465 } else {
9466 var bytes = Buffer.isBuffer(val)
9467 ? val
9468 : new Buffer(val, encoding)
9469 var len = bytes.length
9470 for (i = 0; i < end - start; ++i) {
9471 this[i + start] = bytes[i % len]
9472 }
9473 }
9474
9475 return this
9476 }
9477
9478 // HELPER FUNCTIONS
9479 // ================
9480
9481 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
9482
9483 function base64clean (str) {
9484 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9485 str = str.trim().replace(INVALID_BASE64_RE, '')
9486 // Node converts strings with length < 2 to ''
9487 if (str.length < 2) return ''
9488 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9489 while (str.length % 4 !== 0) {
9490 str = str + '='
9491 }
9492 return str
9493 }
9494
9495 function toHex (n) {
9496 if (n < 16) return '0' + n.toString(16)
9497 return n.toString(16)
9498 }
9499
9500 function utf8ToBytes (string, units) {
9501 units = units || Infinity
9502 var codePoint
9503 var length = string.length
9504 var leadSurrogate = null
9505 var bytes = []
9506
9507 for (var i = 0; i < length; ++i) {
9508 codePoint = string.charCodeAt(i)
9509
9510 // is surrogate component
9511 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9512 // last char was a lead
9513 if (!leadSurrogate) {
9514 // no lead yet
9515 if (codePoint > 0xDBFF) {
9516 // unexpected trail
9517 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9518 continue
9519 } else if (i + 1 === length) {
9520 // unpaired lead
9521 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9522 continue
9523 }
9524
9525 // valid lead
9526 leadSurrogate = codePoint
9527
9528 continue
9529 }
9530
9531 // 2 leads in a row
9532 if (codePoint < 0xDC00) {
9533 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9534 leadSurrogate = codePoint
9535 continue
9536 }
9537
9538 // valid surrogate pair
9539 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9540 } else if (leadSurrogate) {
9541 // valid bmp char, but last char was a lead
9542 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9543 }
9544
9545 leadSurrogate = null
9546
9547 // encode utf8
9548 if (codePoint < 0x80) {
9549 if ((units -= 1) < 0) break
9550 bytes.push(codePoint)
9551 } else if (codePoint < 0x800) {
9552 if ((units -= 2) < 0) break
9553 bytes.push(
9554 codePoint >> 0x6 | 0xC0,
9555 codePoint & 0x3F | 0x80
9556 )
9557 } else if (codePoint < 0x10000) {
9558 if ((units -= 3) < 0) break
9559 bytes.push(
9560 codePoint >> 0xC | 0xE0,
9561 codePoint >> 0x6 & 0x3F | 0x80,
9562 codePoint & 0x3F | 0x80
9563 )
9564 } else if (codePoint < 0x110000) {
9565 if ((units -= 4) < 0) break
9566 bytes.push(
9567 codePoint >> 0x12 | 0xF0,
9568 codePoint >> 0xC & 0x3F | 0x80,
9569 codePoint >> 0x6 & 0x3F | 0x80,
9570 codePoint & 0x3F | 0x80
9571 )
9572 } else {
9573 throw new Error('Invalid code point')
9574 }
9575 }
9576
9577 return bytes
9578 }
9579
9580 function asciiToBytes (str) {
9581 var byteArray = []
9582 for (var i = 0; i < str.length; ++i) {
9583 // Node's code seems to be doing this and not & 0x7F..
9584 byteArray.push(str.charCodeAt(i) & 0xFF)
9585 }
9586 return byteArray
9587 }
9588
9589 function utf16leToBytes (str, units) {
9590 var c, hi, lo
9591 var byteArray = []
9592 for (var i = 0; i < str.length; ++i) {
9593 if ((units -= 2) < 0) break
9594
9595 c = str.charCodeAt(i)
9596 hi = c >> 8
9597 lo = c % 256
9598 byteArray.push(lo)
9599 byteArray.push(hi)
9600 }
9601
9602 return byteArray
9603 }
9604
9605 function base64ToBytes (str) {
9606 return base64.toByteArray(base64clean(str))
9607 }
9608
9609 function blitBuffer (src, dst, offset, length) {
9610 for (var i = 0; i < length; ++i) {
9611 if ((i + offset >= dst.length) || (i >= src.length)) break
9612 dst[i + offset] = src[i]
9613 }
9614 return i
9615 }
9616
9617 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9618 function isArrayBufferView (obj) {
9619 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9620 }
9621
9622 function numberIsNaN (obj) {
9623 return obj !== obj // eslint-disable-line no-self-compare
9624 }
9625
9626 },{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
9627 (function (Buffer){
9628 // Copyright Joyent, Inc. and other Node contributors.
9629 //
9630 // Permission is hereby granted, free of charge, to any person obtaining a
9631 // copy of this software and associated documentation files (the
9632 // "Software"), to deal in the Software without restriction, including
9633 // without limitation the rights to use, copy, modify, merge, publish,
9634 // distribute, sublicense, and/or sell copies of the Software, and to permit
9635 // persons to whom the Software is furnished to do so, subject to the
9636 // following conditions:
9637 //
9638 // The above copyright notice and this permission notice shall be included
9639 // in all copies or substantial portions of the Software.
9640 //
9641 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9642 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9643 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9644 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9645 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9646 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9647 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9648
9649 // NOTE: These type checking functions intentionally don't use `instanceof`
9650 // because it is fragile and can be easily faked with `Object.create()`.
9651
9652 function isArray(arg) {
9653 if (Array.isArray) {
9654 return Array.isArray(arg);
9655 }
9656 return objectToString(arg) === '[object Array]';
9657 }
9658 exports.isArray = isArray;
9659
9660 function isBoolean(arg) {
9661 return typeof arg === 'boolean';
9662 }
9663 exports.isBoolean = isBoolean;
9664
9665 function isNull(arg) {
9666 return arg === null;
9667 }
9668 exports.isNull = isNull;
9669
9670 function isNullOrUndefined(arg) {
9671 return arg == null;
9672 }
9673 exports.isNullOrUndefined = isNullOrUndefined;
9674
9675 function isNumber(arg) {
9676 return typeof arg === 'number';
9677 }
9678 exports.isNumber = isNumber;
9679
9680 function isString(arg) {
9681 return typeof arg === 'string';
9682 }
9683 exports.isString = isString;
9684
9685 function isSymbol(arg) {
9686 return typeof arg === 'symbol';
9687 }
9688 exports.isSymbol = isSymbol;
9689
9690 function isUndefined(arg) {
9691 return arg === void 0;
9692 }
9693 exports.isUndefined = isUndefined;
9694
9695 function isRegExp(re) {
9696 return objectToString(re) === '[object RegExp]';
9697 }
9698 exports.isRegExp = isRegExp;
9699
9700 function isObject(arg) {
9701 return typeof arg === 'object' && arg !== null;
9702 }
9703 exports.isObject = isObject;
9704
9705 function isDate(d) {
9706 return objectToString(d) === '[object Date]';
9707 }
9708 exports.isDate = isDate;
9709
9710 function isError(e) {
9711 return (objectToString(e) === '[object Error]' || e instanceof Error);
9712 }
9713 exports.isError = isError;
9714
9715 function isFunction(arg) {
9716 return typeof arg === 'function';
9717 }
9718 exports.isFunction = isFunction;
9719
9720 function isPrimitive(arg) {
9721 return arg === null ||
9722 typeof arg === 'boolean' ||
9723 typeof arg === 'number' ||
9724 typeof arg === 'string' ||
9725 typeof arg === 'symbol' || // ES6 symbol
9726 typeof arg === 'undefined';
9727 }
9728 exports.isPrimitive = isPrimitive;
9729
9730 exports.isBuffer = Buffer.isBuffer;
9731
9732 function objectToString(o) {
9733 return Object.prototype.toString.call(o);
9734 }
9735
9736 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9737 },{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9738 // Copyright Joyent, Inc. and other Node contributors.
9739 //
9740 // Permission is hereby granted, free of charge, to any person obtaining a
9741 // copy of this software and associated documentation files (the
9742 // "Software"), to deal in the Software without restriction, including
9743 // without limitation the rights to use, copy, modify, merge, publish,
9744 // distribute, sublicense, and/or sell copies of the Software, and to permit
9745 // persons to whom the Software is furnished to do so, subject to the
9746 // following conditions:
9747 //
9748 // The above copyright notice and this permission notice shall be included
9749 // in all copies or substantial portions of the Software.
9750 //
9751 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9752 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9753 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9754 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9755 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9756 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9757 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9758
9759 function EventEmitter() {
9760 this._events = this._events || {};
9761 this._maxListeners = this._maxListeners || undefined;
9762 }
9763 module.exports = EventEmitter;
9764
9765 // Backwards-compat with node 0.10.x
9766 EventEmitter.EventEmitter = EventEmitter;
9767
9768 EventEmitter.prototype._events = undefined;
9769 EventEmitter.prototype._maxListeners = undefined;
9770
9771 // By default EventEmitters will print a warning if more than 10 listeners are
9772 // added to it. This is a useful default which helps finding memory leaks.
9773 EventEmitter.defaultMaxListeners = 10;
9774
9775 // Obviously not all Emitters should be limited to 10. This function allows
9776 // that to be increased. Set to zero for unlimited.
9777 EventEmitter.prototype.setMaxListeners = function(n) {
9778 if (!isNumber(n) || n < 0 || isNaN(n))
9779 throw TypeError('n must be a positive number');
9780 this._maxListeners = n;
9781 return this;
9782 };
9783
9784 EventEmitter.prototype.emit = function(type) {
9785 var er, handler, len, args, i, listeners;
9786
9787 if (!this._events)
9788 this._events = {};
9789
9790 // If there is no 'error' event listener then throw.
9791 if (type === 'error') {
9792 if (!this._events.error ||
9793 (isObject(this._events.error) && !this._events.error.length)) {
9794 er = arguments[1];
9795 if (er instanceof Error) {
9796 throw er; // Unhandled 'error' event
9797 } else {
9798 // At least give some kind of context to the user
9799 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9800 err.context = er;
9801 throw err;
9802 }
9803 }
9804 }
9805
9806 handler = this._events[type];
9807
9808 if (isUndefined(handler))
9809 return false;
9810
9811 if (isFunction(handler)) {
9812 switch (arguments.length) {
9813 // fast cases
9814 case 1:
9815 handler.call(this);
9816 break;
9817 case 2:
9818 handler.call(this, arguments[1]);
9819 break;
9820 case 3:
9821 handler.call(this, arguments[1], arguments[2]);
9822 break;
9823 // slower
9824 default:
9825 args = Array.prototype.slice.call(arguments, 1);
9826 handler.apply(this, args);
9827 }
9828 } else if (isObject(handler)) {
9829 args = Array.prototype.slice.call(arguments, 1);
9830 listeners = handler.slice();
9831 len = listeners.length;
9832 for (i = 0; i < len; i++)
9833 listeners[i].apply(this, args);
9834 }
9835
9836 return true;
9837 };
9838
9839 EventEmitter.prototype.addListener = function(type, listener) {
9840 var m;
9841
9842 if (!isFunction(listener))
9843 throw TypeError('listener must be a function');
9844
9845 if (!this._events)
9846 this._events = {};
9847
9848 // To avoid recursion in the case that type === "newListener"! Before
9849 // adding it to the listeners, first emit "newListener".
9850 if (this._events.newListener)
9851 this.emit('newListener', type,
9852 isFunction(listener.listener) ?
9853 listener.listener : listener);
9854
9855 if (!this._events[type])
9856 // Optimize the case of one listener. Don't need the extra array object.
9857 this._events[type] = listener;
9858 else if (isObject(this._events[type]))
9859 // If we've already got an array, just append.
9860 this._events[type].push(listener);
9861 else
9862 // Adding the second element, need to change to array.
9863 this._events[type] = [this._events[type], listener];
9864
9865 // Check for listener leak
9866 if (isObject(this._events[type]) && !this._events[type].warned) {
9867 if (!isUndefined(this._maxListeners)) {
9868 m = this._maxListeners;
9869 } else {
9870 m = EventEmitter.defaultMaxListeners;
9871 }
9872
9873 if (m && m > 0 && this._events[type].length > m) {
9874 this._events[type].warned = true;
9875 console.error('(node) warning: possible EventEmitter memory ' +
9876 'leak detected. %d listeners added. ' +
9877 'Use emitter.setMaxListeners() to increase limit.',
9878 this._events[type].length);
9879 if (typeof console.trace === 'function') {
9880 // not supported in IE 10
9881 console.trace();
9882 }
9883 }
9884 }
9885
9886 return this;
9887 };
9888
9889 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9890
9891 EventEmitter.prototype.once = function(type, listener) {
9892 if (!isFunction(listener))
9893 throw TypeError('listener must be a function');
9894
9895 var fired = false;
9896
9897 function g() {
9898 this.removeListener(type, g);
9899
9900 if (!fired) {
9901 fired = true;
9902 listener.apply(this, arguments);
9903 }
9904 }
9905
9906 g.listener = listener;
9907 this.on(type, g);
9908
9909 return this;
9910 };
9911
9912 // emits a 'removeListener' event iff the listener was removed
9913 EventEmitter.prototype.removeListener = function(type, listener) {
9914 var list, position, length, i;
9915
9916 if (!isFunction(listener))
9917 throw TypeError('listener must be a function');
9918
9919 if (!this._events || !this._events[type])
9920 return this;
9921
9922 list = this._events[type];
9923 length = list.length;
9924 position = -1;
9925
9926 if (list === listener ||
9927 (isFunction(list.listener) && list.listener === listener)) {
9928 delete this._events[type];
9929 if (this._events.removeListener)
9930 this.emit('removeListener', type, listener);
9931
9932 } else if (isObject(list)) {
9933 for (i = length; i-- > 0;) {
9934 if (list[i] === listener ||
9935 (list[i].listener && list[i].listener === listener)) {
9936 position = i;
9937 break;
9938 }
9939 }
9940
9941 if (position < 0)
9942 return this;
9943
9944 if (list.length === 1) {
9945 list.length = 0;
9946 delete this._events[type];
9947 } else {
9948 list.splice(position, 1);
9949 }
9950
9951 if (this._events.removeListener)
9952 this.emit('removeListener', type, listener);
9953 }
9954
9955 return this;
9956 };
9957
9958 EventEmitter.prototype.removeAllListeners = function(type) {
9959 var key, listeners;
9960
9961 if (!this._events)
9962 return this;
9963
9964 // not listening for removeListener, no need to emit
9965 if (!this._events.removeListener) {
9966 if (arguments.length === 0)
9967 this._events = {};
9968 else if (this._events[type])
9969 delete this._events[type];
9970 return this;
9971 }
9972
9973 // emit removeListener for all listeners on all events
9974 if (arguments.length === 0) {
9975 for (key in this._events) {
9976 if (key === 'removeListener') continue;
9977 this.removeAllListeners(key);
9978 }
9979 this.removeAllListeners('removeListener');
9980 this._events = {};
9981 return this;
9982 }
9983
9984 listeners = this._events[type];
9985
9986 if (isFunction(listeners)) {
9987 this.removeListener(type, listeners);
9988 } else if (listeners) {
9989 // LIFO order
9990 while (listeners.length)
9991 this.removeListener(type, listeners[listeners.length - 1]);
9992 }
9993 delete this._events[type];
9994
9995 return this;
9996 };
9997
9998 EventEmitter.prototype.listeners = function(type) {
9999 var ret;
10000 if (!this._events || !this._events[type])
10001 ret = [];
10002 else if (isFunction(this._events[type]))
10003 ret = [this._events[type]];
10004 else
10005 ret = this._events[type].slice();
10006 return ret;
10007 };
10008
10009 EventEmitter.prototype.listenerCount = function(type) {
10010 if (this._events) {
10011 var evlistener = this._events[type];
10012
10013 if (isFunction(evlistener))
10014 return 1;
10015 else if (evlistener)
10016 return evlistener.length;
10017 }
10018 return 0;
10019 };
10020
10021 EventEmitter.listenerCount = function(emitter, type) {
10022 return emitter.listenerCount(type);
10023 };
10024
10025 function isFunction(arg) {
10026 return typeof arg === 'function';
10027 }
10028
10029 function isNumber(arg) {
10030 return typeof arg === 'number';
10031 }
10032
10033 function isObject(arg) {
10034 return typeof arg === 'object' && arg !== null;
10035 }
10036
10037 function isUndefined(arg) {
10038 return arg === void 0;
10039 }
10040
10041 },{}],7:[function(require,module,exports){
10042 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10043 var e, m
10044 var eLen = nBytes * 8 - mLen - 1
10045 var eMax = (1 << eLen) - 1
10046 var eBias = eMax >> 1
10047 var nBits = -7
10048 var i = isLE ? (nBytes - 1) : 0
10049 var d = isLE ? -1 : 1
10050 var s = buffer[offset + i]
10051
10052 i += d
10053
10054 e = s & ((1 << (-nBits)) - 1)
10055 s >>= (-nBits)
10056 nBits += eLen
10057 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10058
10059 m = e & ((1 << (-nBits)) - 1)
10060 e >>= (-nBits)
10061 nBits += mLen
10062 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10063
10064 if (e === 0) {
10065 e = 1 - eBias
10066 } else if (e === eMax) {
10067 return m ? NaN : ((s ? -1 : 1) * Infinity)
10068 } else {
10069 m = m + Math.pow(2, mLen)
10070 e = e - eBias
10071 }
10072 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10073 }
10074
10075 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10076 var e, m, c
10077 var eLen = nBytes * 8 - mLen - 1
10078 var eMax = (1 << eLen) - 1
10079 var eBias = eMax >> 1
10080 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10081 var i = isLE ? 0 : (nBytes - 1)
10082 var d = isLE ? 1 : -1
10083 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10084
10085 value = Math.abs(value)
10086
10087 if (isNaN(value) || value === Infinity) {
10088 m = isNaN(value) ? 1 : 0
10089 e = eMax
10090 } else {
10091 e = Math.floor(Math.log(value) / Math.LN2)
10092 if (value * (c = Math.pow(2, -e)) < 1) {
10093 e--
10094 c *= 2
10095 }
10096 if (e + eBias >= 1) {
10097 value += rt / c
10098 } else {
10099 value += rt * Math.pow(2, 1 - eBias)
10100 }
10101 if (value * c >= 2) {
10102 e++
10103 c /= 2
10104 }
10105
10106 if (e + eBias >= eMax) {
10107 m = 0
10108 e = eMax
10109 } else if (e + eBias >= 1) {
10110 m = (value * c - 1) * Math.pow(2, mLen)
10111 e = e + eBias
10112 } else {
10113 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10114 e = 0
10115 }
10116 }
10117
10118 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10119
10120 e = (e << mLen) | m
10121 eLen += mLen
10122 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10123
10124 buffer[offset + i - d] |= s * 128
10125 }
10126
10127 },{}],8:[function(require,module,exports){
10128 if (typeof Object.create === 'function') {
10129 // implementation from standard node.js 'util' module
10130 module.exports = function inherits(ctor, superCtor) {
10131 ctor.super_ = superCtor
10132 ctor.prototype = Object.create(superCtor.prototype, {
10133 constructor: {
10134 value: ctor,
10135 enumerable: false,
10136 writable: true,
10137 configurable: true
10138 }
10139 });
10140 };
10141 } else {
10142 // old school shim for old browsers
10143 module.exports = function inherits(ctor, superCtor) {
10144 ctor.super_ = superCtor
10145 var TempCtor = function () {}
10146 TempCtor.prototype = superCtor.prototype
10147 ctor.prototype = new TempCtor()
10148 ctor.prototype.constructor = ctor
10149 }
10150 }
10151
10152 },{}],9:[function(require,module,exports){
10153 /*!
10154 * Determine if an object is a Buffer
10155 *
10156 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10157 * @license MIT
10158 */
10159
10160 // The _isBuffer check is for Safari 5-7 support, because it's missing
10161 // Object.prototype.constructor. Remove this eventually
10162 module.exports = function (obj) {
10163 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10164 }
10165
10166 function isBuffer (obj) {
10167 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10168 }
10169
10170 // For Node v0.10 support. Remove this eventually.
10171 function isSlowBuffer (obj) {
10172 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10173 }
10174
10175 },{}],10:[function(require,module,exports){
10176 var toString = {}.toString;
10177
10178 module.exports = Array.isArray || function (arr) {
10179 return toString.call(arr) == '[object Array]';
10180 };
10181
10182 },{}],11:[function(require,module,exports){
10183 (function (process){
10184 'use strict';
10185
10186 if (!process.version ||
10187 process.version.indexOf('v0.') === 0 ||
10188 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10189 module.exports = nextTick;
10190 } else {
10191 module.exports = process.nextTick;
10192 }
10193
10194 function nextTick(fn, arg1, arg2, arg3) {
10195 if (typeof fn !== 'function') {
10196 throw new TypeError('"callback" argument must be a function');
10197 }
10198 var len = arguments.length;
10199 var args, i;
10200 switch (len) {
10201 case 0:
10202 case 1:
10203 return process.nextTick(fn);
10204 case 2:
10205 return process.nextTick(function afterTickOne() {
10206 fn.call(null, arg1);
10207 });
10208 case 3:
10209 return process.nextTick(function afterTickTwo() {
10210 fn.call(null, arg1, arg2);
10211 });
10212 case 4:
10213 return process.nextTick(function afterTickThree() {
10214 fn.call(null, arg1, arg2, arg3);
10215 });
10216 default:
10217 args = new Array(len - 1);
10218 i = 0;
10219 while (i < args.length) {
10220 args[i++] = arguments[i];
10221 }
10222 return process.nextTick(function afterTick() {
10223 fn.apply(null, args);
10224 });
10225 }
10226 }
10227
10228 }).call(this,require('_process'))
10229 },{"_process":12}],12:[function(require,module,exports){
10230 // shim for using process in browser
10231 var process = module.exports = {};
10232
10233 // cached from whatever global is present so that test runners that stub it
10234 // don't break things. But we need to wrap it in a try catch in case it is
10235 // wrapped in strict mode code which doesn't define any globals. It's inside a
10236 // function because try/catches deoptimize in certain engines.
10237
10238 var cachedSetTimeout;
10239 var cachedClearTimeout;
10240
10241 function defaultSetTimout() {
10242 throw new Error('setTimeout has not been defined');
10243 }
10244 function defaultClearTimeout () {
10245 throw new Error('clearTimeout has not been defined');
10246 }
10247 (function () {
10248 try {
10249 if (typeof setTimeout === 'function') {
10250 cachedSetTimeout = setTimeout;
10251 } else {
10252 cachedSetTimeout = defaultSetTimout;
10253 }
10254 } catch (e) {
10255 cachedSetTimeout = defaultSetTimout;
10256 }
10257 try {
10258 if (typeof clearTimeout === 'function') {
10259 cachedClearTimeout = clearTimeout;
10260 } else {
10261 cachedClearTimeout = defaultClearTimeout;
10262 }
10263 } catch (e) {
10264 cachedClearTimeout = defaultClearTimeout;
10265 }
10266 } ())
10267 function runTimeout(fun) {
10268 if (cachedSetTimeout === setTimeout) {
10269 //normal enviroments in sane situations
10270 return setTimeout(fun, 0);
10271 }
10272 // if setTimeout wasn't available but was latter defined
10273 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10274 cachedSetTimeout = setTimeout;
10275 return setTimeout(fun, 0);
10276 }
10277 try {
10278 // when when somebody has screwed with setTimeout but no I.E. maddness
10279 return cachedSetTimeout(fun, 0);
10280 } catch(e){
10281 try {
10282 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10283 return cachedSetTimeout.call(null, fun, 0);
10284 } catch(e){
10285 // 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
10286 return cachedSetTimeout.call(this, fun, 0);
10287 }
10288 }
10289
10290
10291 }
10292 function runClearTimeout(marker) {
10293 if (cachedClearTimeout === clearTimeout) {
10294 //normal enviroments in sane situations
10295 return clearTimeout(marker);
10296 }
10297 // if clearTimeout wasn't available but was latter defined
10298 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10299 cachedClearTimeout = clearTimeout;
10300 return clearTimeout(marker);
10301 }
10302 try {
10303 // when when somebody has screwed with setTimeout but no I.E. maddness
10304 return cachedClearTimeout(marker);
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 cachedClearTimeout.call(null, marker);
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 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10312 return cachedClearTimeout.call(this, marker);
10313 }
10314 }
10315
10316
10317
10318 }
10319 var queue = [];
10320 var draining = false;
10321 var currentQueue;
10322 var queueIndex = -1;
10323
10324 function cleanUpNextTick() {
10325 if (!draining || !currentQueue) {
10326 return;
10327 }
10328 draining = false;
10329 if (currentQueue.length) {
10330 queue = currentQueue.concat(queue);
10331 } else {
10332 queueIndex = -1;
10333 }
10334 if (queue.length) {
10335 drainQueue();
10336 }
10337 }
10338
10339 function drainQueue() {
10340 if (draining) {
10341 return;
10342 }
10343 var timeout = runTimeout(cleanUpNextTick);
10344 draining = true;
10345
10346 var len = queue.length;
10347 while(len) {
10348 currentQueue = queue;
10349 queue = [];
10350 while (++queueIndex < len) {
10351 if (currentQueue) {
10352 currentQueue[queueIndex].run();
10353 }
10354 }
10355 queueIndex = -1;
10356 len = queue.length;
10357 }
10358 currentQueue = null;
10359 draining = false;
10360 runClearTimeout(timeout);
10361 }
10362
10363 process.nextTick = function (fun) {
10364 var args = new Array(arguments.length - 1);
10365 if (arguments.length > 1) {
10366 for (var i = 1; i < arguments.length; i++) {
10367 args[i - 1] = arguments[i];
10368 }
10369 }
10370 queue.push(new Item(fun, args));
10371 if (queue.length === 1 && !draining) {
10372 runTimeout(drainQueue);
10373 }
10374 };
10375
10376 // v8 likes predictible objects
10377 function Item(fun, array) {
10378 this.fun = fun;
10379 this.array = array;
10380 }
10381 Item.prototype.run = function () {
10382 this.fun.apply(null, this.array);
10383 };
10384 process.title = 'browser';
10385 process.browser = true;
10386 process.env = {};
10387 process.argv = [];
10388 process.version = ''; // empty string to avoid regexp issues
10389 process.versions = {};
10390
10391 function noop() {}
10392
10393 process.on = noop;
10394 process.addListener = noop;
10395 process.once = noop;
10396 process.off = noop;
10397 process.removeListener = noop;
10398 process.removeAllListeners = noop;
10399 process.emit = noop;
10400 process.prependListener = noop;
10401 process.prependOnceListener = noop;
10402
10403 process.listeners = function (name) { return [] }
10404
10405 process.binding = function (name) {
10406 throw new Error('process.binding is not supported');
10407 };
10408
10409 process.cwd = function () { return '/' };
10410 process.chdir = function (dir) {
10411 throw new Error('process.chdir is not supported');
10412 };
10413 process.umask = function() { return 0; };
10414
10415 },{}],13:[function(require,module,exports){
10416 module.exports = require('./lib/_stream_duplex.js');
10417
10418 },{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10419 // Copyright Joyent, Inc. and other Node contributors.
10420 //
10421 // Permission is hereby granted, free of charge, to any person obtaining a
10422 // copy of this software and associated documentation files (the
10423 // "Software"), to deal in the Software without restriction, including
10424 // without limitation the rights to use, copy, modify, merge, publish,
10425 // distribute, sublicense, and/or sell copies of the Software, and to permit
10426 // persons to whom the Software is furnished to do so, subject to the
10427 // following conditions:
10428 //
10429 // The above copyright notice and this permission notice shall be included
10430 // in all copies or substantial portions of the Software.
10431 //
10432 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10433 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10434 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10435 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10436 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10437 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10438 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10439
10440 // a duplex stream is just a stream that is both readable and writable.
10441 // Since JS doesn't have multiple prototypal inheritance, this class
10442 // prototypally inherits from Readable, and then parasitically from
10443 // Writable.
10444
10445 'use strict';
10446
10447 /*<replacement>*/
10448
10449 var processNextTick = require('process-nextick-args');
10450 /*</replacement>*/
10451
10452 /*<replacement>*/
10453 var objectKeys = Object.keys || function (obj) {
10454 var keys = [];
10455 for (var key in obj) {
10456 keys.push(key);
10457 }return keys;
10458 };
10459 /*</replacement>*/
10460
10461 module.exports = Duplex;
10462
10463 /*<replacement>*/
10464 var util = require('core-util-is');
10465 util.inherits = require('inherits');
10466 /*</replacement>*/
10467
10468 var Readable = require('./_stream_readable');
10469 var Writable = require('./_stream_writable');
10470
10471 util.inherits(Duplex, Readable);
10472
10473 var keys = objectKeys(Writable.prototype);
10474 for (var v = 0; v < keys.length; v++) {
10475 var method = keys[v];
10476 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10477 }
10478
10479 function Duplex(options) {
10480 if (!(this instanceof Duplex)) return new Duplex(options);
10481
10482 Readable.call(this, options);
10483 Writable.call(this, options);
10484
10485 if (options && options.readable === false) this.readable = false;
10486
10487 if (options && options.writable === false) this.writable = false;
10488
10489 this.allowHalfOpen = true;
10490 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10491
10492 this.once('end', onend);
10493 }
10494
10495 // the no-half-open enforcer
10496 function onend() {
10497 // if we allow half-open state, or if the writable side ended,
10498 // then we're ok.
10499 if (this.allowHalfOpen || this._writableState.ended) return;
10500
10501 // no more data can be written.
10502 // But allow more writes to happen in this tick.
10503 processNextTick(onEndNT, this);
10504 }
10505
10506 function onEndNT(self) {
10507 self.end();
10508 }
10509
10510 Object.defineProperty(Duplex.prototype, 'destroyed', {
10511 get: function () {
10512 if (this._readableState === undefined || this._writableState === undefined) {
10513 return false;
10514 }
10515 return this._readableState.destroyed && this._writableState.destroyed;
10516 },
10517 set: function (value) {
10518 // we ignore the value if the stream
10519 // has not been initialized yet
10520 if (this._readableState === undefined || this._writableState === undefined) {
10521 return;
10522 }
10523
10524 // backward compatibility, the user is explicitly
10525 // managing destroyed
10526 this._readableState.destroyed = value;
10527 this._writableState.destroyed = value;
10528 }
10529 });
10530
10531 Duplex.prototype._destroy = function (err, cb) {
10532 this.push(null);
10533 this.end();
10534
10535 processNextTick(cb, err);
10536 };
10537
10538 function forEach(xs, f) {
10539 for (var i = 0, l = xs.length; i < l; i++) {
10540 f(xs[i], i);
10541 }
10542 }
10543 },{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10544 // Copyright Joyent, Inc. and other Node contributors.
10545 //
10546 // Permission is hereby granted, free of charge, to any person obtaining a
10547 // copy of this software and associated documentation files (the
10548 // "Software"), to deal in the Software without restriction, including
10549 // without limitation the rights to use, copy, modify, merge, publish,
10550 // distribute, sublicense, and/or sell copies of the Software, and to permit
10551 // persons to whom the Software is furnished to do so, subject to the
10552 // following conditions:
10553 //
10554 // The above copyright notice and this permission notice shall be included
10555 // in all copies or substantial portions of the Software.
10556 //
10557 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10558 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10559 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10560 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10561 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10562 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10563 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10564
10565 // a passthrough stream.
10566 // basically just the most minimal sort of Transform stream.
10567 // Every written chunk gets output as-is.
10568
10569 'use strict';
10570
10571 module.exports = PassThrough;
10572
10573 var Transform = require('./_stream_transform');
10574
10575 /*<replacement>*/
10576 var util = require('core-util-is');
10577 util.inherits = require('inherits');
10578 /*</replacement>*/
10579
10580 util.inherits(PassThrough, Transform);
10581
10582 function PassThrough(options) {
10583 if (!(this instanceof PassThrough)) return new PassThrough(options);
10584
10585 Transform.call(this, options);
10586 }
10587
10588 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10589 cb(null, chunk);
10590 };
10591 },{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10592 (function (process,global){
10593 // Copyright Joyent, Inc. and other Node contributors.
10594 //
10595 // Permission is hereby granted, free of charge, to any person obtaining a
10596 // copy of this software and associated documentation files (the
10597 // "Software"), to deal in the Software without restriction, including
10598 // without limitation the rights to use, copy, modify, merge, publish,
10599 // distribute, sublicense, and/or sell copies of the Software, and to permit
10600 // persons to whom the Software is furnished to do so, subject to the
10601 // following conditions:
10602 //
10603 // The above copyright notice and this permission notice shall be included
10604 // in all copies or substantial portions of the Software.
10605 //
10606 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10607 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10608 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10609 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10610 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10611 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10612 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10613
10614 'use strict';
10615
10616 /*<replacement>*/
10617
10618 var processNextTick = require('process-nextick-args');
10619 /*</replacement>*/
10620
10621 module.exports = Readable;
10622
10623 /*<replacement>*/
10624 var isArray = require('isarray');
10625 /*</replacement>*/
10626
10627 /*<replacement>*/
10628 var Duplex;
10629 /*</replacement>*/
10630
10631 Readable.ReadableState = ReadableState;
10632
10633 /*<replacement>*/
10634 var EE = require('events').EventEmitter;
10635
10636 var EElistenerCount = function (emitter, type) {
10637 return emitter.listeners(type).length;
10638 };
10639 /*</replacement>*/
10640
10641 /*<replacement>*/
10642 var Stream = require('./internal/streams/stream');
10643 /*</replacement>*/
10644
10645 // TODO(bmeurer): Change this back to const once hole checks are
10646 // properly optimized away early in Ignition+TurboFan.
10647 /*<replacement>*/
10648 var Buffer = require('safe-buffer').Buffer;
10649 var OurUint8Array = global.Uint8Array || function () {};
10650 function _uint8ArrayToBuffer(chunk) {
10651 return Buffer.from(chunk);
10652 }
10653 function _isUint8Array(obj) {
10654 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10655 }
10656 /*</replacement>*/
10657
10658 /*<replacement>*/
10659 var util = require('core-util-is');
10660 util.inherits = require('inherits');
10661 /*</replacement>*/
10662
10663 /*<replacement>*/
10664 var debugUtil = require('util');
10665 var debug = void 0;
10666 if (debugUtil && debugUtil.debuglog) {
10667 debug = debugUtil.debuglog('stream');
10668 } else {
10669 debug = function () {};
10670 }
10671 /*</replacement>*/
10672
10673 var BufferList = require('./internal/streams/BufferList');
10674 var destroyImpl = require('./internal/streams/destroy');
10675 var StringDecoder;
10676
10677 util.inherits(Readable, Stream);
10678
10679 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10680
10681 function prependListener(emitter, event, fn) {
10682 // Sadly this is not cacheable as some libraries bundle their own
10683 // event emitter implementation with them.
10684 if (typeof emitter.prependListener === 'function') {
10685 return emitter.prependListener(event, fn);
10686 } else {
10687 // This is a hack to make sure that our error handler is attached before any
10688 // userland ones. NEVER DO THIS. This is here only because this code needs
10689 // to continue to work with older versions of Node.js that do not include
10690 // the prependListener() method. The goal is to eventually remove this hack.
10691 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]];
10692 }
10693 }
10694
10695 function ReadableState(options, stream) {
10696 Duplex = Duplex || require('./_stream_duplex');
10697
10698 options = options || {};
10699
10700 // object stream flag. Used to make read(n) ignore n and to
10701 // make all the buffer merging and length checks go away
10702 this.objectMode = !!options.objectMode;
10703
10704 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10705
10706 // the point at which it stops calling _read() to fill the buffer
10707 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10708 var hwm = options.highWaterMark;
10709 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10710 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
10711
10712 // cast to ints.
10713 this.highWaterMark = Math.floor(this.highWaterMark);
10714
10715 // A linked list is used to store data chunks instead of an array because the
10716 // linked list can remove elements from the beginning faster than
10717 // array.shift()
10718 this.buffer = new BufferList();
10719 this.length = 0;
10720 this.pipes = null;
10721 this.pipesCount = 0;
10722 this.flowing = null;
10723 this.ended = false;
10724 this.endEmitted = false;
10725 this.reading = false;
10726
10727 // a flag to be able to tell if the event 'readable'/'data' is emitted
10728 // immediately, or on a later tick. We set this to true at first, because
10729 // any actions that shouldn't happen until "later" should generally also
10730 // not happen before the first read call.
10731 this.sync = true;
10732
10733 // whenever we return null, then we set a flag to say
10734 // that we're awaiting a 'readable' event emission.
10735 this.needReadable = false;
10736 this.emittedReadable = false;
10737 this.readableListening = false;
10738 this.resumeScheduled = false;
10739
10740 // has it been destroyed
10741 this.destroyed = false;
10742
10743 // Crypto is kind of old and crusty. Historically, its default string
10744 // encoding is 'binary' so we have to make this configurable.
10745 // Everything else in the universe uses 'utf8', though.
10746 this.defaultEncoding = options.defaultEncoding || 'utf8';
10747
10748 // the number of writers that are awaiting a drain event in .pipe()s
10749 this.awaitDrain = 0;
10750
10751 // if true, a maybeReadMore has been scheduled
10752 this.readingMore = false;
10753
10754 this.decoder = null;
10755 this.encoding = null;
10756 if (options.encoding) {
10757 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10758 this.decoder = new StringDecoder(options.encoding);
10759 this.encoding = options.encoding;
10760 }
10761 }
10762
10763 function Readable(options) {
10764 Duplex = Duplex || require('./_stream_duplex');
10765
10766 if (!(this instanceof Readable)) return new Readable(options);
10767
10768 this._readableState = new ReadableState(options, this);
10769
10770 // legacy
10771 this.readable = true;
10772
10773 if (options) {
10774 if (typeof options.read === 'function') this._read = options.read;
10775
10776 if (typeof options.destroy === 'function') this._destroy = options.destroy;
10777 }
10778
10779 Stream.call(this);
10780 }
10781
10782 Object.defineProperty(Readable.prototype, 'destroyed', {
10783 get: function () {
10784 if (this._readableState === undefined) {
10785 return false;
10786 }
10787 return this._readableState.destroyed;
10788 },
10789 set: function (value) {
10790 // we ignore the value if the stream
10791 // has not been initialized yet
10792 if (!this._readableState) {
10793 return;
10794 }
10795
10796 // backward compatibility, the user is explicitly
10797 // managing destroyed
10798 this._readableState.destroyed = value;
10799 }
10800 });
10801
10802 Readable.prototype.destroy = destroyImpl.destroy;
10803 Readable.prototype._undestroy = destroyImpl.undestroy;
10804 Readable.prototype._destroy = function (err, cb) {
10805 this.push(null);
10806 cb(err);
10807 };
10808
10809 // Manually shove something into the read() buffer.
10810 // This returns true if the highWaterMark has not been hit yet,
10811 // similar to how Writable.write() returns true if you should
10812 // write() some more.
10813 Readable.prototype.push = function (chunk, encoding) {
10814 var state = this._readableState;
10815 var skipChunkCheck;
10816
10817 if (!state.objectMode) {
10818 if (typeof chunk === 'string') {
10819 encoding = encoding || state.defaultEncoding;
10820 if (encoding !== state.encoding) {
10821 chunk = Buffer.from(chunk, encoding);
10822 encoding = '';
10823 }
10824 skipChunkCheck = true;
10825 }
10826 } else {
10827 skipChunkCheck = true;
10828 }
10829
10830 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10831 };
10832
10833 // Unshift should *always* be something directly out of read()
10834 Readable.prototype.unshift = function (chunk) {
10835 return readableAddChunk(this, chunk, null, true, false);
10836 };
10837
10838 function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10839 var state = stream._readableState;
10840 if (chunk === null) {
10841 state.reading = false;
10842 onEofChunk(stream, state);
10843 } else {
10844 var er;
10845 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10846 if (er) {
10847 stream.emit('error', er);
10848 } else if (state.objectMode || chunk && chunk.length > 0) {
10849 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10850 chunk = _uint8ArrayToBuffer(chunk);
10851 }
10852
10853 if (addToFront) {
10854 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10855 } else if (state.ended) {
10856 stream.emit('error', new Error('stream.push() after EOF'));
10857 } else {
10858 state.reading = false;
10859 if (state.decoder && !encoding) {
10860 chunk = state.decoder.write(chunk);
10861 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10862 } else {
10863 addChunk(stream, state, chunk, false);
10864 }
10865 }
10866 } else if (!addToFront) {
10867 state.reading = false;
10868 }
10869 }
10870
10871 return needMoreData(state);
10872 }
10873
10874 function addChunk(stream, state, chunk, addToFront) {
10875 if (state.flowing && state.length === 0 && !state.sync) {
10876 stream.emit('data', chunk);
10877 stream.read(0);
10878 } else {
10879 // update the buffer info.
10880 state.length += state.objectMode ? 1 : chunk.length;
10881 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10882
10883 if (state.needReadable) emitReadable(stream);
10884 }
10885 maybeReadMore(stream, state);
10886 }
10887
10888 function chunkInvalid(state, chunk) {
10889 var er;
10890 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10891 er = new TypeError('Invalid non-string/buffer chunk');
10892 }
10893 return er;
10894 }
10895
10896 // if it's past the high water mark, we can push in some more.
10897 // Also, if we have no data yet, we can stand some
10898 // more bytes. This is to work around cases where hwm=0,
10899 // such as the repl. Also, if the push() triggered a
10900 // readable event, and the user called read(largeNumber) such that
10901 // needReadable was set, then we ought to push more, so that another
10902 // 'readable' event will be triggered.
10903 function needMoreData(state) {
10904 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
10905 }
10906
10907 Readable.prototype.isPaused = function () {
10908 return this._readableState.flowing === false;
10909 };
10910
10911 // backwards compatibility.
10912 Readable.prototype.setEncoding = function (enc) {
10913 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10914 this._readableState.decoder = new StringDecoder(enc);
10915 this._readableState.encoding = enc;
10916 return this;
10917 };
10918
10919 // Don't raise the hwm > 8MB
10920 var MAX_HWM = 0x800000;
10921 function computeNewHighWaterMark(n) {
10922 if (n >= MAX_HWM) {
10923 n = MAX_HWM;
10924 } else {
10925 // Get the next highest power of 2 to prevent increasing hwm excessively in
10926 // tiny amounts
10927 n--;
10928 n |= n >>> 1;
10929 n |= n >>> 2;
10930 n |= n >>> 4;
10931 n |= n >>> 8;
10932 n |= n >>> 16;
10933 n++;
10934 }
10935 return n;
10936 }
10937
10938 // This function is designed to be inlinable, so please take care when making
10939 // changes to the function body.
10940 function howMuchToRead(n, state) {
10941 if (n <= 0 || state.length === 0 && state.ended) return 0;
10942 if (state.objectMode) return 1;
10943 if (n !== n) {
10944 // Only flow one buffer at a time
10945 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10946 }
10947 // If we're asking for more than the current hwm, then raise the hwm.
10948 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10949 if (n <= state.length) return n;
10950 // Don't have enough
10951 if (!state.ended) {
10952 state.needReadable = true;
10953 return 0;
10954 }
10955 return state.length;
10956 }
10957
10958 // you can override either this method, or the async _read(n) below.
10959 Readable.prototype.read = function (n) {
10960 debug('read', n);
10961 n = parseInt(n, 10);
10962 var state = this._readableState;
10963 var nOrig = n;
10964
10965 if (n !== 0) state.emittedReadable = false;
10966
10967 // if we're doing read(0) to trigger a readable event, but we
10968 // already have a bunch of data in the buffer, then just trigger
10969 // the 'readable' event and move on.
10970 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10971 debug('read: emitReadable', state.length, state.ended);
10972 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10973 return null;
10974 }
10975
10976 n = howMuchToRead(n, state);
10977
10978 // if we've ended, and we're now clear, then finish it up.
10979 if (n === 0 && state.ended) {
10980 if (state.length === 0) endReadable(this);
10981 return null;
10982 }
10983
10984 // All the actual chunk generation logic needs to be
10985 // *below* the call to _read. The reason is that in certain
10986 // synthetic stream cases, such as passthrough streams, _read
10987 // may be a completely synchronous operation which may change
10988 // the state of the read buffer, providing enough data when
10989 // before there was *not* enough.
10990 //
10991 // So, the steps are:
10992 // 1. Figure out what the state of things will be after we do
10993 // a read from the buffer.
10994 //
10995 // 2. If that resulting state will trigger a _read, then call _read.
10996 // Note that this may be asynchronous, or synchronous. Yes, it is
10997 // deeply ugly to write APIs this way, but that still doesn't mean
10998 // that the Readable class should behave improperly, as streams are
10999 // designed to be sync/async agnostic.
11000 // Take note if the _read call is sync or async (ie, if the read call
11001 // has returned yet), so that we know whether or not it's safe to emit
11002 // 'readable' etc.
11003 //
11004 // 3. Actually pull the requested chunks out of the buffer and return.
11005
11006 // if we need a readable event, then we need to do some reading.
11007 var doRead = state.needReadable;
11008 debug('need readable', doRead);
11009
11010 // if we currently have less than the highWaterMark, then also read some
11011 if (state.length === 0 || state.length - n < state.highWaterMark) {
11012 doRead = true;
11013 debug('length less than watermark', doRead);
11014 }
11015
11016 // however, if we've ended, then there's no point, and if we're already
11017 // reading, then it's unnecessary.
11018 if (state.ended || state.reading) {
11019 doRead = false;
11020 debug('reading or ended', doRead);
11021 } else if (doRead) {
11022 debug('do read');
11023 state.reading = true;
11024 state.sync = true;
11025 // if the length is currently zero, then we *need* a readable event.
11026 if (state.length === 0) state.needReadable = true;
11027 // call internal read method
11028 this._read(state.highWaterMark);
11029 state.sync = false;
11030 // If _read pushed data synchronously, then `reading` will be false,
11031 // and we need to re-evaluate how much data we can return to the user.
11032 if (!state.reading) n = howMuchToRead(nOrig, state);
11033 }
11034
11035 var ret;
11036 if (n > 0) ret = fromList(n, state);else ret = null;
11037
11038 if (ret === null) {
11039 state.needReadable = true;
11040 n = 0;
11041 } else {
11042 state.length -= n;
11043 }
11044
11045 if (state.length === 0) {
11046 // If we have nothing in the buffer, then we want to know
11047 // as soon as we *do* get something into the buffer.
11048 if (!state.ended) state.needReadable = true;
11049
11050 // If we tried to read() past the EOF, then emit end on the next tick.
11051 if (nOrig !== n && state.ended) endReadable(this);
11052 }
11053
11054 if (ret !== null) this.emit('data', ret);
11055
11056 return ret;
11057 };
11058
11059 function onEofChunk(stream, state) {
11060 if (state.ended) return;
11061 if (state.decoder) {
11062 var chunk = state.decoder.end();
11063 if (chunk && chunk.length) {
11064 state.buffer.push(chunk);
11065 state.length += state.objectMode ? 1 : chunk.length;
11066 }
11067 }
11068 state.ended = true;
11069
11070 // emit 'readable' now to make sure it gets picked up.
11071 emitReadable(stream);
11072 }
11073
11074 // Don't emit readable right away in sync mode, because this can trigger
11075 // another read() call => stack overflow. This way, it might trigger
11076 // a nextTick recursion warning, but that's not so bad.
11077 function emitReadable(stream) {
11078 var state = stream._readableState;
11079 state.needReadable = false;
11080 if (!state.emittedReadable) {
11081 debug('emitReadable', state.flowing);
11082 state.emittedReadable = true;
11083 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11084 }
11085 }
11086
11087 function emitReadable_(stream) {
11088 debug('emit readable');
11089 stream.emit('readable');
11090 flow(stream);
11091 }
11092
11093 // at this point, the user has presumably seen the 'readable' event,
11094 // and called read() to consume some data. that may have triggered
11095 // in turn another _read(n) call, in which case reading = true if
11096 // it's in progress.
11097 // However, if we're not ended, or reading, and the length < hwm,
11098 // then go ahead and try to read some more preemptively.
11099 function maybeReadMore(stream, state) {
11100 if (!state.readingMore) {
11101 state.readingMore = true;
11102 processNextTick(maybeReadMore_, stream, state);
11103 }
11104 }
11105
11106 function maybeReadMore_(stream, state) {
11107 var len = state.length;
11108 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11109 debug('maybeReadMore read 0');
11110 stream.read(0);
11111 if (len === state.length)
11112 // didn't get any data, stop spinning.
11113 break;else len = state.length;
11114 }
11115 state.readingMore = false;
11116 }
11117
11118 // abstract method. to be overridden in specific implementation classes.
11119 // call cb(er, data) where data is <= n in length.
11120 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11121 // arbitrary, and perhaps not very meaningful.
11122 Readable.prototype._read = function (n) {
11123 this.emit('error', new Error('_read() is not implemented'));
11124 };
11125
11126 Readable.prototype.pipe = function (dest, pipeOpts) {
11127 var src = this;
11128 var state = this._readableState;
11129
11130 switch (state.pipesCount) {
11131 case 0:
11132 state.pipes = dest;
11133 break;
11134 case 1:
11135 state.pipes = [state.pipes, dest];
11136 break;
11137 default:
11138 state.pipes.push(dest);
11139 break;
11140 }
11141 state.pipesCount += 1;
11142 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11143
11144 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11145
11146 var endFn = doEnd ? onend : unpipe;
11147 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11148
11149 dest.on('unpipe', onunpipe);
11150 function onunpipe(readable, unpipeInfo) {
11151 debug('onunpipe');
11152 if (readable === src) {
11153 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11154 unpipeInfo.hasUnpiped = true;
11155 cleanup();
11156 }
11157 }
11158 }
11159
11160 function onend() {
11161 debug('onend');
11162 dest.end();
11163 }
11164
11165 // when the dest drains, it reduces the awaitDrain counter
11166 // on the source. This would be more elegant with a .once()
11167 // handler in flow(), but adding and removing repeatedly is
11168 // too slow.
11169 var ondrain = pipeOnDrain(src);
11170 dest.on('drain', ondrain);
11171
11172 var cleanedUp = false;
11173 function cleanup() {
11174 debug('cleanup');
11175 // cleanup event handlers once the pipe is broken
11176 dest.removeListener('close', onclose);
11177 dest.removeListener('finish', onfinish);
11178 dest.removeListener('drain', ondrain);
11179 dest.removeListener('error', onerror);
11180 dest.removeListener('unpipe', onunpipe);
11181 src.removeListener('end', onend);
11182 src.removeListener('end', unpipe);
11183 src.removeListener('data', ondata);
11184
11185 cleanedUp = true;
11186
11187 // if the reader is waiting for a drain event from this
11188 // specific writer, then it would cause it to never start
11189 // flowing again.
11190 // So, if this is awaiting a drain, then we just call it now.
11191 // If we don't know, then assume that we are waiting for one.
11192 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11193 }
11194
11195 // If the user pushes more data while we're writing to dest then we'll end up
11196 // in ondata again. However, we only want to increase awaitDrain once because
11197 // dest will only emit one 'drain' event for the multiple writes.
11198 // => Introduce a guard on increasing awaitDrain.
11199 var increasedAwaitDrain = false;
11200 src.on('data', ondata);
11201 function ondata(chunk) {
11202 debug('ondata');
11203 increasedAwaitDrain = false;
11204 var ret = dest.write(chunk);
11205 if (false === ret && !increasedAwaitDrain) {
11206 // If the user unpiped during `dest.write()`, it is possible
11207 // to get stuck in a permanently paused state if that write
11208 // also returned false.
11209 // => Check whether `dest` is still a piping destination.
11210 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11211 debug('false write response, pause', src._readableState.awaitDrain);
11212 src._readableState.awaitDrain++;
11213 increasedAwaitDrain = true;
11214 }
11215 src.pause();
11216 }
11217 }
11218
11219 // if the dest has an error, then stop piping into it.
11220 // however, don't suppress the throwing behavior for this.
11221 function onerror(er) {
11222 debug('onerror', er);
11223 unpipe();
11224 dest.removeListener('error', onerror);
11225 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
11226 }
11227
11228 // Make sure our error handler is attached before userland ones.
11229 prependListener(dest, 'error', onerror);
11230
11231 // Both close and finish should trigger unpipe, but only once.
11232 function onclose() {
11233 dest.removeListener('finish', onfinish);
11234 unpipe();
11235 }
11236 dest.once('close', onclose);
11237 function onfinish() {
11238 debug('onfinish');
11239 dest.removeListener('close', onclose);
11240 unpipe();
11241 }
11242 dest.once('finish', onfinish);
11243
11244 function unpipe() {
11245 debug('unpipe');
11246 src.unpipe(dest);
11247 }
11248
11249 // tell the dest that it's being piped to
11250 dest.emit('pipe', src);
11251
11252 // start the flow if it hasn't been started already.
11253 if (!state.flowing) {
11254 debug('pipe resume');
11255 src.resume();
11256 }
11257
11258 return dest;
11259 };
11260
11261 function pipeOnDrain(src) {
11262 return function () {
11263 var state = src._readableState;
11264 debug('pipeOnDrain', state.awaitDrain);
11265 if (state.awaitDrain) state.awaitDrain--;
11266 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11267 state.flowing = true;
11268 flow(src);
11269 }
11270 };
11271 }
11272
11273 Readable.prototype.unpipe = function (dest) {
11274 var state = this._readableState;
11275 var unpipeInfo = { hasUnpiped: false };
11276
11277 // if we're not piping anywhere, then do nothing.
11278 if (state.pipesCount === 0) return this;
11279
11280 // just one destination. most common case.
11281 if (state.pipesCount === 1) {
11282 // passed in one, but it's not the right one.
11283 if (dest && dest !== state.pipes) return this;
11284
11285 if (!dest) dest = state.pipes;
11286
11287 // got a match.
11288 state.pipes = null;
11289 state.pipesCount = 0;
11290 state.flowing = false;
11291 if (dest) dest.emit('unpipe', this, unpipeInfo);
11292 return this;
11293 }
11294
11295 // slow case. multiple pipe destinations.
11296
11297 if (!dest) {
11298 // remove all.
11299 var dests = state.pipes;
11300 var len = state.pipesCount;
11301 state.pipes = null;
11302 state.pipesCount = 0;
11303 state.flowing = false;
11304
11305 for (var i = 0; i < len; i++) {
11306 dests[i].emit('unpipe', this, unpipeInfo);
11307 }return this;
11308 }
11309
11310 // try to find the right one.
11311 var index = indexOf(state.pipes, dest);
11312 if (index === -1) return this;
11313
11314 state.pipes.splice(index, 1);
11315 state.pipesCount -= 1;
11316 if (state.pipesCount === 1) state.pipes = state.pipes[0];
11317
11318 dest.emit('unpipe', this, unpipeInfo);
11319
11320 return this;
11321 };
11322
11323 // set up data events if they are asked for
11324 // Ensure readable listeners eventually get something
11325 Readable.prototype.on = function (ev, fn) {
11326 var res = Stream.prototype.on.call(this, ev, fn);
11327
11328 if (ev === 'data') {
11329 // Start flowing on next tick if stream isn't explicitly paused
11330 if (this._readableState.flowing !== false) this.resume();
11331 } else if (ev === 'readable') {
11332 var state = this._readableState;
11333 if (!state.endEmitted && !state.readableListening) {
11334 state.readableListening = state.needReadable = true;
11335 state.emittedReadable = false;
11336 if (!state.reading) {
11337 processNextTick(nReadingNextTick, this);
11338 } else if (state.length) {
11339 emitReadable(this);
11340 }
11341 }
11342 }
11343
11344 return res;
11345 };
11346 Readable.prototype.addListener = Readable.prototype.on;
11347
11348 function nReadingNextTick(self) {
11349 debug('readable nexttick read 0');
11350 self.read(0);
11351 }
11352
11353 // pause() and resume() are remnants of the legacy readable stream API
11354 // If the user uses them, then switch into old mode.
11355 Readable.prototype.resume = function () {
11356 var state = this._readableState;
11357 if (!state.flowing) {
11358 debug('resume');
11359 state.flowing = true;
11360 resume(this, state);
11361 }
11362 return this;
11363 };
11364
11365 function resume(stream, state) {
11366 if (!state.resumeScheduled) {
11367 state.resumeScheduled = true;
11368 processNextTick(resume_, stream, state);
11369 }
11370 }
11371
11372 function resume_(stream, state) {
11373 if (!state.reading) {
11374 debug('resume read 0');
11375 stream.read(0);
11376 }
11377
11378 state.resumeScheduled = false;
11379 state.awaitDrain = 0;
11380 stream.emit('resume');
11381 flow(stream);
11382 if (state.flowing && !state.reading) stream.read(0);
11383 }
11384
11385 Readable.prototype.pause = function () {
11386 debug('call pause flowing=%j', this._readableState.flowing);
11387 if (false !== this._readableState.flowing) {
11388 debug('pause');
11389 this._readableState.flowing = false;
11390 this.emit('pause');
11391 }
11392 return this;
11393 };
11394
11395 function flow(stream) {
11396 var state = stream._readableState;
11397 debug('flow', state.flowing);
11398 while (state.flowing && stream.read() !== null) {}
11399 }
11400
11401 // wrap an old-style stream as the async data source.
11402 // This is *not* part of the readable stream interface.
11403 // It is an ugly unfortunate mess of history.
11404 Readable.prototype.wrap = function (stream) {
11405 var state = this._readableState;
11406 var paused = false;
11407
11408 var self = this;
11409 stream.on('end', function () {
11410 debug('wrapped end');
11411 if (state.decoder && !state.ended) {
11412 var chunk = state.decoder.end();
11413 if (chunk && chunk.length) self.push(chunk);
11414 }
11415
11416 self.push(null);
11417 });
11418
11419 stream.on('data', function (chunk) {
11420 debug('wrapped data');
11421 if (state.decoder) chunk = state.decoder.write(chunk);
11422
11423 // don't skip over falsy values in objectMode
11424 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11425
11426 var ret = self.push(chunk);
11427 if (!ret) {
11428 paused = true;
11429 stream.pause();
11430 }
11431 });
11432
11433 // proxy all the other methods.
11434 // important when wrapping filters and duplexes.
11435 for (var i in stream) {
11436 if (this[i] === undefined && typeof stream[i] === 'function') {
11437 this[i] = function (method) {
11438 return function () {
11439 return stream[method].apply(stream, arguments);
11440 };
11441 }(i);
11442 }
11443 }
11444
11445 // proxy certain important events.
11446 for (var n = 0; n < kProxyEvents.length; n++) {
11447 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11448 }
11449
11450 // when we try to consume some more bytes, simply unpause the
11451 // underlying stream.
11452 self._read = function (n) {
11453 debug('wrapped _read', n);
11454 if (paused) {
11455 paused = false;
11456 stream.resume();
11457 }
11458 };
11459
11460 return self;
11461 };
11462
11463 // exposed for testing purposes only.
11464 Readable._fromList = fromList;
11465
11466 // Pluck off n bytes from an array of buffers.
11467 // Length is the combined lengths of all the buffers in the list.
11468 // This function is designed to be inlinable, so please take care when making
11469 // changes to the function body.
11470 function fromList(n, state) {
11471 // nothing buffered
11472 if (state.length === 0) return null;
11473
11474 var ret;
11475 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11476 // read it all, truncate the list
11477 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);
11478 state.buffer.clear();
11479 } else {
11480 // read part of list
11481 ret = fromListPartial(n, state.buffer, state.decoder);
11482 }
11483
11484 return ret;
11485 }
11486
11487 // Extracts only enough buffered data to satisfy the amount requested.
11488 // This function is designed to be inlinable, so please take care when making
11489 // changes to the function body.
11490 function fromListPartial(n, list, hasStrings) {
11491 var ret;
11492 if (n < list.head.data.length) {
11493 // slice is the same for buffers and strings
11494 ret = list.head.data.slice(0, n);
11495 list.head.data = list.head.data.slice(n);
11496 } else if (n === list.head.data.length) {
11497 // first chunk is a perfect match
11498 ret = list.shift();
11499 } else {
11500 // result spans more than one buffer
11501 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11502 }
11503 return ret;
11504 }
11505
11506 // Copies a specified amount of characters from the list of buffered data
11507 // chunks.
11508 // This function is designed to be inlinable, so please take care when making
11509 // changes to the function body.
11510 function copyFromBufferString(n, list) {
11511 var p = list.head;
11512 var c = 1;
11513 var ret = p.data;
11514 n -= ret.length;
11515 while (p = p.next) {
11516 var str = p.data;
11517 var nb = n > str.length ? str.length : n;
11518 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11519 n -= nb;
11520 if (n === 0) {
11521 if (nb === str.length) {
11522 ++c;
11523 if (p.next) list.head = p.next;else list.head = list.tail = null;
11524 } else {
11525 list.head = p;
11526 p.data = str.slice(nb);
11527 }
11528 break;
11529 }
11530 ++c;
11531 }
11532 list.length -= c;
11533 return ret;
11534 }
11535
11536 // Copies a specified amount of bytes from the list of buffered data chunks.
11537 // This function is designed to be inlinable, so please take care when making
11538 // changes to the function body.
11539 function copyFromBuffer(n, list) {
11540 var ret = Buffer.allocUnsafe(n);
11541 var p = list.head;
11542 var c = 1;
11543 p.data.copy(ret);
11544 n -= p.data.length;
11545 while (p = p.next) {
11546 var buf = p.data;
11547 var nb = n > buf.length ? buf.length : n;
11548 buf.copy(ret, ret.length - n, 0, nb);
11549 n -= nb;
11550 if (n === 0) {
11551 if (nb === buf.length) {
11552 ++c;
11553 if (p.next) list.head = p.next;else list.head = list.tail = null;
11554 } else {
11555 list.head = p;
11556 p.data = buf.slice(nb);
11557 }
11558 break;
11559 }
11560 ++c;
11561 }
11562 list.length -= c;
11563 return ret;
11564 }
11565
11566 function endReadable(stream) {
11567 var state = stream._readableState;
11568
11569 // If we get here before consuming all the bytes, then that is a
11570 // bug in node. Should never happen.
11571 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
11572
11573 if (!state.endEmitted) {
11574 state.ended = true;
11575 processNextTick(endReadableNT, state, stream);
11576 }
11577 }
11578
11579 function endReadableNT(state, stream) {
11580 // Check that we didn't get one last unshift.
11581 if (!state.endEmitted && state.length === 0) {
11582 state.endEmitted = true;
11583 stream.readable = false;
11584 stream.emit('end');
11585 }
11586 }
11587
11588 function forEach(xs, f) {
11589 for (var i = 0, l = xs.length; i < l; i++) {
11590 f(xs[i], i);
11591 }
11592 }
11593
11594 function indexOf(xs, x) {
11595 for (var i = 0, l = xs.length; i < l; i++) {
11596 if (xs[i] === x) return i;
11597 }
11598 return -1;
11599 }
11600 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11601 },{"./_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){
11602 // Copyright Joyent, Inc. and other Node contributors.
11603 //
11604 // Permission is hereby granted, free of charge, to any person obtaining a
11605 // copy of this software and associated documentation files (the
11606 // "Software"), to deal in the Software without restriction, including
11607 // without limitation the rights to use, copy, modify, merge, publish,
11608 // distribute, sublicense, and/or sell copies of the Software, and to permit
11609 // persons to whom the Software is furnished to do so, subject to the
11610 // following conditions:
11611 //
11612 // The above copyright notice and this permission notice shall be included
11613 // in all copies or substantial portions of the Software.
11614 //
11615 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11616 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11617 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11618 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11619 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11620 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11621 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11622
11623 // a transform stream is a readable/writable stream where you do
11624 // something with the data. Sometimes it's called a "filter",
11625 // but that's not a great name for it, since that implies a thing where
11626 // some bits pass through, and others are simply ignored. (That would
11627 // be a valid example of a transform, of course.)
11628 //
11629 // While the output is causally related to the input, it's not a
11630 // necessarily symmetric or synchronous transformation. For example,
11631 // a zlib stream might take multiple plain-text writes(), and then
11632 // emit a single compressed chunk some time in the future.
11633 //
11634 // Here's how this works:
11635 //
11636 // The Transform stream has all the aspects of the readable and writable
11637 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11638 // internally, and returns false if there's a lot of pending writes
11639 // buffered up. When you call read(), that calls _read(n) until
11640 // there's enough pending readable data buffered up.
11641 //
11642 // In a transform stream, the written data is placed in a buffer. When
11643 // _read(n) is called, it transforms the queued up data, calling the
11644 // buffered _write cb's as it consumes chunks. If consuming a single
11645 // written chunk would result in multiple output chunks, then the first
11646 // outputted bit calls the readcb, and subsequent chunks just go into
11647 // the read buffer, and will cause it to emit 'readable' if necessary.
11648 //
11649 // This way, back-pressure is actually determined by the reading side,
11650 // since _read has to be called to start processing a new chunk. However,
11651 // a pathological inflate type of transform can cause excessive buffering
11652 // here. For example, imagine a stream where every byte of input is
11653 // interpreted as an integer from 0-255, and then results in that many
11654 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11655 // 1kb of data being output. In this case, you could write a very small
11656 // amount of input, and end up with a very large amount of output. In
11657 // such a pathological inflating mechanism, there'd be no way to tell
11658 // the system to stop doing the transform. A single 4MB write could
11659 // cause the system to run out of memory.
11660 //
11661 // However, even in such a pathological case, only a single written chunk
11662 // would be consumed, and then the rest would wait (un-transformed) until
11663 // the results of the previous transformed chunk were consumed.
11664
11665 'use strict';
11666
11667 module.exports = Transform;
11668
11669 var Duplex = require('./_stream_duplex');
11670
11671 /*<replacement>*/
11672 var util = require('core-util-is');
11673 util.inherits = require('inherits');
11674 /*</replacement>*/
11675
11676 util.inherits(Transform, Duplex);
11677
11678 function TransformState(stream) {
11679 this.afterTransform = function (er, data) {
11680 return afterTransform(stream, er, data);
11681 };
11682
11683 this.needTransform = false;
11684 this.transforming = false;
11685 this.writecb = null;
11686 this.writechunk = null;
11687 this.writeencoding = null;
11688 }
11689
11690 function afterTransform(stream, er, data) {
11691 var ts = stream._transformState;
11692 ts.transforming = false;
11693
11694 var cb = ts.writecb;
11695
11696 if (!cb) {
11697 return stream.emit('error', new Error('write callback called multiple times'));
11698 }
11699
11700 ts.writechunk = null;
11701 ts.writecb = null;
11702
11703 if (data !== null && data !== undefined) stream.push(data);
11704
11705 cb(er);
11706
11707 var rs = stream._readableState;
11708 rs.reading = false;
11709 if (rs.needReadable || rs.length < rs.highWaterMark) {
11710 stream._read(rs.highWaterMark);
11711 }
11712 }
11713
11714 function Transform(options) {
11715 if (!(this instanceof Transform)) return new Transform(options);
11716
11717 Duplex.call(this, options);
11718
11719 this._transformState = new TransformState(this);
11720
11721 var stream = this;
11722
11723 // start out asking for a readable event once data is transformed.
11724 this._readableState.needReadable = true;
11725
11726 // we have implemented the _read method, and done the other things
11727 // that Readable wants before the first _read call, so unset the
11728 // sync guard flag.
11729 this._readableState.sync = false;
11730
11731 if (options) {
11732 if (typeof options.transform === 'function') this._transform = options.transform;
11733
11734 if (typeof options.flush === 'function') this._flush = options.flush;
11735 }
11736
11737 // When the writable side finishes, then flush out anything remaining.
11738 this.once('prefinish', function () {
11739 if (typeof this._flush === 'function') this._flush(function (er, data) {
11740 done(stream, er, data);
11741 });else done(stream);
11742 });
11743 }
11744
11745 Transform.prototype.push = function (chunk, encoding) {
11746 this._transformState.needTransform = false;
11747 return Duplex.prototype.push.call(this, chunk, encoding);
11748 };
11749
11750 // This is the part where you do stuff!
11751 // override this function in implementation classes.
11752 // 'chunk' is an input chunk.
11753 //
11754 // Call `push(newChunk)` to pass along transformed output
11755 // to the readable side. You may call 'push' zero or more times.
11756 //
11757 // Call `cb(err)` when you are done with this chunk. If you pass
11758 // an error, then that'll put the hurt on the whole operation. If you
11759 // never call cb(), then you'll never get another chunk.
11760 Transform.prototype._transform = function (chunk, encoding, cb) {
11761 throw new Error('_transform() is not implemented');
11762 };
11763
11764 Transform.prototype._write = function (chunk, encoding, cb) {
11765 var ts = this._transformState;
11766 ts.writecb = cb;
11767 ts.writechunk = chunk;
11768 ts.writeencoding = encoding;
11769 if (!ts.transforming) {
11770 var rs = this._readableState;
11771 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11772 }
11773 };
11774
11775 // Doesn't matter what the args are here.
11776 // _transform does all the work.
11777 // That we got here means that the readable side wants more data.
11778 Transform.prototype._read = function (n) {
11779 var ts = this._transformState;
11780
11781 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11782 ts.transforming = true;
11783 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11784 } else {
11785 // mark that we need a transform, so that any data that comes in
11786 // will get processed, now that we've asked for it.
11787 ts.needTransform = true;
11788 }
11789 };
11790
11791 Transform.prototype._destroy = function (err, cb) {
11792 var _this = this;
11793
11794 Duplex.prototype._destroy.call(this, err, function (err2) {
11795 cb(err2);
11796 _this.emit('close');
11797 });
11798 };
11799
11800 function done(stream, er, data) {
11801 if (er) return stream.emit('error', er);
11802
11803 if (data !== null && data !== undefined) stream.push(data);
11804
11805 // if there's nothing in the write buffer, then that means
11806 // that nothing more will ever be provided
11807 var ws = stream._writableState;
11808 var ts = stream._transformState;
11809
11810 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
11811
11812 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11813
11814 return stream.push(null);
11815 }
11816 },{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11817 (function (process,global){
11818 // Copyright Joyent, Inc. and other Node contributors.
11819 //
11820 // Permission is hereby granted, free of charge, to any person obtaining a
11821 // copy of this software and associated documentation files (the
11822 // "Software"), to deal in the Software without restriction, including
11823 // without limitation the rights to use, copy, modify, merge, publish,
11824 // distribute, sublicense, and/or sell copies of the Software, and to permit
11825 // persons to whom the Software is furnished to do so, subject to the
11826 // following conditions:
11827 //
11828 // The above copyright notice and this permission notice shall be included
11829 // in all copies or substantial portions of the Software.
11830 //
11831 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11832 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11833 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11834 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11835 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11836 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11837 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11838
11839 // A bit simpler than readable streams.
11840 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11841 // the drain event emission and buffering.
11842
11843 'use strict';
11844
11845 /*<replacement>*/
11846
11847 var processNextTick = require('process-nextick-args');
11848 /*</replacement>*/
11849
11850 module.exports = Writable;
11851
11852 /* <replacement> */
11853 function WriteReq(chunk, encoding, cb) {
11854 this.chunk = chunk;
11855 this.encoding = encoding;
11856 this.callback = cb;
11857 this.next = null;
11858 }
11859
11860 // It seems a linked list but it is not
11861 // there will be only 2 of these for each stream
11862 function CorkedRequest(state) {
11863 var _this = this;
11864
11865 this.next = null;
11866 this.entry = null;
11867 this.finish = function () {
11868 onCorkedFinish(_this, state);
11869 };
11870 }
11871 /* </replacement> */
11872
11873 /*<replacement>*/
11874 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11875 /*</replacement>*/
11876
11877 /*<replacement>*/
11878 var Duplex;
11879 /*</replacement>*/
11880
11881 Writable.WritableState = WritableState;
11882
11883 /*<replacement>*/
11884 var util = require('core-util-is');
11885 util.inherits = require('inherits');
11886 /*</replacement>*/
11887
11888 /*<replacement>*/
11889 var internalUtil = {
11890 deprecate: require('util-deprecate')
11891 };
11892 /*</replacement>*/
11893
11894 /*<replacement>*/
11895 var Stream = require('./internal/streams/stream');
11896 /*</replacement>*/
11897
11898 /*<replacement>*/
11899 var Buffer = require('safe-buffer').Buffer;
11900 var OurUint8Array = global.Uint8Array || function () {};
11901 function _uint8ArrayToBuffer(chunk) {
11902 return Buffer.from(chunk);
11903 }
11904 function _isUint8Array(obj) {
11905 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11906 }
11907 /*</replacement>*/
11908
11909 var destroyImpl = require('./internal/streams/destroy');
11910
11911 util.inherits(Writable, Stream);
11912
11913 function nop() {}
11914
11915 function WritableState(options, stream) {
11916 Duplex = Duplex || require('./_stream_duplex');
11917
11918 options = options || {};
11919
11920 // object stream flag to indicate whether or not this stream
11921 // contains buffers or objects.
11922 this.objectMode = !!options.objectMode;
11923
11924 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11925
11926 // the point at which write() starts returning false
11927 // Note: 0 is a valid value, means that we always return false if
11928 // the entire buffer is not flushed immediately on write()
11929 var hwm = options.highWaterMark;
11930 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11931 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
11932
11933 // cast to ints.
11934 this.highWaterMark = Math.floor(this.highWaterMark);
11935
11936 // if _final has been called
11937 this.finalCalled = false;
11938
11939 // drain event flag.
11940 this.needDrain = false;
11941 // at the start of calling end()
11942 this.ending = false;
11943 // when end() has been called, and returned
11944 this.ended = false;
11945 // when 'finish' is emitted
11946 this.finished = false;
11947
11948 // has it been destroyed
11949 this.destroyed = false;
11950
11951 // should we decode strings into buffers before passing to _write?
11952 // this is here so that some node-core streams can optimize string
11953 // handling at a lower level.
11954 var noDecode = options.decodeStrings === false;
11955 this.decodeStrings = !noDecode;
11956
11957 // Crypto is kind of old and crusty. Historically, its default string
11958 // encoding is 'binary' so we have to make this configurable.
11959 // Everything else in the universe uses 'utf8', though.
11960 this.defaultEncoding = options.defaultEncoding || 'utf8';
11961
11962 // not an actual buffer we keep track of, but a measurement
11963 // of how much we're waiting to get pushed to some underlying
11964 // socket or file.
11965 this.length = 0;
11966
11967 // a flag to see when we're in the middle of a write.
11968 this.writing = false;
11969
11970 // when true all writes will be buffered until .uncork() call
11971 this.corked = 0;
11972
11973 // a flag to be able to tell if the onwrite cb is called immediately,
11974 // or on a later tick. We set this to true at first, because any
11975 // actions that shouldn't happen until "later" should generally also
11976 // not happen before the first write call.
11977 this.sync = true;
11978
11979 // a flag to know if we're processing previously buffered items, which
11980 // may call the _write() callback in the same tick, so that we don't
11981 // end up in an overlapped onwrite situation.
11982 this.bufferProcessing = false;
11983
11984 // the callback that's passed to _write(chunk,cb)
11985 this.onwrite = function (er) {
11986 onwrite(stream, er);
11987 };
11988
11989 // the callback that the user supplies to write(chunk,encoding,cb)
11990 this.writecb = null;
11991
11992 // the amount that is being written when _write is called.
11993 this.writelen = 0;
11994
11995 this.bufferedRequest = null;
11996 this.lastBufferedRequest = null;
11997
11998 // number of pending user-supplied write callbacks
11999 // this must be 0 before 'finish' can be emitted
12000 this.pendingcb = 0;
12001
12002 // emit prefinish if the only thing we're waiting for is _write cbs
12003 // This is relevant for synchronous Transform streams
12004 this.prefinished = false;
12005
12006 // True if the error was already emitted and should not be thrown again
12007 this.errorEmitted = false;
12008
12009 // count buffered requests
12010 this.bufferedRequestCount = 0;
12011
12012 // allocate the first CorkedRequest, there is always
12013 // one allocated and free to use, and we maintain at most two
12014 this.corkedRequestsFree = new CorkedRequest(this);
12015 }
12016
12017 WritableState.prototype.getBuffer = function getBuffer() {
12018 var current = this.bufferedRequest;
12019 var out = [];
12020 while (current) {
12021 out.push(current);
12022 current = current.next;
12023 }
12024 return out;
12025 };
12026
12027 (function () {
12028 try {
12029 Object.defineProperty(WritableState.prototype, 'buffer', {
12030 get: internalUtil.deprecate(function () {
12031 return this.getBuffer();
12032 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12033 });
12034 } catch (_) {}
12035 })();
12036
12037 // Test _writableState for inheritance to account for Duplex streams,
12038 // whose prototype chain only points to Readable.
12039 var realHasInstance;
12040 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12041 realHasInstance = Function.prototype[Symbol.hasInstance];
12042 Object.defineProperty(Writable, Symbol.hasInstance, {
12043 value: function (object) {
12044 if (realHasInstance.call(this, object)) return true;
12045
12046 return object && object._writableState instanceof WritableState;
12047 }
12048 });
12049 } else {
12050 realHasInstance = function (object) {
12051 return object instanceof this;
12052 };
12053 }
12054
12055 function Writable(options) {
12056 Duplex = Duplex || require('./_stream_duplex');
12057
12058 // Writable ctor is applied to Duplexes, too.
12059 // `realHasInstance` is necessary because using plain `instanceof`
12060 // would return false, as no `_writableState` property is attached.
12061
12062 // Trying to use the custom `instanceof` for Writable here will also break the
12063 // Node.js LazyTransform implementation, which has a non-trivial getter for
12064 // `_writableState` that would lead to infinite recursion.
12065 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12066 return new Writable(options);
12067 }
12068
12069 this._writableState = new WritableState(options, this);
12070
12071 // legacy.
12072 this.writable = true;
12073
12074 if (options) {
12075 if (typeof options.write === 'function') this._write = options.write;
12076
12077 if (typeof options.writev === 'function') this._writev = options.writev;
12078
12079 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12080
12081 if (typeof options.final === 'function') this._final = options.final;
12082 }
12083
12084 Stream.call(this);
12085 }
12086
12087 // Otherwise people can pipe Writable streams, which is just wrong.
12088 Writable.prototype.pipe = function () {
12089 this.emit('error', new Error('Cannot pipe, not readable'));
12090 };
12091
12092 function writeAfterEnd(stream, cb) {
12093 var er = new Error('write after end');
12094 // TODO: defer error events consistently everywhere, not just the cb
12095 stream.emit('error', er);
12096 processNextTick(cb, er);
12097 }
12098
12099 // Checks that a user-supplied chunk is valid, especially for the particular
12100 // mode the stream is in. Currently this means that `null` is never accepted
12101 // and undefined/non-string values are only allowed in object mode.
12102 function validChunk(stream, state, chunk, cb) {
12103 var valid = true;
12104 var er = false;
12105
12106 if (chunk === null) {
12107 er = new TypeError('May not write null values to stream');
12108 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12109 er = new TypeError('Invalid non-string/buffer chunk');
12110 }
12111 if (er) {
12112 stream.emit('error', er);
12113 processNextTick(cb, er);
12114 valid = false;
12115 }
12116 return valid;
12117 }
12118
12119 Writable.prototype.write = function (chunk, encoding, cb) {
12120 var state = this._writableState;
12121 var ret = false;
12122 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12123
12124 if (isBuf && !Buffer.isBuffer(chunk)) {
12125 chunk = _uint8ArrayToBuffer(chunk);
12126 }
12127
12128 if (typeof encoding === 'function') {
12129 cb = encoding;
12130 encoding = null;
12131 }
12132
12133 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12134
12135 if (typeof cb !== 'function') cb = nop;
12136
12137 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12138 state.pendingcb++;
12139 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12140 }
12141
12142 return ret;
12143 };
12144
12145 Writable.prototype.cork = function () {
12146 var state = this._writableState;
12147
12148 state.corked++;
12149 };
12150
12151 Writable.prototype.uncork = function () {
12152 var state = this._writableState;
12153
12154 if (state.corked) {
12155 state.corked--;
12156
12157 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12158 }
12159 };
12160
12161 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12162 // node::ParseEncoding() requires lower case.
12163 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12164 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);
12165 this._writableState.defaultEncoding = encoding;
12166 return this;
12167 };
12168
12169 function decodeChunk(state, chunk, encoding) {
12170 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12171 chunk = Buffer.from(chunk, encoding);
12172 }
12173 return chunk;
12174 }
12175
12176 // if we're already writing something, then just put this
12177 // in the queue, and wait our turn. Otherwise, call _write
12178 // If we return false, then we need a drain event, so set that flag.
12179 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12180 if (!isBuf) {
12181 var newChunk = decodeChunk(state, chunk, encoding);
12182 if (chunk !== newChunk) {
12183 isBuf = true;
12184 encoding = 'buffer';
12185 chunk = newChunk;
12186 }
12187 }
12188 var len = state.objectMode ? 1 : chunk.length;
12189
12190 state.length += len;
12191
12192 var ret = state.length < state.highWaterMark;
12193 // we must ensure that previous needDrain will not be reset to false.
12194 if (!ret) state.needDrain = true;
12195
12196 if (state.writing || state.corked) {
12197 var last = state.lastBufferedRequest;
12198 state.lastBufferedRequest = {
12199 chunk: chunk,
12200 encoding: encoding,
12201 isBuf: isBuf,
12202 callback: cb,
12203 next: null
12204 };
12205 if (last) {
12206 last.next = state.lastBufferedRequest;
12207 } else {
12208 state.bufferedRequest = state.lastBufferedRequest;
12209 }
12210 state.bufferedRequestCount += 1;
12211 } else {
12212 doWrite(stream, state, false, len, chunk, encoding, cb);
12213 }
12214
12215 return ret;
12216 }
12217
12218 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12219 state.writelen = len;
12220 state.writecb = cb;
12221 state.writing = true;
12222 state.sync = true;
12223 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12224 state.sync = false;
12225 }
12226
12227 function onwriteError(stream, state, sync, er, cb) {
12228 --state.pendingcb;
12229
12230 if (sync) {
12231 // defer the callback if we are being called synchronously
12232 // to avoid piling up things on the stack
12233 processNextTick(cb, er);
12234 // this can emit finish, and it will always happen
12235 // after error
12236 processNextTick(finishMaybe, stream, state);
12237 stream._writableState.errorEmitted = true;
12238 stream.emit('error', er);
12239 } else {
12240 // the caller expect this to happen before if
12241 // it is async
12242 cb(er);
12243 stream._writableState.errorEmitted = true;
12244 stream.emit('error', er);
12245 // this can emit finish, but finish must
12246 // always follow error
12247 finishMaybe(stream, state);
12248 }
12249 }
12250
12251 function onwriteStateUpdate(state) {
12252 state.writing = false;
12253 state.writecb = null;
12254 state.length -= state.writelen;
12255 state.writelen = 0;
12256 }
12257
12258 function onwrite(stream, er) {
12259 var state = stream._writableState;
12260 var sync = state.sync;
12261 var cb = state.writecb;
12262
12263 onwriteStateUpdate(state);
12264
12265 if (er) onwriteError(stream, state, sync, er, cb);else {
12266 // Check if we're actually ready to finish, but don't emit yet
12267 var finished = needFinish(state);
12268
12269 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12270 clearBuffer(stream, state);
12271 }
12272
12273 if (sync) {
12274 /*<replacement>*/
12275 asyncWrite(afterWrite, stream, state, finished, cb);
12276 /*</replacement>*/
12277 } else {
12278 afterWrite(stream, state, finished, cb);
12279 }
12280 }
12281 }
12282
12283 function afterWrite(stream, state, finished, cb) {
12284 if (!finished) onwriteDrain(stream, state);
12285 state.pendingcb--;
12286 cb();
12287 finishMaybe(stream, state);
12288 }
12289
12290 // Must force callback to be called on nextTick, so that we don't
12291 // emit 'drain' before the write() consumer gets the 'false' return
12292 // value, and has a chance to attach a 'drain' listener.
12293 function onwriteDrain(stream, state) {
12294 if (state.length === 0 && state.needDrain) {
12295 state.needDrain = false;
12296 stream.emit('drain');
12297 }
12298 }
12299
12300 // if there's something in the buffer waiting, then process it
12301 function clearBuffer(stream, state) {
12302 state.bufferProcessing = true;
12303 var entry = state.bufferedRequest;
12304
12305 if (stream._writev && entry && entry.next) {
12306 // Fast case, write everything using _writev()
12307 var l = state.bufferedRequestCount;
12308 var buffer = new Array(l);
12309 var holder = state.corkedRequestsFree;
12310 holder.entry = entry;
12311
12312 var count = 0;
12313 var allBuffers = true;
12314 while (entry) {
12315 buffer[count] = entry;
12316 if (!entry.isBuf) allBuffers = false;
12317 entry = entry.next;
12318 count += 1;
12319 }
12320 buffer.allBuffers = allBuffers;
12321
12322 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12323
12324 // doWrite is almost always async, defer these to save a bit of time
12325 // as the hot path ends with doWrite
12326 state.pendingcb++;
12327 state.lastBufferedRequest = null;
12328 if (holder.next) {
12329 state.corkedRequestsFree = holder.next;
12330 holder.next = null;
12331 } else {
12332 state.corkedRequestsFree = new CorkedRequest(state);
12333 }
12334 } else {
12335 // Slow case, write chunks one-by-one
12336 while (entry) {
12337 var chunk = entry.chunk;
12338 var encoding = entry.encoding;
12339 var cb = entry.callback;
12340 var len = state.objectMode ? 1 : chunk.length;
12341
12342 doWrite(stream, state, false, len, chunk, encoding, cb);
12343 entry = entry.next;
12344 // if we didn't call the onwrite immediately, then
12345 // it means that we need to wait until it does.
12346 // also, that means that the chunk and cb are currently
12347 // being processed, so move the buffer counter past them.
12348 if (state.writing) {
12349 break;
12350 }
12351 }
12352
12353 if (entry === null) state.lastBufferedRequest = null;
12354 }
12355
12356 state.bufferedRequestCount = 0;
12357 state.bufferedRequest = entry;
12358 state.bufferProcessing = false;
12359 }
12360
12361 Writable.prototype._write = function (chunk, encoding, cb) {
12362 cb(new Error('_write() is not implemented'));
12363 };
12364
12365 Writable.prototype._writev = null;
12366
12367 Writable.prototype.end = function (chunk, encoding, cb) {
12368 var state = this._writableState;
12369
12370 if (typeof chunk === 'function') {
12371 cb = chunk;
12372 chunk = null;
12373 encoding = null;
12374 } else if (typeof encoding === 'function') {
12375 cb = encoding;
12376 encoding = null;
12377 }
12378
12379 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12380
12381 // .end() fully uncorks
12382 if (state.corked) {
12383 state.corked = 1;
12384 this.uncork();
12385 }
12386
12387 // ignore unnecessary end() calls.
12388 if (!state.ending && !state.finished) endWritable(this, state, cb);
12389 };
12390
12391 function needFinish(state) {
12392 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12393 }
12394 function callFinal(stream, state) {
12395 stream._final(function (err) {
12396 state.pendingcb--;
12397 if (err) {
12398 stream.emit('error', err);
12399 }
12400 state.prefinished = true;
12401 stream.emit('prefinish');
12402 finishMaybe(stream, state);
12403 });
12404 }
12405 function prefinish(stream, state) {
12406 if (!state.prefinished && !state.finalCalled) {
12407 if (typeof stream._final === 'function') {
12408 state.pendingcb++;
12409 state.finalCalled = true;
12410 processNextTick(callFinal, stream, state);
12411 } else {
12412 state.prefinished = true;
12413 stream.emit('prefinish');
12414 }
12415 }
12416 }
12417
12418 function finishMaybe(stream, state) {
12419 var need = needFinish(state);
12420 if (need) {
12421 prefinish(stream, state);
12422 if (state.pendingcb === 0) {
12423 state.finished = true;
12424 stream.emit('finish');
12425 }
12426 }
12427 return need;
12428 }
12429
12430 function endWritable(stream, state, cb) {
12431 state.ending = true;
12432 finishMaybe(stream, state);
12433 if (cb) {
12434 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12435 }
12436 state.ended = true;
12437 stream.writable = false;
12438 }
12439
12440 function onCorkedFinish(corkReq, state, err) {
12441 var entry = corkReq.entry;
12442 corkReq.entry = null;
12443 while (entry) {
12444 var cb = entry.callback;
12445 state.pendingcb--;
12446 cb(err);
12447 entry = entry.next;
12448 }
12449 if (state.corkedRequestsFree) {
12450 state.corkedRequestsFree.next = corkReq;
12451 } else {
12452 state.corkedRequestsFree = corkReq;
12453 }
12454 }
12455
12456 Object.defineProperty(Writable.prototype, 'destroyed', {
12457 get: function () {
12458 if (this._writableState === undefined) {
12459 return false;
12460 }
12461 return this._writableState.destroyed;
12462 },
12463 set: function (value) {
12464 // we ignore the value if the stream
12465 // has not been initialized yet
12466 if (!this._writableState) {
12467 return;
12468 }
12469
12470 // backward compatibility, the user is explicitly
12471 // managing destroyed
12472 this._writableState.destroyed = value;
12473 }
12474 });
12475
12476 Writable.prototype.destroy = destroyImpl.destroy;
12477 Writable.prototype._undestroy = destroyImpl.undestroy;
12478 Writable.prototype._destroy = function (err, cb) {
12479 this.end();
12480 cb(err);
12481 };
12482 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12483 },{"./_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){
12484 'use strict';
12485
12486 /*<replacement>*/
12487
12488 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12489
12490 var Buffer = require('safe-buffer').Buffer;
12491 /*</replacement>*/
12492
12493 function copyBuffer(src, target, offset) {
12494 src.copy(target, offset);
12495 }
12496
12497 module.exports = function () {
12498 function BufferList() {
12499 _classCallCheck(this, BufferList);
12500
12501 this.head = null;
12502 this.tail = null;
12503 this.length = 0;
12504 }
12505
12506 BufferList.prototype.push = function push(v) {
12507 var entry = { data: v, next: null };
12508 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12509 this.tail = entry;
12510 ++this.length;
12511 };
12512
12513 BufferList.prototype.unshift = function unshift(v) {
12514 var entry = { data: v, next: this.head };
12515 if (this.length === 0) this.tail = entry;
12516 this.head = entry;
12517 ++this.length;
12518 };
12519
12520 BufferList.prototype.shift = function shift() {
12521 if (this.length === 0) return;
12522 var ret = this.head.data;
12523 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12524 --this.length;
12525 return ret;
12526 };
12527
12528 BufferList.prototype.clear = function clear() {
12529 this.head = this.tail = null;
12530 this.length = 0;
12531 };
12532
12533 BufferList.prototype.join = function join(s) {
12534 if (this.length === 0) return '';
12535 var p = this.head;
12536 var ret = '' + p.data;
12537 while (p = p.next) {
12538 ret += s + p.data;
12539 }return ret;
12540 };
12541
12542 BufferList.prototype.concat = function concat(n) {
12543 if (this.length === 0) return Buffer.alloc(0);
12544 if (this.length === 1) return this.head.data;
12545 var ret = Buffer.allocUnsafe(n >>> 0);
12546 var p = this.head;
12547 var i = 0;
12548 while (p) {
12549 copyBuffer(p.data, ret, i);
12550 i += p.data.length;
12551 p = p.next;
12552 }
12553 return ret;
12554 };
12555
12556 return BufferList;
12557 }();
12558 },{"safe-buffer":26}],20:[function(require,module,exports){
12559 'use strict';
12560
12561 /*<replacement>*/
12562
12563 var processNextTick = require('process-nextick-args');
12564 /*</replacement>*/
12565
12566 // undocumented cb() API, needed for core, not for public API
12567 function destroy(err, cb) {
12568 var _this = this;
12569
12570 var readableDestroyed = this._readableState && this._readableState.destroyed;
12571 var writableDestroyed = this._writableState && this._writableState.destroyed;
12572
12573 if (readableDestroyed || writableDestroyed) {
12574 if (cb) {
12575 cb(err);
12576 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12577 processNextTick(emitErrorNT, this, err);
12578 }
12579 return;
12580 }
12581
12582 // we set destroyed to true before firing error callbacks in order
12583 // to make it re-entrance safe in case destroy() is called within callbacks
12584
12585 if (this._readableState) {
12586 this._readableState.destroyed = true;
12587 }
12588
12589 // if this is a duplex stream mark the writable part as destroyed as well
12590 if (this._writableState) {
12591 this._writableState.destroyed = true;
12592 }
12593
12594 this._destroy(err || null, function (err) {
12595 if (!cb && err) {
12596 processNextTick(emitErrorNT, _this, err);
12597 if (_this._writableState) {
12598 _this._writableState.errorEmitted = true;
12599 }
12600 } else if (cb) {
12601 cb(err);
12602 }
12603 });
12604 }
12605
12606 function undestroy() {
12607 if (this._readableState) {
12608 this._readableState.destroyed = false;
12609 this._readableState.reading = false;
12610 this._readableState.ended = false;
12611 this._readableState.endEmitted = false;
12612 }
12613
12614 if (this._writableState) {
12615 this._writableState.destroyed = false;
12616 this._writableState.ended = false;
12617 this._writableState.ending = false;
12618 this._writableState.finished = false;
12619 this._writableState.errorEmitted = false;
12620 }
12621 }
12622
12623 function emitErrorNT(self, err) {
12624 self.emit('error', err);
12625 }
12626
12627 module.exports = {
12628 destroy: destroy,
12629 undestroy: undestroy
12630 };
12631 },{"process-nextick-args":11}],21:[function(require,module,exports){
12632 module.exports = require('events').EventEmitter;
12633
12634 },{"events":6}],22:[function(require,module,exports){
12635 module.exports = require('./readable').PassThrough
12636
12637 },{"./readable":23}],23:[function(require,module,exports){
12638 exports = module.exports = require('./lib/_stream_readable.js');
12639 exports.Stream = exports;
12640 exports.Readable = exports;
12641 exports.Writable = require('./lib/_stream_writable.js');
12642 exports.Duplex = require('./lib/_stream_duplex.js');
12643 exports.Transform = require('./lib/_stream_transform.js');
12644 exports.PassThrough = require('./lib/_stream_passthrough.js');
12645
12646 },{"./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){
12647 module.exports = require('./readable').Transform
12648
12649 },{"./readable":23}],25:[function(require,module,exports){
12650 module.exports = require('./lib/_stream_writable.js');
12651
12652 },{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12653 /* eslint-disable node/no-deprecated-api */
12654 var buffer = require('buffer')
12655 var Buffer = buffer.Buffer
12656
12657 // alternative to using Object.keys for old browsers
12658 function copyProps (src, dst) {
12659 for (var key in src) {
12660 dst[key] = src[key]
12661 }
12662 }
12663 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12664 module.exports = buffer
12665 } else {
12666 // Copy properties from require('buffer')
12667 copyProps(buffer, exports)
12668 exports.Buffer = SafeBuffer
12669 }
12670
12671 function SafeBuffer (arg, encodingOrOffset, length) {
12672 return Buffer(arg, encodingOrOffset, length)
12673 }
12674
12675 // Copy static methods from Buffer
12676 copyProps(Buffer, SafeBuffer)
12677
12678 SafeBuffer.from = function (arg, encodingOrOffset, length) {
12679 if (typeof arg === 'number') {
12680 throw new TypeError('Argument must not be a number')
12681 }
12682 return Buffer(arg, encodingOrOffset, length)
12683 }
12684
12685 SafeBuffer.alloc = function (size, fill, encoding) {
12686 if (typeof size !== 'number') {
12687 throw new TypeError('Argument must be a number')
12688 }
12689 var buf = Buffer(size)
12690 if (fill !== undefined) {
12691 if (typeof encoding === 'string') {
12692 buf.fill(fill, encoding)
12693 } else {
12694 buf.fill(fill)
12695 }
12696 } else {
12697 buf.fill(0)
12698 }
12699 return buf
12700 }
12701
12702 SafeBuffer.allocUnsafe = function (size) {
12703 if (typeof size !== 'number') {
12704 throw new TypeError('Argument must be a number')
12705 }
12706 return Buffer(size)
12707 }
12708
12709 SafeBuffer.allocUnsafeSlow = function (size) {
12710 if (typeof size !== 'number') {
12711 throw new TypeError('Argument must be a number')
12712 }
12713 return buffer.SlowBuffer(size)
12714 }
12715
12716 },{"buffer":4}],27:[function(require,module,exports){
12717 // Copyright Joyent, Inc. and other Node contributors.
12718 //
12719 // Permission is hereby granted, free of charge, to any person obtaining a
12720 // copy of this software and associated documentation files (the
12721 // "Software"), to deal in the Software without restriction, including
12722 // without limitation the rights to use, copy, modify, merge, publish,
12723 // distribute, sublicense, and/or sell copies of the Software, and to permit
12724 // persons to whom the Software is furnished to do so, subject to the
12725 // following conditions:
12726 //
12727 // The above copyright notice and this permission notice shall be included
12728 // in all copies or substantial portions of the Software.
12729 //
12730 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12731 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12732 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12733 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12734 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12735 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12736 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12737
12738 module.exports = Stream;
12739
12740 var EE = require('events').EventEmitter;
12741 var inherits = require('inherits');
12742
12743 inherits(Stream, EE);
12744 Stream.Readable = require('readable-stream/readable.js');
12745 Stream.Writable = require('readable-stream/writable.js');
12746 Stream.Duplex = require('readable-stream/duplex.js');
12747 Stream.Transform = require('readable-stream/transform.js');
12748 Stream.PassThrough = require('readable-stream/passthrough.js');
12749
12750 // Backwards-compat with node 0.4.x
12751 Stream.Stream = Stream;
12752
12753
12754
12755 // old-style streams. Note that the pipe method (the only relevant
12756 // part of this class) is overridden in the Readable class.
12757
12758 function Stream() {
12759 EE.call(this);
12760 }
12761
12762 Stream.prototype.pipe = function(dest, options) {
12763 var source = this;
12764
12765 function ondata(chunk) {
12766 if (dest.writable) {
12767 if (false === dest.write(chunk) && source.pause) {
12768 source.pause();
12769 }
12770 }
12771 }
12772
12773 source.on('data', ondata);
12774
12775 function ondrain() {
12776 if (source.readable && source.resume) {
12777 source.resume();
12778 }
12779 }
12780
12781 dest.on('drain', ondrain);
12782
12783 // If the 'end' option is not supplied, dest.end() will be called when
12784 // source gets the 'end' or 'close' events. Only dest.end() once.
12785 if (!dest._isStdio && (!options || options.end !== false)) {
12786 source.on('end', onend);
12787 source.on('close', onclose);
12788 }
12789
12790 var didOnEnd = false;
12791 function onend() {
12792 if (didOnEnd) return;
12793 didOnEnd = true;
12794
12795 dest.end();
12796 }
12797
12798
12799 function onclose() {
12800 if (didOnEnd) return;
12801 didOnEnd = true;
12802
12803 if (typeof dest.destroy === 'function') dest.destroy();
12804 }
12805
12806 // don't leave dangling pipes when there are errors.
12807 function onerror(er) {
12808 cleanup();
12809 if (EE.listenerCount(this, 'error') === 0) {
12810 throw er; // Unhandled stream error in pipe.
12811 }
12812 }
12813
12814 source.on('error', onerror);
12815 dest.on('error', onerror);
12816
12817 // remove all the event listeners that were added.
12818 function cleanup() {
12819 source.removeListener('data', ondata);
12820 dest.removeListener('drain', ondrain);
12821
12822 source.removeListener('end', onend);
12823 source.removeListener('close', onclose);
12824
12825 source.removeListener('error', onerror);
12826 dest.removeListener('error', onerror);
12827
12828 source.removeListener('end', cleanup);
12829 source.removeListener('close', cleanup);
12830
12831 dest.removeListener('close', cleanup);
12832 }
12833
12834 source.on('end', cleanup);
12835 source.on('close', cleanup);
12836
12837 dest.on('close', cleanup);
12838
12839 dest.emit('pipe', source);
12840
12841 // Allow for unix-like usage: A.pipe(B).pipe(C)
12842 return dest;
12843 };
12844
12845 },{"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){
12846 'use strict';
12847
12848 var Buffer = require('safe-buffer').Buffer;
12849
12850 var isEncoding = Buffer.isEncoding || function (encoding) {
12851 encoding = '' + encoding;
12852 switch (encoding && encoding.toLowerCase()) {
12853 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':
12854 return true;
12855 default:
12856 return false;
12857 }
12858 };
12859
12860 function _normalizeEncoding(enc) {
12861 if (!enc) return 'utf8';
12862 var retried;
12863 while (true) {
12864 switch (enc) {
12865 case 'utf8':
12866 case 'utf-8':
12867 return 'utf8';
12868 case 'ucs2':
12869 case 'ucs-2':
12870 case 'utf16le':
12871 case 'utf-16le':
12872 return 'utf16le';
12873 case 'latin1':
12874 case 'binary':
12875 return 'latin1';
12876 case 'base64':
12877 case 'ascii':
12878 case 'hex':
12879 return enc;
12880 default:
12881 if (retried) return; // undefined
12882 enc = ('' + enc).toLowerCase();
12883 retried = true;
12884 }
12885 }
12886 };
12887
12888 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12889 // modules monkey-patch it to support additional encodings
12890 function normalizeEncoding(enc) {
12891 var nenc = _normalizeEncoding(enc);
12892 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12893 return nenc || enc;
12894 }
12895
12896 // StringDecoder provides an interface for efficiently splitting a series of
12897 // buffers into a series of JS strings without breaking apart multi-byte
12898 // characters.
12899 exports.StringDecoder = StringDecoder;
12900 function StringDecoder(encoding) {
12901 this.encoding = normalizeEncoding(encoding);
12902 var nb;
12903 switch (this.encoding) {
12904 case 'utf16le':
12905 this.text = utf16Text;
12906 this.end = utf16End;
12907 nb = 4;
12908 break;
12909 case 'utf8':
12910 this.fillLast = utf8FillLast;
12911 nb = 4;
12912 break;
12913 case 'base64':
12914 this.text = base64Text;
12915 this.end = base64End;
12916 nb = 3;
12917 break;
12918 default:
12919 this.write = simpleWrite;
12920 this.end = simpleEnd;
12921 return;
12922 }
12923 this.lastNeed = 0;
12924 this.lastTotal = 0;
12925 this.lastChar = Buffer.allocUnsafe(nb);
12926 }
12927
12928 StringDecoder.prototype.write = function (buf) {
12929 if (buf.length === 0) return '';
12930 var r;
12931 var i;
12932 if (this.lastNeed) {
12933 r = this.fillLast(buf);
12934 if (r === undefined) return '';
12935 i = this.lastNeed;
12936 this.lastNeed = 0;
12937 } else {
12938 i = 0;
12939 }
12940 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12941 return r || '';
12942 };
12943
12944 StringDecoder.prototype.end = utf8End;
12945
12946 // Returns only complete characters in a Buffer
12947 StringDecoder.prototype.text = utf8Text;
12948
12949 // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12950 StringDecoder.prototype.fillLast = function (buf) {
12951 if (this.lastNeed <= buf.length) {
12952 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12953 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
12954 }
12955 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12956 this.lastNeed -= buf.length;
12957 };
12958
12959 // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12960 // continuation byte.
12961 function utf8CheckByte(byte) {
12962 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;
12963 return -1;
12964 }
12965
12966 // Checks at most 3 bytes at the end of a Buffer in order to detect an
12967 // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12968 // needed to complete the UTF-8 character (if applicable) are returned.
12969 function utf8CheckIncomplete(self, buf, i) {
12970 var j = buf.length - 1;
12971 if (j < i) return 0;
12972 var nb = utf8CheckByte(buf[j]);
12973 if (nb >= 0) {
12974 if (nb > 0) self.lastNeed = nb - 1;
12975 return nb;
12976 }
12977 if (--j < i) return 0;
12978 nb = utf8CheckByte(buf[j]);
12979 if (nb >= 0) {
12980 if (nb > 0) self.lastNeed = nb - 2;
12981 return nb;
12982 }
12983 if (--j < i) return 0;
12984 nb = utf8CheckByte(buf[j]);
12985 if (nb >= 0) {
12986 if (nb > 0) {
12987 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
12988 }
12989 return nb;
12990 }
12991 return 0;
12992 }
12993
12994 // Validates as many continuation bytes for a multi-byte UTF-8 character as
12995 // needed or are available. If we see a non-continuation byte where we expect
12996 // one, we "replace" the validated continuation bytes we've seen so far with
12997 // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
12998 // behavior. The continuation byte check is included three times in the case
12999 // where all of the continuation bytes for a character exist in the same buffer.
13000 // It is also done this way as a slight performance increase instead of using a
13001 // loop.
13002 function utf8CheckExtraBytes(self, buf, p) {
13003 if ((buf[0] & 0xC0) !== 0x80) {
13004 self.lastNeed = 0;
13005 return '\ufffd'.repeat(p);
13006 }
13007 if (self.lastNeed > 1 && buf.length > 1) {
13008 if ((buf[1] & 0xC0) !== 0x80) {
13009 self.lastNeed = 1;
13010 return '\ufffd'.repeat(p + 1);
13011 }
13012 if (self.lastNeed > 2 && buf.length > 2) {
13013 if ((buf[2] & 0xC0) !== 0x80) {
13014 self.lastNeed = 2;
13015 return '\ufffd'.repeat(p + 2);
13016 }
13017 }
13018 }
13019 }
13020
13021 // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
13022 function utf8FillLast(buf) {
13023 var p = this.lastTotal - this.lastNeed;
13024 var r = utf8CheckExtraBytes(this, buf, p);
13025 if (r !== undefined) return r;
13026 if (this.lastNeed <= buf.length) {
13027 buf.copy(this.lastChar, p, 0, this.lastNeed);
13028 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
13029 }
13030 buf.copy(this.lastChar, p, 0, buf.length);
13031 this.lastNeed -= buf.length;
13032 }
13033
13034 // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13035 // partial character, the character's bytes are buffered until the required
13036 // number of bytes are available.
13037 function utf8Text(buf, i) {
13038 var total = utf8CheckIncomplete(this, buf, i);
13039 if (!this.lastNeed) return buf.toString('utf8', i);
13040 this.lastTotal = total;
13041 var end = buf.length - (total - this.lastNeed);
13042 buf.copy(this.lastChar, 0, end);
13043 return buf.toString('utf8', i, end);
13044 }
13045
13046 // For UTF-8, a replacement character for each buffered byte of a (partial)
13047 // character needs to be added to the output.
13048 function utf8End(buf) {
13049 var r = buf && buf.length ? this.write(buf) : '';
13050 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13051 return r;
13052 }
13053
13054 // UTF-16LE typically needs two bytes per character, but even if we have an even
13055 // number of bytes available, we need to check if we end on a leading/high
13056 // surrogate. In that case, we need to wait for the next two bytes in order to
13057 // decode the last character properly.
13058 function utf16Text(buf, i) {
13059 if ((buf.length - i) % 2 === 0) {
13060 var r = buf.toString('utf16le', i);
13061 if (r) {
13062 var c = r.charCodeAt(r.length - 1);
13063 if (c >= 0xD800 && c <= 0xDBFF) {
13064 this.lastNeed = 2;
13065 this.lastTotal = 4;
13066 this.lastChar[0] = buf[buf.length - 2];
13067 this.lastChar[1] = buf[buf.length - 1];
13068 return r.slice(0, -1);
13069 }
13070 }
13071 return r;
13072 }
13073 this.lastNeed = 1;
13074 this.lastTotal = 2;
13075 this.lastChar[0] = buf[buf.length - 1];
13076 return buf.toString('utf16le', i, buf.length - 1);
13077 }
13078
13079 // For UTF-16LE we do not explicitly append special replacement characters if we
13080 // end on a partial character, we simply let v8 handle that.
13081 function utf16End(buf) {
13082 var r = buf && buf.length ? this.write(buf) : '';
13083 if (this.lastNeed) {
13084 var end = this.lastTotal - this.lastNeed;
13085 return r + this.lastChar.toString('utf16le', 0, end);
13086 }
13087 return r;
13088 }
13089
13090 function base64Text(buf, i) {
13091 var n = (buf.length - i) % 3;
13092 if (n === 0) return buf.toString('base64', i);
13093 this.lastNeed = 3 - n;
13094 this.lastTotal = 3;
13095 if (n === 1) {
13096 this.lastChar[0] = buf[buf.length - 1];
13097 } else {
13098 this.lastChar[0] = buf[buf.length - 2];
13099 this.lastChar[1] = buf[buf.length - 1];
13100 }
13101 return buf.toString('base64', i, buf.length - n);
13102 }
13103
13104 function base64End(buf) {
13105 var r = buf && buf.length ? this.write(buf) : '';
13106 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13107 return r;
13108 }
13109
13110 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13111 function simpleWrite(buf) {
13112 return buf.toString(this.encoding);
13113 }
13114
13115 function simpleEnd(buf) {
13116 return buf && buf.length ? this.write(buf) : '';
13117 }
13118 },{"safe-buffer":26}],29:[function(require,module,exports){
13119 (function (global){
13120
13121 /**
13122 * Module exports.
13123 */
13124
13125 module.exports = deprecate;
13126
13127 /**
13128 * Mark that a method should not be used.
13129 * Returns a modified function which warns once by default.
13130 *
13131 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13132 *
13133 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13134 * will throw an Error when invoked.
13135 *
13136 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13137 * will invoke `console.trace()` instead of `console.error()`.
13138 *
13139 * @param {Function} fn - the function to deprecate
13140 * @param {String} msg - the string to print to the console when `fn` is invoked
13141 * @returns {Function} a new "deprecated" version of `fn`
13142 * @api public
13143 */
13144
13145 function deprecate (fn, msg) {
13146 if (config('noDeprecation')) {
13147 return fn;
13148 }
13149
13150 var warned = false;
13151 function deprecated() {
13152 if (!warned) {
13153 if (config('throwDeprecation')) {
13154 throw new Error(msg);
13155 } else if (config('traceDeprecation')) {
13156 console.trace(msg);
13157 } else {
13158 console.warn(msg);
13159 }
13160 warned = true;
13161 }
13162 return fn.apply(this, arguments);
13163 }
13164
13165 return deprecated;
13166 }
13167
13168 /**
13169 * Checks `localStorage` for boolean values for the given `name`.
13170 *
13171 * @param {String} name
13172 * @returns {Boolean}
13173 * @api private
13174 */
13175
13176 function config (name) {
13177 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13178 try {
13179 if (!global.localStorage) return false;
13180 } catch (_) {
13181 return false;
13182 }
13183 var val = global.localStorage[name];
13184 if (null == val) return false;
13185 return String(val).toLowerCase() === 'true';
13186 }
13187
13188 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13189 },{}],30:[function(require,module,exports){
13190 arguments[4][8][0].apply(exports,arguments)
13191 },{"dup":8}],31:[function(require,module,exports){
13192 module.exports = function isBuffer(arg) {
13193 return arg && typeof arg === 'object'
13194 && typeof arg.copy === 'function'
13195 && typeof arg.fill === 'function'
13196 && typeof arg.readUInt8 === 'function';
13197 }
13198 },{}],32:[function(require,module,exports){
13199 (function (process,global){
13200 // Copyright Joyent, Inc. and other Node contributors.
13201 //
13202 // Permission is hereby granted, free of charge, to any person obtaining a
13203 // copy of this software and associated documentation files (the
13204 // "Software"), to deal in the Software without restriction, including
13205 // without limitation the rights to use, copy, modify, merge, publish,
13206 // distribute, sublicense, and/or sell copies of the Software, and to permit
13207 // persons to whom the Software is furnished to do so, subject to the
13208 // following conditions:
13209 //
13210 // The above copyright notice and this permission notice shall be included
13211 // in all copies or substantial portions of the Software.
13212 //
13213 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13214 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13215 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13216 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13217 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13218 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13219 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13220
13221 var formatRegExp = /%[sdj%]/g;
13222 exports.format = function(f) {
13223 if (!isString(f)) {
13224 var objects = [];
13225 for (var i = 0; i < arguments.length; i++) {
13226 objects.push(inspect(arguments[i]));
13227 }
13228 return objects.join(' ');
13229 }
13230
13231 var i = 1;
13232 var args = arguments;
13233 var len = args.length;
13234 var str = String(f).replace(formatRegExp, function(x) {
13235 if (x === '%%') return '%';
13236 if (i >= len) return x;
13237 switch (x) {
13238 case '%s': return String(args[i++]);
13239 case '%d': return Number(args[i++]);
13240 case '%j':
13241 try {
13242 return JSON.stringify(args[i++]);
13243 } catch (_) {
13244 return '[Circular]';
13245 }
13246 default:
13247 return x;
13248 }
13249 });
13250 for (var x = args[i]; i < len; x = args[++i]) {
13251 if (isNull(x) || !isObject(x)) {
13252 str += ' ' + x;
13253 } else {
13254 str += ' ' + inspect(x);
13255 }
13256 }
13257 return str;
13258 };
13259
13260
13261 // Mark that a method should not be used.
13262 // Returns a modified function which warns once by default.
13263 // If --no-deprecation is set, then it is a no-op.
13264 exports.deprecate = function(fn, msg) {
13265 // Allow for deprecating things in the process of starting up.
13266 if (isUndefined(global.process)) {
13267 return function() {
13268 return exports.deprecate(fn, msg).apply(this, arguments);
13269 };
13270 }
13271
13272 if (process.noDeprecation === true) {
13273 return fn;
13274 }
13275
13276 var warned = false;
13277 function deprecated() {
13278 if (!warned) {
13279 if (process.throwDeprecation) {
13280 throw new Error(msg);
13281 } else if (process.traceDeprecation) {
13282 console.trace(msg);
13283 } else {
13284 console.error(msg);
13285 }
13286 warned = true;
13287 }
13288 return fn.apply(this, arguments);
13289 }
13290
13291 return deprecated;
13292 };
13293
13294
13295 var debugs = {};
13296 var debugEnviron;
13297 exports.debuglog = function(set) {
13298 if (isUndefined(debugEnviron))
13299 debugEnviron = process.env.NODE_DEBUG || '';
13300 set = set.toUpperCase();
13301 if (!debugs[set]) {
13302 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13303 var pid = process.pid;
13304 debugs[set] = function() {
13305 var msg = exports.format.apply(exports, arguments);
13306 console.error('%s %d: %s', set, pid, msg);
13307 };
13308 } else {
13309 debugs[set] = function() {};
13310 }
13311 }
13312 return debugs[set];
13313 };
13314
13315
13316 /**
13317 * Echos the value of a value. Trys to print the value out
13318 * in the best way possible given the different types.
13319 *
13320 * @param {Object} obj The object to print out.
13321 * @param {Object} opts Optional options object that alters the output.
13322 */
13323 /* legacy: obj, showHidden, depth, colors*/
13324 function inspect(obj, opts) {
13325 // default options
13326 var ctx = {
13327 seen: [],
13328 stylize: stylizeNoColor
13329 };
13330 // legacy...
13331 if (arguments.length >= 3) ctx.depth = arguments[2];
13332 if (arguments.length >= 4) ctx.colors = arguments[3];
13333 if (isBoolean(opts)) {
13334 // legacy...
13335 ctx.showHidden = opts;
13336 } else if (opts) {
13337 // got an "options" object
13338 exports._extend(ctx, opts);
13339 }
13340 // set default options
13341 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13342 if (isUndefined(ctx.depth)) ctx.depth = 2;
13343 if (isUndefined(ctx.colors)) ctx.colors = false;
13344 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13345 if (ctx.colors) ctx.stylize = stylizeWithColor;
13346 return formatValue(ctx, obj, ctx.depth);
13347 }
13348 exports.inspect = inspect;
13349
13350
13351 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13352 inspect.colors = {
13353 'bold' : [1, 22],
13354 'italic' : [3, 23],
13355 'underline' : [4, 24],
13356 'inverse' : [7, 27],
13357 'white' : [37, 39],
13358 'grey' : [90, 39],
13359 'black' : [30, 39],
13360 'blue' : [34, 39],
13361 'cyan' : [36, 39],
13362 'green' : [32, 39],
13363 'magenta' : [35, 39],
13364 'red' : [31, 39],
13365 'yellow' : [33, 39]
13366 };
13367
13368 // Don't use 'blue' not visible on cmd.exe
13369 inspect.styles = {
13370 'special': 'cyan',
13371 'number': 'yellow',
13372 'boolean': 'yellow',
13373 'undefined': 'grey',
13374 'null': 'bold',
13375 'string': 'green',
13376 'date': 'magenta',
13377 // "name": intentionally not styling
13378 'regexp': 'red'
13379 };
13380
13381
13382 function stylizeWithColor(str, styleType) {
13383 var style = inspect.styles[styleType];
13384
13385 if (style) {
13386 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13387 '\u001b[' + inspect.colors[style][1] + 'm';
13388 } else {
13389 return str;
13390 }
13391 }
13392
13393
13394 function stylizeNoColor(str, styleType) {
13395 return str;
13396 }
13397
13398
13399 function arrayToHash(array) {
13400 var hash = {};
13401
13402 array.forEach(function(val, idx) {
13403 hash[val] = true;
13404 });
13405
13406 return hash;
13407 }
13408
13409
13410 function formatValue(ctx, value, recurseTimes) {
13411 // Provide a hook for user-specified inspect functions.
13412 // Check that value is an object with an inspect function on it
13413 if (ctx.customInspect &&
13414 value &&
13415 isFunction(value.inspect) &&
13416 // Filter out the util module, it's inspect function is special
13417 value.inspect !== exports.inspect &&
13418 // Also filter out any prototype objects using the circular check.
13419 !(value.constructor && value.constructor.prototype === value)) {
13420 var ret = value.inspect(recurseTimes, ctx);
13421 if (!isString(ret)) {
13422 ret = formatValue(ctx, ret, recurseTimes);
13423 }
13424 return ret;
13425 }
13426
13427 // Primitive types cannot have properties
13428 var primitive = formatPrimitive(ctx, value);
13429 if (primitive) {
13430 return primitive;
13431 }
13432
13433 // Look up the keys of the object.
13434 var keys = Object.keys(value);
13435 var visibleKeys = arrayToHash(keys);
13436
13437 if (ctx.showHidden) {
13438 keys = Object.getOwnPropertyNames(value);
13439 }
13440
13441 // IE doesn't make error fields non-enumerable
13442 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13443 if (isError(value)
13444 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13445 return formatError(value);
13446 }
13447
13448 // Some type of object without properties can be shortcutted.
13449 if (keys.length === 0) {
13450 if (isFunction(value)) {
13451 var name = value.name ? ': ' + value.name : '';
13452 return ctx.stylize('[Function' + name + ']', 'special');
13453 }
13454 if (isRegExp(value)) {
13455 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13456 }
13457 if (isDate(value)) {
13458 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13459 }
13460 if (isError(value)) {
13461 return formatError(value);
13462 }
13463 }
13464
13465 var base = '', array = false, braces = ['{', '}'];
13466
13467 // Make Array say that they are Array
13468 if (isArray(value)) {
13469 array = true;
13470 braces = ['[', ']'];
13471 }
13472
13473 // Make functions say that they are functions
13474 if (isFunction(value)) {
13475 var n = value.name ? ': ' + value.name : '';
13476 base = ' [Function' + n + ']';
13477 }
13478
13479 // Make RegExps say that they are RegExps
13480 if (isRegExp(value)) {
13481 base = ' ' + RegExp.prototype.toString.call(value);
13482 }
13483
13484 // Make dates with properties first say the date
13485 if (isDate(value)) {
13486 base = ' ' + Date.prototype.toUTCString.call(value);
13487 }
13488
13489 // Make error with message first say the error
13490 if (isError(value)) {
13491 base = ' ' + formatError(value);
13492 }
13493
13494 if (keys.length === 0 && (!array || value.length == 0)) {
13495 return braces[0] + base + braces[1];
13496 }
13497
13498 if (recurseTimes < 0) {
13499 if (isRegExp(value)) {
13500 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13501 } else {
13502 return ctx.stylize('[Object]', 'special');
13503 }
13504 }
13505
13506 ctx.seen.push(value);
13507
13508 var output;
13509 if (array) {
13510 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13511 } else {
13512 output = keys.map(function(key) {
13513 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13514 });
13515 }
13516
13517 ctx.seen.pop();
13518
13519 return reduceToSingleString(output, base, braces);
13520 }
13521
13522
13523 function formatPrimitive(ctx, value) {
13524 if (isUndefined(value))
13525 return ctx.stylize('undefined', 'undefined');
13526 if (isString(value)) {
13527 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13528 .replace(/'/g, "\\'")
13529 .replace(/\\"/g, '"') + '\'';
13530 return ctx.stylize(simple, 'string');
13531 }
13532 if (isNumber(value))
13533 return ctx.stylize('' + value, 'number');
13534 if (isBoolean(value))
13535 return ctx.stylize('' + value, 'boolean');
13536 // For some reason typeof null is "object", so special case here.
13537 if (isNull(value))
13538 return ctx.stylize('null', 'null');
13539 }
13540
13541
13542 function formatError(value) {
13543 return '[' + Error.prototype.toString.call(value) + ']';
13544 }
13545
13546
13547 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13548 var output = [];
13549 for (var i = 0, l = value.length; i < l; ++i) {
13550 if (hasOwnProperty(value, String(i))) {
13551 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13552 String(i), true));
13553 } else {
13554 output.push('');
13555 }
13556 }
13557 keys.forEach(function(key) {
13558 if (!key.match(/^\d+$/)) {
13559 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13560 key, true));
13561 }
13562 });
13563 return output;
13564 }
13565
13566
13567 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13568 var name, str, desc;
13569 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13570 if (desc.get) {
13571 if (desc.set) {
13572 str = ctx.stylize('[Getter/Setter]', 'special');
13573 } else {
13574 str = ctx.stylize('[Getter]', 'special');
13575 }
13576 } else {
13577 if (desc.set) {
13578 str = ctx.stylize('[Setter]', 'special');
13579 }
13580 }
13581 if (!hasOwnProperty(visibleKeys, key)) {
13582 name = '[' + key + ']';
13583 }
13584 if (!str) {
13585 if (ctx.seen.indexOf(desc.value) < 0) {
13586 if (isNull(recurseTimes)) {
13587 str = formatValue(ctx, desc.value, null);
13588 } else {
13589 str = formatValue(ctx, desc.value, recurseTimes - 1);
13590 }
13591 if (str.indexOf('\n') > -1) {
13592 if (array) {
13593 str = str.split('\n').map(function(line) {
13594 return ' ' + line;
13595 }).join('\n').substr(2);
13596 } else {
13597 str = '\n' + str.split('\n').map(function(line) {
13598 return ' ' + line;
13599 }).join('\n');
13600 }
13601 }
13602 } else {
13603 str = ctx.stylize('[Circular]', 'special');
13604 }
13605 }
13606 if (isUndefined(name)) {
13607 if (array && key.match(/^\d+$/)) {
13608 return str;
13609 }
13610 name = JSON.stringify('' + key);
13611 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13612 name = name.substr(1, name.length - 2);
13613 name = ctx.stylize(name, 'name');
13614 } else {
13615 name = name.replace(/'/g, "\\'")
13616 .replace(/\\"/g, '"')
13617 .replace(/(^"|"$)/g, "'");
13618 name = ctx.stylize(name, 'string');
13619 }
13620 }
13621
13622 return name + ': ' + str;
13623 }
13624
13625
13626 function reduceToSingleString(output, base, braces) {
13627 var numLinesEst = 0;
13628 var length = output.reduce(function(prev, cur) {
13629 numLinesEst++;
13630 if (cur.indexOf('\n') >= 0) numLinesEst++;
13631 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13632 }, 0);
13633
13634 if (length > 60) {
13635 return braces[0] +
13636 (base === '' ? '' : base + '\n ') +
13637 ' ' +
13638 output.join(',\n ') +
13639 ' ' +
13640 braces[1];
13641 }
13642
13643 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13644 }
13645
13646
13647 // NOTE: These type checking functions intentionally don't use `instanceof`
13648 // because it is fragile and can be easily faked with `Object.create()`.
13649 function isArray(ar) {
13650 return Array.isArray(ar);
13651 }
13652 exports.isArray = isArray;
13653
13654 function isBoolean(arg) {
13655 return typeof arg === 'boolean';
13656 }
13657 exports.isBoolean = isBoolean;
13658
13659 function isNull(arg) {
13660 return arg === null;
13661 }
13662 exports.isNull = isNull;
13663
13664 function isNullOrUndefined(arg) {
13665 return arg == null;
13666 }
13667 exports.isNullOrUndefined = isNullOrUndefined;
13668
13669 function isNumber(arg) {
13670 return typeof arg === 'number';
13671 }
13672 exports.isNumber = isNumber;
13673
13674 function isString(arg) {
13675 return typeof arg === 'string';
13676 }
13677 exports.isString = isString;
13678
13679 function isSymbol(arg) {
13680 return typeof arg === 'symbol';
13681 }
13682 exports.isSymbol = isSymbol;
13683
13684 function isUndefined(arg) {
13685 return arg === void 0;
13686 }
13687 exports.isUndefined = isUndefined;
13688
13689 function isRegExp(re) {
13690 return isObject(re) && objectToString(re) === '[object RegExp]';
13691 }
13692 exports.isRegExp = isRegExp;
13693
13694 function isObject(arg) {
13695 return typeof arg === 'object' && arg !== null;
13696 }
13697 exports.isObject = isObject;
13698
13699 function isDate(d) {
13700 return isObject(d) && objectToString(d) === '[object Date]';
13701 }
13702 exports.isDate = isDate;
13703
13704 function isError(e) {
13705 return isObject(e) &&
13706 (objectToString(e) === '[object Error]' || e instanceof Error);
13707 }
13708 exports.isError = isError;
13709
13710 function isFunction(arg) {
13711 return typeof arg === 'function';
13712 }
13713 exports.isFunction = isFunction;
13714
13715 function isPrimitive(arg) {
13716 return arg === null ||
13717 typeof arg === 'boolean' ||
13718 typeof arg === 'number' ||
13719 typeof arg === 'string' ||
13720 typeof arg === 'symbol' || // ES6 symbol
13721 typeof arg === 'undefined';
13722 }
13723 exports.isPrimitive = isPrimitive;
13724
13725 exports.isBuffer = require('./support/isBuffer');
13726
13727 function objectToString(o) {
13728 return Object.prototype.toString.call(o);
13729 }
13730
13731
13732 function pad(n) {
13733 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13734 }
13735
13736
13737 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13738 'Oct', 'Nov', 'Dec'];
13739
13740 // 26 Feb 16:19:34
13741 function timestamp() {
13742 var d = new Date();
13743 var time = [pad(d.getHours()),
13744 pad(d.getMinutes()),
13745 pad(d.getSeconds())].join(':');
13746 return [d.getDate(), months[d.getMonth()], time].join(' ');
13747 }
13748
13749
13750 // log is just a thin wrapper to console.log that prepends a timestamp
13751 exports.log = function() {
13752 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13753 };
13754
13755
13756 /**
13757 * Inherit the prototype methods from one constructor into another.
13758 *
13759 * The Function.prototype.inherits from lang.js rewritten as a standalone
13760 * function (not on Function.prototype). NOTE: If this file is to be loaded
13761 * during bootstrapping this function needs to be rewritten using some native
13762 * functions as prototype setup using normal JavaScript does not work as
13763 * expected during bootstrapping (see mirror.js in r114903).
13764 *
13765 * @param {function} ctor Constructor function which needs to inherit the
13766 * prototype.
13767 * @param {function} superCtor Constructor function to inherit prototype from.
13768 */
13769 exports.inherits = require('inherits');
13770
13771 exports._extend = function(origin, add) {
13772 // Don't do anything if add isn't an object
13773 if (!add || !isObject(add)) return origin;
13774
13775 var keys = Object.keys(add);
13776 var i = keys.length;
13777 while (i--) {
13778 origin[keys[i]] = add[keys[i]];
13779 }
13780 return origin;
13781 };
13782
13783 function hasOwnProperty(obj, prop) {
13784 return Object.prototype.hasOwnProperty.call(obj, prop);
13785 }
13786
13787 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13788 },{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13789 module.exports = {
13790 base58: require('bs58'),
13791 bitcoin: require('bitcoinjs-lib'),
13792 ecurve: require('ecurve'),
13793 BigInteger: require('bigi')
13794 }
13795
13796 },{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13797 // base-x encoding
13798 // Forked from https://github.com/cryptocoinjs/bs58
13799 // Originally written by Mike Hearn for BitcoinJ
13800 // Copyright (c) 2011 Google Inc
13801 // Ported to JavaScript by Stefan Thomas
13802 // Merged Buffer refactorings from base58-native by Stephen Pair
13803 // Copyright (c) 2013 BitPay Inc
13804
13805 var Buffer = require('safe-buffer').Buffer
13806
13807 module.exports = function base (ALPHABET) {
13808 var ALPHABET_MAP = {}
13809 var BASE = ALPHABET.length
13810 var LEADER = ALPHABET.charAt(0)
13811
13812 // pre-compute lookup table
13813 for (var z = 0; z < ALPHABET.length; z++) {
13814 var x = ALPHABET.charAt(z)
13815
13816 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13817 ALPHABET_MAP[x] = z
13818 }
13819
13820 function encode (source) {
13821 if (source.length === 0) return ''
13822
13823 var digits = [0]
13824 for (var i = 0; i < source.length; ++i) {
13825 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13826 carry += digits[j] << 8
13827 digits[j] = carry % BASE
13828 carry = (carry / BASE) | 0
13829 }
13830
13831 while (carry > 0) {
13832 digits.push(carry % BASE)
13833 carry = (carry / BASE) | 0
13834 }
13835 }
13836
13837 var string = ''
13838
13839 // deal with leading zeros
13840 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13841 // convert digits to a string
13842 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
13843
13844 return string
13845 }
13846
13847 function decodeUnsafe (string) {
13848 if (string.length === 0) return Buffer.allocUnsafe(0)
13849
13850 var bytes = [0]
13851 for (var i = 0; i < string.length; i++) {
13852 var value = ALPHABET_MAP[string[i]]
13853 if (value === undefined) return
13854
13855 for (var j = 0, carry = value; j < bytes.length; ++j) {
13856 carry += bytes[j] * BASE
13857 bytes[j] = carry & 0xff
13858 carry >>= 8
13859 }
13860
13861 while (carry > 0) {
13862 bytes.push(carry & 0xff)
13863 carry >>= 8
13864 }
13865 }
13866
13867 // deal with leading zeros
13868 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13869 bytes.push(0)
13870 }
13871
13872 return Buffer.from(bytes.reverse())
13873 }
13874
13875 function decode (string) {
13876 var buffer = decodeUnsafe(string)
13877 if (buffer) return buffer
13878
13879 throw new Error('Non-base' + BASE + ' character')
13880 }
13881
13882 return {
13883 encode: encode,
13884 decodeUnsafe: decodeUnsafe,
13885 decode: decode
13886 }
13887 }
13888
13889 },{"safe-buffer":98}],35:[function(require,module,exports){
13890 // (public) Constructor
13891 function BigInteger(a, b, c) {
13892 if (!(this instanceof BigInteger))
13893 return new BigInteger(a, b, c)
13894
13895 if (a != null) {
13896 if ("number" == typeof a) this.fromNumber(a, b, c)
13897 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13898 else this.fromString(a, b)
13899 }
13900 }
13901
13902 var proto = BigInteger.prototype
13903
13904 // duck-typed isBigInteger
13905 proto.__bigi = require('../package.json').version
13906 BigInteger.isBigInteger = function (obj, check_ver) {
13907 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13908 }
13909
13910 // Bits per digit
13911 var dbits
13912
13913 // am: Compute w_j += (x*this_i), propagate carries,
13914 // c is initial carry, returns final carry.
13915 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13916 // We need to select the fastest one that works in this environment.
13917
13918 // am1: use a single mult and divide to get the high bits,
13919 // max digit bits should be 26 because
13920 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13921 function am1(i, x, w, j, c, n) {
13922 while (--n >= 0) {
13923 var v = x * this[i++] + w[j] + c
13924 c = Math.floor(v / 0x4000000)
13925 w[j++] = v & 0x3ffffff
13926 }
13927 return c
13928 }
13929 // am2 avoids a big mult-and-extract completely.
13930 // Max digit bits should be <= 30 because we do bitwise ops
13931 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13932 function am2(i, x, w, j, c, n) {
13933 var xl = x & 0x7fff,
13934 xh = x >> 15
13935 while (--n >= 0) {
13936 var l = this[i] & 0x7fff
13937 var h = this[i++] >> 15
13938 var m = xh * l + h * xl
13939 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13940 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13941 w[j++] = l & 0x3fffffff
13942 }
13943 return c
13944 }
13945 // Alternately, set max digit bits to 28 since some
13946 // browsers slow down when dealing with 32-bit numbers.
13947 function am3(i, x, w, j, c, n) {
13948 var xl = x & 0x3fff,
13949 xh = x >> 14
13950 while (--n >= 0) {
13951 var l = this[i] & 0x3fff
13952 var h = this[i++] >> 14
13953 var m = xh * l + h * xl
13954 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13955 c = (l >> 28) + (m >> 14) + xh * h
13956 w[j++] = l & 0xfffffff
13957 }
13958 return c
13959 }
13960
13961 // wtf?
13962 BigInteger.prototype.am = am1
13963 dbits = 26
13964
13965 BigInteger.prototype.DB = dbits
13966 BigInteger.prototype.DM = ((1 << dbits) - 1)
13967 var DV = BigInteger.prototype.DV = (1 << dbits)
13968
13969 var BI_FP = 52
13970 BigInteger.prototype.FV = Math.pow(2, BI_FP)
13971 BigInteger.prototype.F1 = BI_FP - dbits
13972 BigInteger.prototype.F2 = 2 * dbits - BI_FP
13973
13974 // Digit conversions
13975 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
13976 var BI_RC = new Array()
13977 var rr, vv
13978 rr = "0".charCodeAt(0)
13979 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
13980 rr = "a".charCodeAt(0)
13981 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13982 rr = "A".charCodeAt(0)
13983 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13984
13985 function int2char(n) {
13986 return BI_RM.charAt(n)
13987 }
13988
13989 function intAt(s, i) {
13990 var c = BI_RC[s.charCodeAt(i)]
13991 return (c == null) ? -1 : c
13992 }
13993
13994 // (protected) copy this to r
13995 function bnpCopyTo(r) {
13996 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
13997 r.t = this.t
13998 r.s = this.s
13999 }
14000
14001 // (protected) set from integer value x, -DV <= x < DV
14002 function bnpFromInt(x) {
14003 this.t = 1
14004 this.s = (x < 0) ? -1 : 0
14005 if (x > 0) this[0] = x
14006 else if (x < -1) this[0] = x + DV
14007 else this.t = 0
14008 }
14009
14010 // return bigint initialized to value
14011 function nbv(i) {
14012 var r = new BigInteger()
14013 r.fromInt(i)
14014 return r
14015 }
14016
14017 // (protected) set from string and radix
14018 function bnpFromString(s, b) {
14019 var self = this
14020
14021 var k
14022 if (b == 16) k = 4
14023 else if (b == 8) k = 3
14024 else if (b == 256) k = 8; // byte array
14025 else if (b == 2) k = 1
14026 else if (b == 32) k = 5
14027 else if (b == 4) k = 2
14028 else {
14029 self.fromRadix(s, b)
14030 return
14031 }
14032 self.t = 0
14033 self.s = 0
14034 var i = s.length,
14035 mi = false,
14036 sh = 0
14037 while (--i >= 0) {
14038 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14039 if (x < 0) {
14040 if (s.charAt(i) == "-") mi = true
14041 continue
14042 }
14043 mi = false
14044 if (sh == 0)
14045 self[self.t++] = x
14046 else if (sh + k > self.DB) {
14047 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14048 self[self.t++] = (x >> (self.DB - sh))
14049 } else
14050 self[self.t - 1] |= x << sh
14051 sh += k
14052 if (sh >= self.DB) sh -= self.DB
14053 }
14054 if (k == 8 && (s[0] & 0x80) != 0) {
14055 self.s = -1
14056 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14057 }
14058 self.clamp()
14059 if (mi) BigInteger.ZERO.subTo(self, self)
14060 }
14061
14062 // (protected) clamp off excess high words
14063 function bnpClamp() {
14064 var c = this.s & this.DM
14065 while (this.t > 0 && this[this.t - 1] == c)--this.t
14066 }
14067
14068 // (public) return string representation in given radix
14069 function bnToString(b) {
14070 var self = this
14071 if (self.s < 0) return "-" + self.negate()
14072 .toString(b)
14073 var k
14074 if (b == 16) k = 4
14075 else if (b == 8) k = 3
14076 else if (b == 2) k = 1
14077 else if (b == 32) k = 5
14078 else if (b == 4) k = 2
14079 else return self.toRadix(b)
14080 var km = (1 << k) - 1,
14081 d, m = false,
14082 r = "",
14083 i = self.t
14084 var p = self.DB - (i * self.DB) % k
14085 if (i-- > 0) {
14086 if (p < self.DB && (d = self[i] >> p) > 0) {
14087 m = true
14088 r = int2char(d)
14089 }
14090 while (i >= 0) {
14091 if (p < k) {
14092 d = (self[i] & ((1 << p) - 1)) << (k - p)
14093 d |= self[--i] >> (p += self.DB - k)
14094 } else {
14095 d = (self[i] >> (p -= k)) & km
14096 if (p <= 0) {
14097 p += self.DB
14098 --i
14099 }
14100 }
14101 if (d > 0) m = true
14102 if (m) r += int2char(d)
14103 }
14104 }
14105 return m ? r : "0"
14106 }
14107
14108 // (public) -this
14109 function bnNegate() {
14110 var r = new BigInteger()
14111 BigInteger.ZERO.subTo(this, r)
14112 return r
14113 }
14114
14115 // (public) |this|
14116 function bnAbs() {
14117 return (this.s < 0) ? this.negate() : this
14118 }
14119
14120 // (public) return + if this > a, - if this < a, 0 if equal
14121 function bnCompareTo(a) {
14122 var r = this.s - a.s
14123 if (r != 0) return r
14124 var i = this.t
14125 r = i - a.t
14126 if (r != 0) return (this.s < 0) ? -r : r
14127 while (--i >= 0)
14128 if ((r = this[i] - a[i]) != 0) return r
14129 return 0
14130 }
14131
14132 // returns bit length of the integer x
14133 function nbits(x) {
14134 var r = 1,
14135 t
14136 if ((t = x >>> 16) != 0) {
14137 x = t
14138 r += 16
14139 }
14140 if ((t = x >> 8) != 0) {
14141 x = t
14142 r += 8
14143 }
14144 if ((t = x >> 4) != 0) {
14145 x = t
14146 r += 4
14147 }
14148 if ((t = x >> 2) != 0) {
14149 x = t
14150 r += 2
14151 }
14152 if ((t = x >> 1) != 0) {
14153 x = t
14154 r += 1
14155 }
14156 return r
14157 }
14158
14159 // (public) return the number of bits in "this"
14160 function bnBitLength() {
14161 if (this.t <= 0) return 0
14162 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14163 }
14164
14165 // (public) return the number of bytes in "this"
14166 function bnByteLength() {
14167 return this.bitLength() >> 3
14168 }
14169
14170 // (protected) r = this << n*DB
14171 function bnpDLShiftTo(n, r) {
14172 var i
14173 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14174 for (i = n - 1; i >= 0; --i) r[i] = 0
14175 r.t = this.t + n
14176 r.s = this.s
14177 }
14178
14179 // (protected) r = this >> n*DB
14180 function bnpDRShiftTo(n, r) {
14181 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14182 r.t = Math.max(this.t - n, 0)
14183 r.s = this.s
14184 }
14185
14186 // (protected) r = this << n
14187 function bnpLShiftTo(n, r) {
14188 var self = this
14189 var bs = n % self.DB
14190 var cbs = self.DB - bs
14191 var bm = (1 << cbs) - 1
14192 var ds = Math.floor(n / self.DB),
14193 c = (self.s << bs) & self.DM,
14194 i
14195 for (i = self.t - 1; i >= 0; --i) {
14196 r[i + ds + 1] = (self[i] >> cbs) | c
14197 c = (self[i] & bm) << bs
14198 }
14199 for (i = ds - 1; i >= 0; --i) r[i] = 0
14200 r[ds] = c
14201 r.t = self.t + ds + 1
14202 r.s = self.s
14203 r.clamp()
14204 }
14205
14206 // (protected) r = this >> n
14207 function bnpRShiftTo(n, r) {
14208 var self = this
14209 r.s = self.s
14210 var ds = Math.floor(n / self.DB)
14211 if (ds >= self.t) {
14212 r.t = 0
14213 return
14214 }
14215 var bs = n % self.DB
14216 var cbs = self.DB - bs
14217 var bm = (1 << bs) - 1
14218 r[0] = self[ds] >> bs
14219 for (var i = ds + 1; i < self.t; ++i) {
14220 r[i - ds - 1] |= (self[i] & bm) << cbs
14221 r[i - ds] = self[i] >> bs
14222 }
14223 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14224 r.t = self.t - ds
14225 r.clamp()
14226 }
14227
14228 // (protected) r = this - a
14229 function bnpSubTo(a, r) {
14230 var self = this
14231 var i = 0,
14232 c = 0,
14233 m = Math.min(a.t, self.t)
14234 while (i < m) {
14235 c += self[i] - a[i]
14236 r[i++] = c & self.DM
14237 c >>= self.DB
14238 }
14239 if (a.t < self.t) {
14240 c -= a.s
14241 while (i < self.t) {
14242 c += self[i]
14243 r[i++] = c & self.DM
14244 c >>= self.DB
14245 }
14246 c += self.s
14247 } else {
14248 c += self.s
14249 while (i < a.t) {
14250 c -= a[i]
14251 r[i++] = c & self.DM
14252 c >>= self.DB
14253 }
14254 c -= a.s
14255 }
14256 r.s = (c < 0) ? -1 : 0
14257 if (c < -1) r[i++] = self.DV + c
14258 else if (c > 0) r[i++] = c
14259 r.t = i
14260 r.clamp()
14261 }
14262
14263 // (protected) r = this * a, r != this,a (HAC 14.12)
14264 // "this" should be the larger one if appropriate.
14265 function bnpMultiplyTo(a, r) {
14266 var x = this.abs(),
14267 y = a.abs()
14268 var i = x.t
14269 r.t = i + y.t
14270 while (--i >= 0) r[i] = 0
14271 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14272 r.s = 0
14273 r.clamp()
14274 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14275 }
14276
14277 // (protected) r = this^2, r != this (HAC 14.16)
14278 function bnpSquareTo(r) {
14279 var x = this.abs()
14280 var i = r.t = 2 * x.t
14281 while (--i >= 0) r[i] = 0
14282 for (i = 0; i < x.t - 1; ++i) {
14283 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14284 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14285 r[i + x.t] -= x.DV
14286 r[i + x.t + 1] = 1
14287 }
14288 }
14289 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14290 r.s = 0
14291 r.clamp()
14292 }
14293
14294 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14295 // r != q, this != m. q or r may be null.
14296 function bnpDivRemTo(m, q, r) {
14297 var self = this
14298 var pm = m.abs()
14299 if (pm.t <= 0) return
14300 var pt = self.abs()
14301 if (pt.t < pm.t) {
14302 if (q != null) q.fromInt(0)
14303 if (r != null) self.copyTo(r)
14304 return
14305 }
14306 if (r == null) r = new BigInteger()
14307 var y = new BigInteger(),
14308 ts = self.s,
14309 ms = m.s
14310 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14311 if (nsh > 0) {
14312 pm.lShiftTo(nsh, y)
14313 pt.lShiftTo(nsh, r)
14314 } else {
14315 pm.copyTo(y)
14316 pt.copyTo(r)
14317 }
14318 var ys = y.t
14319 var y0 = y[ys - 1]
14320 if (y0 == 0) return
14321 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14322 var d1 = self.FV / yt,
14323 d2 = (1 << self.F1) / yt,
14324 e = 1 << self.F2
14325 var i = r.t,
14326 j = i - ys,
14327 t = (q == null) ? new BigInteger() : q
14328 y.dlShiftTo(j, t)
14329 if (r.compareTo(t) >= 0) {
14330 r[r.t++] = 1
14331 r.subTo(t, r)
14332 }
14333 BigInteger.ONE.dlShiftTo(ys, t)
14334 t.subTo(y, y); // "negative" y so we can replace sub with am later
14335 while (y.t < ys) y[y.t++] = 0
14336 while (--j >= 0) {
14337 // Estimate quotient digit
14338 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14339 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14340 y.dlShiftTo(j, t)
14341 r.subTo(t, r)
14342 while (r[i] < --qd) r.subTo(t, r)
14343 }
14344 }
14345 if (q != null) {
14346 r.drShiftTo(ys, q)
14347 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14348 }
14349 r.t = ys
14350 r.clamp()
14351 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14352 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14353 }
14354
14355 // (public) this mod a
14356 function bnMod(a) {
14357 var r = new BigInteger()
14358 this.abs()
14359 .divRemTo(a, null, r)
14360 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14361 return r
14362 }
14363
14364 // Modular reduction using "classic" algorithm
14365 function Classic(m) {
14366 this.m = m
14367 }
14368
14369 function cConvert(x) {
14370 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14371 else return x
14372 }
14373
14374 function cRevert(x) {
14375 return x
14376 }
14377
14378 function cReduce(x) {
14379 x.divRemTo(this.m, null, x)
14380 }
14381
14382 function cMulTo(x, y, r) {
14383 x.multiplyTo(y, r)
14384 this.reduce(r)
14385 }
14386
14387 function cSqrTo(x, r) {
14388 x.squareTo(r)
14389 this.reduce(r)
14390 }
14391
14392 Classic.prototype.convert = cConvert
14393 Classic.prototype.revert = cRevert
14394 Classic.prototype.reduce = cReduce
14395 Classic.prototype.mulTo = cMulTo
14396 Classic.prototype.sqrTo = cSqrTo
14397
14398 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14399 // justification:
14400 // xy == 1 (mod m)
14401 // xy = 1+km
14402 // xy(2-xy) = (1+km)(1-km)
14403 // x[y(2-xy)] = 1-k^2m^2
14404 // x[y(2-xy)] == 1 (mod m^2)
14405 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14406 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14407 // JS multiply "overflows" differently from C/C++, so care is needed here.
14408 function bnpInvDigit() {
14409 if (this.t < 1) return 0
14410 var x = this[0]
14411 if ((x & 1) == 0) return 0
14412 var y = x & 3; // y == 1/x mod 2^2
14413 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14414 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14415 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14416 // last step - calculate inverse mod DV directly
14417 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14418 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14419 // we really want the negative inverse, and -DV < y < DV
14420 return (y > 0) ? this.DV - y : -y
14421 }
14422
14423 // Montgomery reduction
14424 function Montgomery(m) {
14425 this.m = m
14426 this.mp = m.invDigit()
14427 this.mpl = this.mp & 0x7fff
14428 this.mph = this.mp >> 15
14429 this.um = (1 << (m.DB - 15)) - 1
14430 this.mt2 = 2 * m.t
14431 }
14432
14433 // xR mod m
14434 function montConvert(x) {
14435 var r = new BigInteger()
14436 x.abs()
14437 .dlShiftTo(this.m.t, r)
14438 r.divRemTo(this.m, null, r)
14439 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14440 return r
14441 }
14442
14443 // x/R mod m
14444 function montRevert(x) {
14445 var r = new BigInteger()
14446 x.copyTo(r)
14447 this.reduce(r)
14448 return r
14449 }
14450
14451 // x = x/R mod m (HAC 14.32)
14452 function montReduce(x) {
14453 while (x.t <= this.mt2) // pad x so am has enough room later
14454 x[x.t++] = 0
14455 for (var i = 0; i < this.m.t; ++i) {
14456 // faster way of calculating u0 = x[i]*mp mod DV
14457 var j = x[i] & 0x7fff
14458 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14459 // use am to combine the multiply-shift-add into one call
14460 j = i + this.m.t
14461 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14462 // propagate carry
14463 while (x[j] >= x.DV) {
14464 x[j] -= x.DV
14465 x[++j]++
14466 }
14467 }
14468 x.clamp()
14469 x.drShiftTo(this.m.t, x)
14470 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
14471 }
14472
14473 // r = "x^2/R mod m"; x != r
14474 function montSqrTo(x, r) {
14475 x.squareTo(r)
14476 this.reduce(r)
14477 }
14478
14479 // r = "xy/R mod m"; x,y != r
14480 function montMulTo(x, y, r) {
14481 x.multiplyTo(y, r)
14482 this.reduce(r)
14483 }
14484
14485 Montgomery.prototype.convert = montConvert
14486 Montgomery.prototype.revert = montRevert
14487 Montgomery.prototype.reduce = montReduce
14488 Montgomery.prototype.mulTo = montMulTo
14489 Montgomery.prototype.sqrTo = montSqrTo
14490
14491 // (protected) true iff this is even
14492 function bnpIsEven() {
14493 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14494 }
14495
14496 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14497 function bnpExp(e, z) {
14498 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14499 var r = new BigInteger(),
14500 r2 = new BigInteger(),
14501 g = z.convert(this),
14502 i = nbits(e) - 1
14503 g.copyTo(r)
14504 while (--i >= 0) {
14505 z.sqrTo(r, r2)
14506 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14507 else {
14508 var t = r
14509 r = r2
14510 r2 = t
14511 }
14512 }
14513 return z.revert(r)
14514 }
14515
14516 // (public) this^e % m, 0 <= e < 2^32
14517 function bnModPowInt(e, m) {
14518 var z
14519 if (e < 256 || m.isEven()) z = new Classic(m)
14520 else z = new Montgomery(m)
14521 return this.exp(e, z)
14522 }
14523
14524 // protected
14525 proto.copyTo = bnpCopyTo
14526 proto.fromInt = bnpFromInt
14527 proto.fromString = bnpFromString
14528 proto.clamp = bnpClamp
14529 proto.dlShiftTo = bnpDLShiftTo
14530 proto.drShiftTo = bnpDRShiftTo
14531 proto.lShiftTo = bnpLShiftTo
14532 proto.rShiftTo = bnpRShiftTo
14533 proto.subTo = bnpSubTo
14534 proto.multiplyTo = bnpMultiplyTo
14535 proto.squareTo = bnpSquareTo
14536 proto.divRemTo = bnpDivRemTo
14537 proto.invDigit = bnpInvDigit
14538 proto.isEven = bnpIsEven
14539 proto.exp = bnpExp
14540
14541 // public
14542 proto.toString = bnToString
14543 proto.negate = bnNegate
14544 proto.abs = bnAbs
14545 proto.compareTo = bnCompareTo
14546 proto.bitLength = bnBitLength
14547 proto.byteLength = bnByteLength
14548 proto.mod = bnMod
14549 proto.modPowInt = bnModPowInt
14550
14551 // (public)
14552 function bnClone() {
14553 var r = new BigInteger()
14554 this.copyTo(r)
14555 return r
14556 }
14557
14558 // (public) return value as integer
14559 function bnIntValue() {
14560 if (this.s < 0) {
14561 if (this.t == 1) return this[0] - this.DV
14562 else if (this.t == 0) return -1
14563 } else if (this.t == 1) return this[0]
14564 else if (this.t == 0) return 0
14565 // assumes 16 < DB < 32
14566 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14567 }
14568
14569 // (public) return value as byte
14570 function bnByteValue() {
14571 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14572 }
14573
14574 // (public) return value as short (assumes DB>=16)
14575 function bnShortValue() {
14576 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14577 }
14578
14579 // (protected) return x s.t. r^x < DV
14580 function bnpChunkSize(r) {
14581 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14582 }
14583
14584 // (public) 0 if this == 0, 1 if this > 0
14585 function bnSigNum() {
14586 if (this.s < 0) return -1
14587 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14588 else return 1
14589 }
14590
14591 // (protected) convert to radix string
14592 function bnpToRadix(b) {
14593 if (b == null) b = 10
14594 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14595 var cs = this.chunkSize(b)
14596 var a = Math.pow(b, cs)
14597 var d = nbv(a),
14598 y = new BigInteger(),
14599 z = new BigInteger(),
14600 r = ""
14601 this.divRemTo(d, y, z)
14602 while (y.signum() > 0) {
14603 r = (a + z.intValue())
14604 .toString(b)
14605 .substr(1) + r
14606 y.divRemTo(d, y, z)
14607 }
14608 return z.intValue()
14609 .toString(b) + r
14610 }
14611
14612 // (protected) convert from radix string
14613 function bnpFromRadix(s, b) {
14614 var self = this
14615 self.fromInt(0)
14616 if (b == null) b = 10
14617 var cs = self.chunkSize(b)
14618 var d = Math.pow(b, cs),
14619 mi = false,
14620 j = 0,
14621 w = 0
14622 for (var i = 0; i < s.length; ++i) {
14623 var x = intAt(s, i)
14624 if (x < 0) {
14625 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14626 continue
14627 }
14628 w = b * w + x
14629 if (++j >= cs) {
14630 self.dMultiply(d)
14631 self.dAddOffset(w, 0)
14632 j = 0
14633 w = 0
14634 }
14635 }
14636 if (j > 0) {
14637 self.dMultiply(Math.pow(b, j))
14638 self.dAddOffset(w, 0)
14639 }
14640 if (mi) BigInteger.ZERO.subTo(self, self)
14641 }
14642
14643 // (protected) alternate constructor
14644 function bnpFromNumber(a, b, c) {
14645 var self = this
14646 if ("number" == typeof b) {
14647 // new BigInteger(int,int,RNG)
14648 if (a < 2) self.fromInt(1)
14649 else {
14650 self.fromNumber(a, c)
14651 if (!self.testBit(a - 1)) // force MSB set
14652 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14653 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14654 while (!self.isProbablePrime(b)) {
14655 self.dAddOffset(2, 0)
14656 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14657 }
14658 }
14659 } else {
14660 // new BigInteger(int,RNG)
14661 var x = new Array(),
14662 t = a & 7
14663 x.length = (a >> 3) + 1
14664 b.nextBytes(x)
14665 if (t > 0) x[0] &= ((1 << t) - 1)
14666 else x[0] = 0
14667 self.fromString(x, 256)
14668 }
14669 }
14670
14671 // (public) convert to bigendian byte array
14672 function bnToByteArray() {
14673 var self = this
14674 var i = self.t,
14675 r = new Array()
14676 r[0] = self.s
14677 var p = self.DB - (i * self.DB) % 8,
14678 d, k = 0
14679 if (i-- > 0) {
14680 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14681 r[k++] = d | (self.s << (self.DB - p))
14682 while (i >= 0) {
14683 if (p < 8) {
14684 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14685 d |= self[--i] >> (p += self.DB - 8)
14686 } else {
14687 d = (self[i] >> (p -= 8)) & 0xff
14688 if (p <= 0) {
14689 p += self.DB
14690 --i
14691 }
14692 }
14693 if ((d & 0x80) != 0) d |= -256
14694 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14695 if (k > 0 || d != self.s) r[k++] = d
14696 }
14697 }
14698 return r
14699 }
14700
14701 function bnEquals(a) {
14702 return (this.compareTo(a) == 0)
14703 }
14704
14705 function bnMin(a) {
14706 return (this.compareTo(a) < 0) ? this : a
14707 }
14708
14709 function bnMax(a) {
14710 return (this.compareTo(a) > 0) ? this : a
14711 }
14712
14713 // (protected) r = this op a (bitwise)
14714 function bnpBitwiseTo(a, op, r) {
14715 var self = this
14716 var i, f, m = Math.min(a.t, self.t)
14717 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14718 if (a.t < self.t) {
14719 f = a.s & self.DM
14720 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14721 r.t = self.t
14722 } else {
14723 f = self.s & self.DM
14724 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14725 r.t = a.t
14726 }
14727 r.s = op(self.s, a.s)
14728 r.clamp()
14729 }
14730
14731 // (public) this & a
14732 function op_and(x, y) {
14733 return x & y
14734 }
14735
14736 function bnAnd(a) {
14737 var r = new BigInteger()
14738 this.bitwiseTo(a, op_and, r)
14739 return r
14740 }
14741
14742 // (public) this | a
14743 function op_or(x, y) {
14744 return x | y
14745 }
14746
14747 function bnOr(a) {
14748 var r = new BigInteger()
14749 this.bitwiseTo(a, op_or, r)
14750 return r
14751 }
14752
14753 // (public) this ^ a
14754 function op_xor(x, y) {
14755 return x ^ y
14756 }
14757
14758 function bnXor(a) {
14759 var r = new BigInteger()
14760 this.bitwiseTo(a, op_xor, r)
14761 return r
14762 }
14763
14764 // (public) this & ~a
14765 function op_andnot(x, y) {
14766 return x & ~y
14767 }
14768
14769 function bnAndNot(a) {
14770 var r = new BigInteger()
14771 this.bitwiseTo(a, op_andnot, r)
14772 return r
14773 }
14774
14775 // (public) ~this
14776 function bnNot() {
14777 var r = new BigInteger()
14778 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14779 r.t = this.t
14780 r.s = ~this.s
14781 return r
14782 }
14783
14784 // (public) this << n
14785 function bnShiftLeft(n) {
14786 var r = new BigInteger()
14787 if (n < 0) this.rShiftTo(-n, r)
14788 else this.lShiftTo(n, r)
14789 return r
14790 }
14791
14792 // (public) this >> n
14793 function bnShiftRight(n) {
14794 var r = new BigInteger()
14795 if (n < 0) this.lShiftTo(-n, r)
14796 else this.rShiftTo(n, r)
14797 return r
14798 }
14799
14800 // return index of lowest 1-bit in x, x < 2^31
14801 function lbit(x) {
14802 if (x == 0) return -1
14803 var r = 0
14804 if ((x & 0xffff) == 0) {
14805 x >>= 16
14806 r += 16
14807 }
14808 if ((x & 0xff) == 0) {
14809 x >>= 8
14810 r += 8
14811 }
14812 if ((x & 0xf) == 0) {
14813 x >>= 4
14814 r += 4
14815 }
14816 if ((x & 3) == 0) {
14817 x >>= 2
14818 r += 2
14819 }
14820 if ((x & 1) == 0)++r
14821 return r
14822 }
14823
14824 // (public) returns index of lowest 1-bit (or -1 if none)
14825 function bnGetLowestSetBit() {
14826 for (var i = 0; i < this.t; ++i)
14827 if (this[i] != 0) return i * this.DB + lbit(this[i])
14828 if (this.s < 0) return this.t * this.DB
14829 return -1
14830 }
14831
14832 // return number of 1 bits in x
14833 function cbit(x) {
14834 var r = 0
14835 while (x != 0) {
14836 x &= x - 1
14837 ++r
14838 }
14839 return r
14840 }
14841
14842 // (public) return number of set bits
14843 function bnBitCount() {
14844 var r = 0,
14845 x = this.s & this.DM
14846 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14847 return r
14848 }
14849
14850 // (public) true iff nth bit is set
14851 function bnTestBit(n) {
14852 var j = Math.floor(n / this.DB)
14853 if (j >= this.t) return (this.s != 0)
14854 return ((this[j] & (1 << (n % this.DB))) != 0)
14855 }
14856
14857 // (protected) this op (1<<n)
14858 function bnpChangeBit(n, op) {
14859 var r = BigInteger.ONE.shiftLeft(n)
14860 this.bitwiseTo(r, op, r)
14861 return r
14862 }
14863
14864 // (public) this | (1<<n)
14865 function bnSetBit(n) {
14866 return this.changeBit(n, op_or)
14867 }
14868
14869 // (public) this & ~(1<<n)
14870 function bnClearBit(n) {
14871 return this.changeBit(n, op_andnot)
14872 }
14873
14874 // (public) this ^ (1<<n)
14875 function bnFlipBit(n) {
14876 return this.changeBit(n, op_xor)
14877 }
14878
14879 // (protected) r = this + a
14880 function bnpAddTo(a, r) {
14881 var self = this
14882
14883 var i = 0,
14884 c = 0,
14885 m = Math.min(a.t, self.t)
14886 while (i < m) {
14887 c += self[i] + a[i]
14888 r[i++] = c & self.DM
14889 c >>= self.DB
14890 }
14891 if (a.t < self.t) {
14892 c += a.s
14893 while (i < self.t) {
14894 c += self[i]
14895 r[i++] = c & self.DM
14896 c >>= self.DB
14897 }
14898 c += self.s
14899 } else {
14900 c += self.s
14901 while (i < a.t) {
14902 c += a[i]
14903 r[i++] = c & self.DM
14904 c >>= self.DB
14905 }
14906 c += a.s
14907 }
14908 r.s = (c < 0) ? -1 : 0
14909 if (c > 0) r[i++] = c
14910 else if (c < -1) r[i++] = self.DV + c
14911 r.t = i
14912 r.clamp()
14913 }
14914
14915 // (public) this + a
14916 function bnAdd(a) {
14917 var r = new BigInteger()
14918 this.addTo(a, r)
14919 return r
14920 }
14921
14922 // (public) this - a
14923 function bnSubtract(a) {
14924 var r = new BigInteger()
14925 this.subTo(a, r)
14926 return r
14927 }
14928
14929 // (public) this * a
14930 function bnMultiply(a) {
14931 var r = new BigInteger()
14932 this.multiplyTo(a, r)
14933 return r
14934 }
14935
14936 // (public) this^2
14937 function bnSquare() {
14938 var r = new BigInteger()
14939 this.squareTo(r)
14940 return r
14941 }
14942
14943 // (public) this / a
14944 function bnDivide(a) {
14945 var r = new BigInteger()
14946 this.divRemTo(a, r, null)
14947 return r
14948 }
14949
14950 // (public) this % a
14951 function bnRemainder(a) {
14952 var r = new BigInteger()
14953 this.divRemTo(a, null, r)
14954 return r
14955 }
14956
14957 // (public) [this/a,this%a]
14958 function bnDivideAndRemainder(a) {
14959 var q = new BigInteger(),
14960 r = new BigInteger()
14961 this.divRemTo(a, q, r)
14962 return new Array(q, r)
14963 }
14964
14965 // (protected) this *= n, this >= 0, 1 < n < DV
14966 function bnpDMultiply(n) {
14967 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14968 ++this.t
14969 this.clamp()
14970 }
14971
14972 // (protected) this += n << w words, this >= 0
14973 function bnpDAddOffset(n, w) {
14974 if (n == 0) return
14975 while (this.t <= w) this[this.t++] = 0
14976 this[w] += n
14977 while (this[w] >= this.DV) {
14978 this[w] -= this.DV
14979 if (++w >= this.t) this[this.t++] = 0
14980 ++this[w]
14981 }
14982 }
14983
14984 // A "null" reducer
14985 function NullExp() {}
14986
14987 function nNop(x) {
14988 return x
14989 }
14990
14991 function nMulTo(x, y, r) {
14992 x.multiplyTo(y, r)
14993 }
14994
14995 function nSqrTo(x, r) {
14996 x.squareTo(r)
14997 }
14998
14999 NullExp.prototype.convert = nNop
15000 NullExp.prototype.revert = nNop
15001 NullExp.prototype.mulTo = nMulTo
15002 NullExp.prototype.sqrTo = nSqrTo
15003
15004 // (public) this^e
15005 function bnPow(e) {
15006 return this.exp(e, new NullExp())
15007 }
15008
15009 // (protected) r = lower n words of "this * a", a.t <= n
15010 // "this" should be the larger one if appropriate.
15011 function bnpMultiplyLowerTo(a, n, r) {
15012 var i = Math.min(this.t + a.t, n)
15013 r.s = 0; // assumes a,this >= 0
15014 r.t = i
15015 while (i > 0) r[--i] = 0
15016 var j
15017 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
15018 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
15019 r.clamp()
15020 }
15021
15022 // (protected) r = "this * a" without lower n words, n > 0
15023 // "this" should be the larger one if appropriate.
15024 function bnpMultiplyUpperTo(a, n, r) {
15025 --n
15026 var i = r.t = this.t + a.t - n
15027 r.s = 0; // assumes a,this >= 0
15028 while (--i >= 0) r[i] = 0
15029 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15030 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15031 r.clamp()
15032 r.drShiftTo(1, r)
15033 }
15034
15035 // Barrett modular reduction
15036 function Barrett(m) {
15037 // setup Barrett
15038 this.r2 = new BigInteger()
15039 this.q3 = new BigInteger()
15040 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15041 this.mu = this.r2.divide(m)
15042 this.m = m
15043 }
15044
15045 function barrettConvert(x) {
15046 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15047 else if (x.compareTo(this.m) < 0) return x
15048 else {
15049 var r = new BigInteger()
15050 x.copyTo(r)
15051 this.reduce(r)
15052 return r
15053 }
15054 }
15055
15056 function barrettRevert(x) {
15057 return x
15058 }
15059
15060 // x = x mod m (HAC 14.42)
15061 function barrettReduce(x) {
15062 var self = this
15063 x.drShiftTo(self.m.t - 1, self.r2)
15064 if (x.t > self.m.t + 1) {
15065 x.t = self.m.t + 1
15066 x.clamp()
15067 }
15068 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15069 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15070 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15071 x.subTo(self.r2, x)
15072 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15073 }
15074
15075 // r = x^2 mod m; x != r
15076 function barrettSqrTo(x, r) {
15077 x.squareTo(r)
15078 this.reduce(r)
15079 }
15080
15081 // r = x*y mod m; x,y != r
15082 function barrettMulTo(x, y, r) {
15083 x.multiplyTo(y, r)
15084 this.reduce(r)
15085 }
15086
15087 Barrett.prototype.convert = barrettConvert
15088 Barrett.prototype.revert = barrettRevert
15089 Barrett.prototype.reduce = barrettReduce
15090 Barrett.prototype.mulTo = barrettMulTo
15091 Barrett.prototype.sqrTo = barrettSqrTo
15092
15093 // (public) this^e % m (HAC 14.85)
15094 function bnModPow(e, m) {
15095 var i = e.bitLength(),
15096 k, r = nbv(1),
15097 z
15098 if (i <= 0) return r
15099 else if (i < 18) k = 1
15100 else if (i < 48) k = 3
15101 else if (i < 144) k = 4
15102 else if (i < 768) k = 5
15103 else k = 6
15104 if (i < 8)
15105 z = new Classic(m)
15106 else if (m.isEven())
15107 z = new Barrett(m)
15108 else
15109 z = new Montgomery(m)
15110
15111 // precomputation
15112 var g = new Array(),
15113 n = 3,
15114 k1 = k - 1,
15115 km = (1 << k) - 1
15116 g[1] = z.convert(this)
15117 if (k > 1) {
15118 var g2 = new BigInteger()
15119 z.sqrTo(g[1], g2)
15120 while (n <= km) {
15121 g[n] = new BigInteger()
15122 z.mulTo(g2, g[n - 2], g[n])
15123 n += 2
15124 }
15125 }
15126
15127 var j = e.t - 1,
15128 w, is1 = true,
15129 r2 = new BigInteger(),
15130 t
15131 i = nbits(e[j]) - 1
15132 while (j >= 0) {
15133 if (i >= k1) w = (e[j] >> (i - k1)) & km
15134 else {
15135 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15136 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
15137 }
15138
15139 n = k
15140 while ((w & 1) == 0) {
15141 w >>= 1
15142 --n
15143 }
15144 if ((i -= n) < 0) {
15145 i += this.DB
15146 --j
15147 }
15148 if (is1) { // ret == 1, don't bother squaring or multiplying it
15149 g[w].copyTo(r)
15150 is1 = false
15151 } else {
15152 while (n > 1) {
15153 z.sqrTo(r, r2)
15154 z.sqrTo(r2, r)
15155 n -= 2
15156 }
15157 if (n > 0) z.sqrTo(r, r2)
15158 else {
15159 t = r
15160 r = r2
15161 r2 = t
15162 }
15163 z.mulTo(r2, g[w], r)
15164 }
15165
15166 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15167 z.sqrTo(r, r2)
15168 t = r
15169 r = r2
15170 r2 = t
15171 if (--i < 0) {
15172 i = this.DB - 1
15173 --j
15174 }
15175 }
15176 }
15177 return z.revert(r)
15178 }
15179
15180 // (public) gcd(this,a) (HAC 14.54)
15181 function bnGCD(a) {
15182 var x = (this.s < 0) ? this.negate() : this.clone()
15183 var y = (a.s < 0) ? a.negate() : a.clone()
15184 if (x.compareTo(y) < 0) {
15185 var t = x
15186 x = y
15187 y = t
15188 }
15189 var i = x.getLowestSetBit(),
15190 g = y.getLowestSetBit()
15191 if (g < 0) return x
15192 if (i < g) g = i
15193 if (g > 0) {
15194 x.rShiftTo(g, x)
15195 y.rShiftTo(g, y)
15196 }
15197 while (x.signum() > 0) {
15198 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15199 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15200 if (x.compareTo(y) >= 0) {
15201 x.subTo(y, x)
15202 x.rShiftTo(1, x)
15203 } else {
15204 y.subTo(x, y)
15205 y.rShiftTo(1, y)
15206 }
15207 }
15208 if (g > 0) y.lShiftTo(g, y)
15209 return y
15210 }
15211
15212 // (protected) this % n, n < 2^26
15213 function bnpModInt(n) {
15214 if (n <= 0) return 0
15215 var d = this.DV % n,
15216 r = (this.s < 0) ? n - 1 : 0
15217 if (this.t > 0)
15218 if (d == 0) r = this[0] % n
15219 else
15220 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15221 return r
15222 }
15223
15224 // (public) 1/this % m (HAC 14.61)
15225 function bnModInverse(m) {
15226 var ac = m.isEven()
15227 if (this.signum() === 0) throw new Error('division by zero')
15228 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15229 var u = m.clone(),
15230 v = this.clone()
15231 var a = nbv(1),
15232 b = nbv(0),
15233 c = nbv(0),
15234 d = nbv(1)
15235 while (u.signum() != 0) {
15236 while (u.isEven()) {
15237 u.rShiftTo(1, u)
15238 if (ac) {
15239 if (!a.isEven() || !b.isEven()) {
15240 a.addTo(this, a)
15241 b.subTo(m, b)
15242 }
15243 a.rShiftTo(1, a)
15244 } else if (!b.isEven()) b.subTo(m, b)
15245 b.rShiftTo(1, b)
15246 }
15247 while (v.isEven()) {
15248 v.rShiftTo(1, v)
15249 if (ac) {
15250 if (!c.isEven() || !d.isEven()) {
15251 c.addTo(this, c)
15252 d.subTo(m, d)
15253 }
15254 c.rShiftTo(1, c)
15255 } else if (!d.isEven()) d.subTo(m, d)
15256 d.rShiftTo(1, d)
15257 }
15258 if (u.compareTo(v) >= 0) {
15259 u.subTo(v, u)
15260 if (ac) a.subTo(c, a)
15261 b.subTo(d, b)
15262 } else {
15263 v.subTo(u, v)
15264 if (ac) c.subTo(a, c)
15265 d.subTo(b, d)
15266 }
15267 }
15268 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15269 while (d.compareTo(m) >= 0) d.subTo(m, d)
15270 while (d.signum() < 0) d.addTo(m, d)
15271 return d
15272 }
15273
15274 var lowprimes = [
15275 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15276 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15277 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15278 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15279 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15280 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15281 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15282 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15283 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15284 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15285 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15286 ]
15287
15288 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
15289
15290 // (public) test primality with certainty >= 1-.5^t
15291 function bnIsProbablePrime(t) {
15292 var i, x = this.abs()
15293 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15294 for (i = 0; i < lowprimes.length; ++i)
15295 if (x[0] == lowprimes[i]) return true
15296 return false
15297 }
15298 if (x.isEven()) return false
15299 i = 1
15300 while (i < lowprimes.length) {
15301 var m = lowprimes[i],
15302 j = i + 1
15303 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15304 m = x.modInt(m)
15305 while (i < j) if (m % lowprimes[i++] == 0) return false
15306 }
15307 return x.millerRabin(t)
15308 }
15309
15310 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15311 function bnpMillerRabin(t) {
15312 var n1 = this.subtract(BigInteger.ONE)
15313 var k = n1.getLowestSetBit()
15314 if (k <= 0) return false
15315 var r = n1.shiftRight(k)
15316 t = (t + 1) >> 1
15317 if (t > lowprimes.length) t = lowprimes.length
15318 var a = new BigInteger(null)
15319 var j, bases = []
15320 for (var i = 0; i < t; ++i) {
15321 for (;;) {
15322 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15323 if (bases.indexOf(j) == -1) break
15324 }
15325 bases.push(j)
15326 a.fromInt(j)
15327 var y = a.modPow(r, this)
15328 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15329 var j = 1
15330 while (j++ < k && y.compareTo(n1) != 0) {
15331 y = y.modPowInt(2, this)
15332 if (y.compareTo(BigInteger.ONE) == 0) return false
15333 }
15334 if (y.compareTo(n1) != 0) return false
15335 }
15336 }
15337 return true
15338 }
15339
15340 // protected
15341 proto.chunkSize = bnpChunkSize
15342 proto.toRadix = bnpToRadix
15343 proto.fromRadix = bnpFromRadix
15344 proto.fromNumber = bnpFromNumber
15345 proto.bitwiseTo = bnpBitwiseTo
15346 proto.changeBit = bnpChangeBit
15347 proto.addTo = bnpAddTo
15348 proto.dMultiply = bnpDMultiply
15349 proto.dAddOffset = bnpDAddOffset
15350 proto.multiplyLowerTo = bnpMultiplyLowerTo
15351 proto.multiplyUpperTo = bnpMultiplyUpperTo
15352 proto.modInt = bnpModInt
15353 proto.millerRabin = bnpMillerRabin
15354
15355 // public
15356 proto.clone = bnClone
15357 proto.intValue = bnIntValue
15358 proto.byteValue = bnByteValue
15359 proto.shortValue = bnShortValue
15360 proto.signum = bnSigNum
15361 proto.toByteArray = bnToByteArray
15362 proto.equals = bnEquals
15363 proto.min = bnMin
15364 proto.max = bnMax
15365 proto.and = bnAnd
15366 proto.or = bnOr
15367 proto.xor = bnXor
15368 proto.andNot = bnAndNot
15369 proto.not = bnNot
15370 proto.shiftLeft = bnShiftLeft
15371 proto.shiftRight = bnShiftRight
15372 proto.getLowestSetBit = bnGetLowestSetBit
15373 proto.bitCount = bnBitCount
15374 proto.testBit = bnTestBit
15375 proto.setBit = bnSetBit
15376 proto.clearBit = bnClearBit
15377 proto.flipBit = bnFlipBit
15378 proto.add = bnAdd
15379 proto.subtract = bnSubtract
15380 proto.multiply = bnMultiply
15381 proto.divide = bnDivide
15382 proto.remainder = bnRemainder
15383 proto.divideAndRemainder = bnDivideAndRemainder
15384 proto.modPow = bnModPow
15385 proto.modInverse = bnModInverse
15386 proto.pow = bnPow
15387 proto.gcd = bnGCD
15388 proto.isProbablePrime = bnIsProbablePrime
15389
15390 // JSBN-specific extension
15391 proto.square = bnSquare
15392
15393 // constants
15394 BigInteger.ZERO = nbv(0)
15395 BigInteger.ONE = nbv(1)
15396 BigInteger.valueOf = nbv
15397
15398 module.exports = BigInteger
15399
15400 },{"../package.json":38}],36:[function(require,module,exports){
15401 (function (Buffer){
15402 // FIXME: Kind of a weird way to throw exceptions, consider removing
15403 var assert = require('assert')
15404 var BigInteger = require('./bigi')
15405
15406 /**
15407 * Turns a byte array into a big integer.
15408 *
15409 * This function will interpret a byte array as a big integer in big
15410 * endian notation.
15411 */
15412 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15413 // BigInteger expects a DER integer conformant byte array
15414 if (byteArray[0] & 0x80) {
15415 return new BigInteger([0].concat(byteArray))
15416 }
15417
15418 return new BigInteger(byteArray)
15419 }
15420
15421 /**
15422 * Returns a byte array representation of the big integer.
15423 *
15424 * This returns the absolute of the contained value in big endian
15425 * form. A value of zero results in an empty array.
15426 */
15427 BigInteger.prototype.toByteArrayUnsigned = function() {
15428 var byteArray = this.toByteArray()
15429 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15430 }
15431
15432 BigInteger.fromDERInteger = function(byteArray) {
15433 return new BigInteger(byteArray)
15434 }
15435
15436 /*
15437 * Converts BigInteger to a DER integer representation.
15438 *
15439 * The format for this value uses the most significant bit as a sign
15440 * bit. If the most significant bit is already set and the integer is
15441 * positive, a 0x00 is prepended.
15442 *
15443 * Examples:
15444 *
15445 * 0 => 0x00
15446 * 1 => 0x01
15447 * -1 => 0xff
15448 * 127 => 0x7f
15449 * -127 => 0x81
15450 * 128 => 0x0080
15451 * -128 => 0x80
15452 * 255 => 0x00ff
15453 * -255 => 0xff01
15454 * 16300 => 0x3fac
15455 * -16300 => 0xc054
15456 * 62300 => 0x00f35c
15457 * -62300 => 0xff0ca4
15458 */
15459 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15460
15461 BigInteger.fromBuffer = function(buffer) {
15462 // BigInteger expects a DER integer conformant byte array
15463 if (buffer[0] & 0x80) {
15464 var byteArray = Array.prototype.slice.call(buffer)
15465
15466 return new BigInteger([0].concat(byteArray))
15467 }
15468
15469 return new BigInteger(buffer)
15470 }
15471
15472 BigInteger.fromHex = function(hex) {
15473 if (hex === '') return BigInteger.ZERO
15474
15475 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15476 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15477 return new BigInteger(hex, 16)
15478 }
15479
15480 BigInteger.prototype.toBuffer = function(size) {
15481 var byteArray = this.toByteArrayUnsigned()
15482 var zeros = []
15483
15484 var padding = size - byteArray.length
15485 while (zeros.length < padding) zeros.push(0)
15486
15487 return new Buffer(zeros.concat(byteArray))
15488 }
15489
15490 BigInteger.prototype.toHex = function(size) {
15491 return this.toBuffer(size).toString('hex')
15492 }
15493
15494 }).call(this,require("buffer").Buffer)
15495 },{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15496 var BigInteger = require('./bigi')
15497
15498 //addons
15499 require('./convert')
15500
15501 module.exports = BigInteger
15502 },{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15503 module.exports={
15504 "_args": [
15505 [
15506 "bigi",
15507 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15508 ]
15509 ],
15510 "_from": "bigi@latest",
15511 "_id": "bigi@1.4.2",
15512 "_inCache": true,
15513 "_installable": true,
15514 "_location": "/bigi",
15515 "_nodeVersion": "6.1.0",
15516 "_npmOperationalInternal": {
15517 "host": "packages-12-west.internal.npmjs.com",
15518 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15519 },
15520 "_npmUser": {
15521 "email": "jprichardson@gmail.com",
15522 "name": "jprichardson"
15523 },
15524 "_npmVersion": "3.8.6",
15525 "_phantomChildren": {},
15526 "_requested": {
15527 "name": "bigi",
15528 "raw": "bigi",
15529 "rawSpec": "",
15530 "scope": null,
15531 "spec": "latest",
15532 "type": "tag"
15533 },
15534 "_requiredBy": [
15535 "#USER",
15536 "/bitcoinjs-lib",
15537 "/ecurve"
15538 ],
15539 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15540 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15541 "_shrinkwrap": null,
15542 "_spec": "bigi",
15543 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15544 "bugs": {
15545 "url": "https://github.com/cryptocoinjs/bigi/issues"
15546 },
15547 "dependencies": {},
15548 "description": "Big integers.",
15549 "devDependencies": {
15550 "coveralls": "^2.11.2",
15551 "istanbul": "^0.3.5",
15552 "jshint": "^2.5.1",
15553 "mocha": "^2.1.0",
15554 "mochify": "^2.1.0"
15555 },
15556 "directories": {},
15557 "dist": {
15558 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15559 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15560 },
15561 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15562 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15563 "keywords": [
15564 "cryptography",
15565 "math",
15566 "bitcoin",
15567 "arbitrary",
15568 "precision",
15569 "arithmetic",
15570 "big",
15571 "integer",
15572 "int",
15573 "number",
15574 "biginteger",
15575 "bigint",
15576 "bignumber",
15577 "decimal",
15578 "float"
15579 ],
15580 "main": "./lib/index.js",
15581 "maintainers": [
15582 {
15583 "email": "boydb@midnightdesign.ws",
15584 "name": "midnightlightning"
15585 },
15586 {
15587 "email": "sidazhang89@gmail.com",
15588 "name": "sidazhang"
15589 },
15590 {
15591 "email": "npm@shesek.info",
15592 "name": "nadav"
15593 },
15594 {
15595 "email": "jprichardson@gmail.com",
15596 "name": "jprichardson"
15597 }
15598 ],
15599 "name": "bigi",
15600 "optionalDependencies": {},
15601 "readme": "ERROR: No README data found!",
15602 "repository": {
15603 "type": "git",
15604 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15605 },
15606 "scripts": {
15607 "browser-test": "mochify --wd -R spec",
15608 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15609 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15610 "jshint": "jshint --config jshint.json lib/*.js ; true",
15611 "test": "_mocha -- test/*.js",
15612 "unit": "mocha"
15613 },
15614 "testling": {
15615 "browsers": [
15616 "ie/9..latest",
15617 "firefox/latest",
15618 "chrome/latest",
15619 "safari/6.0..latest",
15620 "iphone/6.0..latest",
15621 "android-browser/4.2..latest"
15622 ],
15623 "files": "test/*.js",
15624 "harness": "mocha"
15625 },
15626 "version": "1.4.2"
15627 }
15628
15629 },{}],39:[function(require,module,exports){
15630 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15631 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15632 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15633
15634 var Buffer = require('safe-buffer').Buffer
15635
15636 function check (buffer) {
15637 if (buffer.length < 8) return false
15638 if (buffer.length > 72) return false
15639 if (buffer[0] !== 0x30) return false
15640 if (buffer[1] !== buffer.length - 2) return false
15641 if (buffer[2] !== 0x02) return false
15642
15643 var lenR = buffer[3]
15644 if (lenR === 0) return false
15645 if (5 + lenR >= buffer.length) return false
15646 if (buffer[4 + lenR] !== 0x02) return false
15647
15648 var lenS = buffer[5 + lenR]
15649 if (lenS === 0) return false
15650 if ((6 + lenR + lenS) !== buffer.length) return false
15651
15652 if (buffer[4] & 0x80) return false
15653 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
15654
15655 if (buffer[lenR + 6] & 0x80) return false
15656 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15657 return true
15658 }
15659
15660 function decode (buffer) {
15661 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15662 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15663 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15664 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15665 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
15666
15667 var lenR = buffer[3]
15668 if (lenR === 0) throw new Error('R length is zero')
15669 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15670 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
15671
15672 var lenS = buffer[5 + lenR]
15673 if (lenS === 0) throw new Error('S length is zero')
15674 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15675
15676 if (buffer[4] & 0x80) throw new Error('R value is negative')
15677 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
15678
15679 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15680 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
15681
15682 // non-BIP66 - extract R, S values
15683 return {
15684 r: buffer.slice(4, 4 + lenR),
15685 s: buffer.slice(6 + lenR)
15686 }
15687 }
15688
15689 /*
15690 * Expects r and s to be positive DER integers.
15691 *
15692 * The DER format uses the most significant bit as a sign bit (& 0x80).
15693 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15694 *
15695 * Examples:
15696 *
15697 * 0 => 0x00
15698 * 1 => 0x01
15699 * -1 => 0xff
15700 * 127 => 0x7f
15701 * -127 => 0x81
15702 * 128 => 0x0080
15703 * -128 => 0x80
15704 * 255 => 0x00ff
15705 * -255 => 0xff01
15706 * 16300 => 0x3fac
15707 * -16300 => 0xc054
15708 * 62300 => 0x00f35c
15709 * -62300 => 0xff0ca4
15710 */
15711 function encode (r, s) {
15712 var lenR = r.length
15713 var lenS = s.length
15714 if (lenR === 0) throw new Error('R length is zero')
15715 if (lenS === 0) throw new Error('S length is zero')
15716 if (lenR > 33) throw new Error('R length is too long')
15717 if (lenS > 33) throw new Error('S length is too long')
15718 if (r[0] & 0x80) throw new Error('R value is negative')
15719 if (s[0] & 0x80) throw new Error('S value is negative')
15720 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15721 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
15722
15723 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
15724
15725 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15726 signature[0] = 0x30
15727 signature[1] = signature.length - 2
15728 signature[2] = 0x02
15729 signature[3] = r.length
15730 r.copy(signature, 4)
15731 signature[4 + lenR] = 0x02
15732 signature[5 + lenR] = s.length
15733 s.copy(signature, 6 + lenR)
15734
15735 return signature
15736 }
15737
15738 module.exports = {
15739 check: check,
15740 decode: decode,
15741 encode: encode
15742 }
15743
15744 },{"safe-buffer":98}],40:[function(require,module,exports){
15745 module.exports={
15746 "OP_FALSE": 0,
15747 "OP_0": 0,
15748 "OP_PUSHDATA1": 76,
15749 "OP_PUSHDATA2": 77,
15750 "OP_PUSHDATA4": 78,
15751 "OP_1NEGATE": 79,
15752 "OP_RESERVED": 80,
15753 "OP_1": 81,
15754 "OP_TRUE": 81,
15755 "OP_2": 82,
15756 "OP_3": 83,
15757 "OP_4": 84,
15758 "OP_5": 85,
15759 "OP_6": 86,
15760 "OP_7": 87,
15761 "OP_8": 88,
15762 "OP_9": 89,
15763 "OP_10": 90,
15764 "OP_11": 91,
15765 "OP_12": 92,
15766 "OP_13": 93,
15767 "OP_14": 94,
15768 "OP_15": 95,
15769 "OP_16": 96,
15770
15771 "OP_NOP": 97,
15772 "OP_VER": 98,
15773 "OP_IF": 99,
15774 "OP_NOTIF": 100,
15775 "OP_VERIF": 101,
15776 "OP_VERNOTIF": 102,
15777 "OP_ELSE": 103,
15778 "OP_ENDIF": 104,
15779 "OP_VERIFY": 105,
15780 "OP_RETURN": 106,
15781
15782 "OP_TOALTSTACK": 107,
15783 "OP_FROMALTSTACK": 108,
15784 "OP_2DROP": 109,
15785 "OP_2DUP": 110,
15786 "OP_3DUP": 111,
15787 "OP_2OVER": 112,
15788 "OP_2ROT": 113,
15789 "OP_2SWAP": 114,
15790 "OP_IFDUP": 115,
15791 "OP_DEPTH": 116,
15792 "OP_DROP": 117,
15793 "OP_DUP": 118,
15794 "OP_NIP": 119,
15795 "OP_OVER": 120,
15796 "OP_PICK": 121,
15797 "OP_ROLL": 122,
15798 "OP_ROT": 123,
15799 "OP_SWAP": 124,
15800 "OP_TUCK": 125,
15801
15802 "OP_CAT": 126,
15803 "OP_SUBSTR": 127,
15804 "OP_LEFT": 128,
15805 "OP_RIGHT": 129,
15806 "OP_SIZE": 130,
15807
15808 "OP_INVERT": 131,
15809 "OP_AND": 132,
15810 "OP_OR": 133,
15811 "OP_XOR": 134,
15812 "OP_EQUAL": 135,
15813 "OP_EQUALVERIFY": 136,
15814 "OP_RESERVED1": 137,
15815 "OP_RESERVED2": 138,
15816
15817 "OP_1ADD": 139,
15818 "OP_1SUB": 140,
15819 "OP_2MUL": 141,
15820 "OP_2DIV": 142,
15821 "OP_NEGATE": 143,
15822 "OP_ABS": 144,
15823 "OP_NOT": 145,
15824 "OP_0NOTEQUAL": 146,
15825 "OP_ADD": 147,
15826 "OP_SUB": 148,
15827 "OP_MUL": 149,
15828 "OP_DIV": 150,
15829 "OP_MOD": 151,
15830 "OP_LSHIFT": 152,
15831 "OP_RSHIFT": 153,
15832
15833 "OP_BOOLAND": 154,
15834 "OP_BOOLOR": 155,
15835 "OP_NUMEQUAL": 156,
15836 "OP_NUMEQUALVERIFY": 157,
15837 "OP_NUMNOTEQUAL": 158,
15838 "OP_LESSTHAN": 159,
15839 "OP_GREATERTHAN": 160,
15840 "OP_LESSTHANOREQUAL": 161,
15841 "OP_GREATERTHANOREQUAL": 162,
15842 "OP_MIN": 163,
15843 "OP_MAX": 164,
15844
15845 "OP_WITHIN": 165,
15846
15847 "OP_RIPEMD160": 166,
15848 "OP_SHA1": 167,
15849 "OP_SHA256": 168,
15850 "OP_HASH160": 169,
15851 "OP_HASH256": 170,
15852 "OP_CODESEPARATOR": 171,
15853 "OP_CHECKSIG": 172,
15854 "OP_CHECKSIGVERIFY": 173,
15855 "OP_CHECKMULTISIG": 174,
15856 "OP_CHECKMULTISIGVERIFY": 175,
15857
15858 "OP_NOP1": 176,
15859 "OP_NOP2": 177,
15860 "OP_CHECKLOCKTIMEVERIFY": 177,
15861
15862 "OP_NOP3": 178,
15863 "OP_NOP4": 179,
15864 "OP_NOP5": 180,
15865 "OP_NOP6": 181,
15866 "OP_NOP7": 182,
15867 "OP_NOP8": 183,
15868 "OP_NOP9": 184,
15869 "OP_NOP10": 185,
15870
15871 "OP_PUBKEYHASH": 253,
15872 "OP_PUBKEY": 254,
15873 "OP_INVALIDOPCODE": 255
15874 }
15875
15876 },{}],41:[function(require,module,exports){
15877 var OPS = require('./index.json')
15878
15879 var map = {}
15880 for (var op in OPS) {
15881 var code = OPS[op]
15882 map[code] = op
15883 }
15884
15885 module.exports = map
15886
15887 },{"./index.json":40}],42:[function(require,module,exports){
15888 var Buffer = require('safe-buffer').Buffer
15889 var bs58check = require('bs58check')
15890 var bscript = require('./script')
15891 var networks = require('./networks')
15892 var typeforce = require('typeforce')
15893 var types = require('./types')
15894
15895 function fromBase58Check (address) {
15896 var payload = bs58check.decode(address)
15897 if (payload.length < 21) throw new TypeError(address + ' is too short')
15898 if (payload.length > 21) throw new TypeError(address + ' is too long')
15899
15900 var version = payload.readUInt8(0)
15901 var hash = payload.slice(1)
15902
15903 return { hash: hash, version: version }
15904 }
15905
15906 function toBase58Check (hash, version) {
15907 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
15908
15909 var payload = Buffer.allocUnsafe(21)
15910 payload.writeUInt8(version, 0)
15911 hash.copy(payload, 1)
15912
15913 return bs58check.encode(payload)
15914 }
15915
15916 function fromOutputScript (outputScript, network) {
15917 network = network || networks.bitcoin
15918
15919 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15920 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
15921
15922 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
15923 }
15924
15925 function toOutputScript (address, network) {
15926 network = network || networks.bitcoin
15927
15928 var decode = fromBase58Check(address)
15929 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15930 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
15931
15932 throw new Error(address + ' has no matching Script')
15933 }
15934
15935 module.exports = {
15936 fromBase58Check: fromBase58Check,
15937 fromOutputScript: fromOutputScript,
15938 toBase58Check: toBase58Check,
15939 toOutputScript: toOutputScript
15940 }
15941
15942 },{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15943 var Buffer = require('safe-buffer').Buffer
15944 var bcrypto = require('./crypto')
15945 var fastMerkleRoot = require('merkle-lib/fastRoot')
15946 var typeforce = require('typeforce')
15947 var types = require('./types')
15948 var varuint = require('varuint-bitcoin')
15949
15950 var Transaction = require('./transaction')
15951
15952 function Block () {
15953 this.version = 1
15954 this.prevHash = null
15955 this.merkleRoot = null
15956 this.timestamp = 0
15957 this.bits = 0
15958 this.nonce = 0
15959 }
15960
15961 Block.fromBuffer = function (buffer) {
15962 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
15963
15964 var offset = 0
15965 function readSlice (n) {
15966 offset += n
15967 return buffer.slice(offset - n, offset)
15968 }
15969
15970 function readUInt32 () {
15971 var i = buffer.readUInt32LE(offset)
15972 offset += 4
15973 return i
15974 }
15975
15976 function readInt32 () {
15977 var i = buffer.readInt32LE(offset)
15978 offset += 4
15979 return i
15980 }
15981
15982 var block = new Block()
15983 block.version = readInt32()
15984 block.prevHash = readSlice(32)
15985 block.merkleRoot = readSlice(32)
15986 block.timestamp = readUInt32()
15987 block.bits = readUInt32()
15988 block.nonce = readUInt32()
15989
15990 if (buffer.length === 80) return block
15991
15992 function readVarInt () {
15993 var vi = varuint.decode(buffer, offset)
15994 offset += varuint.decode.bytes
15995 return vi
15996 }
15997
15998 function readTransaction () {
15999 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16000 offset += tx.byteLength()
16001 return tx
16002 }
16003
16004 var nTransactions = readVarInt()
16005 block.transactions = []
16006
16007 for (var i = 0; i < nTransactions; ++i) {
16008 var tx = readTransaction()
16009 block.transactions.push(tx)
16010 }
16011
16012 return block
16013 }
16014
16015 Block.prototype.byteLength = function (headersOnly) {
16016 if (headersOnly || !this.transactions) return 80
16017
16018 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
16019 return a + x.byteLength()
16020 }, 0)
16021 }
16022
16023 Block.fromHex = function (hex) {
16024 return Block.fromBuffer(Buffer.from(hex, 'hex'))
16025 }
16026
16027 Block.prototype.getHash = function () {
16028 return bcrypto.hash256(this.toBuffer(true))
16029 }
16030
16031 Block.prototype.getId = function () {
16032 return this.getHash().reverse().toString('hex')
16033 }
16034
16035 Block.prototype.getUTCDate = function () {
16036 var date = new Date(0) // epoch
16037 date.setUTCSeconds(this.timestamp)
16038
16039 return date
16040 }
16041
16042 // TODO: buffer, offset compatibility
16043 Block.prototype.toBuffer = function (headersOnly) {
16044 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16045
16046 var offset = 0
16047 function writeSlice (slice) {
16048 slice.copy(buffer, offset)
16049 offset += slice.length
16050 }
16051
16052 function writeInt32 (i) {
16053 buffer.writeInt32LE(i, offset)
16054 offset += 4
16055 }
16056 function writeUInt32 (i) {
16057 buffer.writeUInt32LE(i, offset)
16058 offset += 4
16059 }
16060
16061 writeInt32(this.version)
16062 writeSlice(this.prevHash)
16063 writeSlice(this.merkleRoot)
16064 writeUInt32(this.timestamp)
16065 writeUInt32(this.bits)
16066 writeUInt32(this.nonce)
16067
16068 if (headersOnly || !this.transactions) return buffer
16069
16070 varuint.encode(this.transactions.length, buffer, offset)
16071 offset += varuint.encode.bytes
16072
16073 this.transactions.forEach(function (tx) {
16074 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16075 tx.toBuffer(buffer, offset)
16076 offset += txSize
16077 })
16078
16079 return buffer
16080 }
16081
16082 Block.prototype.toHex = function (headersOnly) {
16083 return this.toBuffer(headersOnly).toString('hex')
16084 }
16085
16086 Block.calculateTarget = function (bits) {
16087 var exponent = ((bits & 0xff000000) >> 24) - 3
16088 var mantissa = bits & 0x007fffff
16089 var target = Buffer.alloc(32, 0)
16090 target.writeUInt32BE(mantissa, 28 - exponent)
16091 return target
16092 }
16093
16094 Block.calculateMerkleRoot = function (transactions) {
16095 typeforce([{ getHash: types.Function }], transactions)
16096 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
16097
16098 var hashes = transactions.map(function (transaction) {
16099 return transaction.getHash()
16100 })
16101
16102 return fastMerkleRoot(hashes, bcrypto.hash256)
16103 }
16104
16105 Block.prototype.checkMerkleRoot = function () {
16106 if (!this.transactions) return false
16107
16108 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16109 return this.merkleRoot.compare(actualMerkleRoot) === 0
16110 }
16111
16112 Block.prototype.checkProofOfWork = function () {
16113 var hash = this.getHash().reverse()
16114 var target = Block.calculateTarget(this.bits)
16115
16116 return hash.compare(target) <= 0
16117 }
16118
16119 module.exports = Block
16120
16121 },{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16122 var pushdata = require('pushdata-bitcoin')
16123 var varuint = require('varuint-bitcoin')
16124
16125 // https://github.com/feross/buffer/blob/master/index.js#L1127
16126 function verifuint (value, max) {
16127 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16128 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16129 if (value > max) throw new Error('RangeError: value out of range')
16130 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16131 }
16132
16133 function readUInt64LE (buffer, offset) {
16134 var a = buffer.readUInt32LE(offset)
16135 var b = buffer.readUInt32LE(offset + 4)
16136 b *= 0x100000000
16137
16138 verifuint(b + a, 0x001fffffffffffff)
16139
16140 return b + a
16141 }
16142
16143 function writeUInt64LE (buffer, value, offset) {
16144 verifuint(value, 0x001fffffffffffff)
16145
16146 buffer.writeInt32LE(value & -1, offset)
16147 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16148 return offset + 8
16149 }
16150
16151 // TODO: remove in 4.0.0?
16152 function readVarInt (buffer, offset) {
16153 var result = varuint.decode(buffer, offset)
16154
16155 return {
16156 number: result,
16157 size: varuint.decode.bytes
16158 }
16159 }
16160
16161 // TODO: remove in 4.0.0?
16162 function writeVarInt (buffer, number, offset) {
16163 varuint.encode(number, buffer, offset)
16164 return varuint.encode.bytes
16165 }
16166
16167 module.exports = {
16168 pushDataSize: pushdata.encodingLength,
16169 readPushDataInt: pushdata.decode,
16170 readUInt64LE: readUInt64LE,
16171 readVarInt: readVarInt,
16172 varIntBuffer: varuint.encode,
16173 varIntSize: varuint.encodingLength,
16174 writePushDataInt: pushdata.encode,
16175 writeUInt64LE: writeUInt64LE,
16176 writeVarInt: writeVarInt
16177 }
16178
16179 },{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16180 var createHash = require('create-hash')
16181
16182 function ripemd160 (buffer) {
16183 return createHash('rmd160').update(buffer).digest()
16184 }
16185
16186 function sha1 (buffer) {
16187 return createHash('sha1').update(buffer).digest()
16188 }
16189
16190 function sha256 (buffer) {
16191 return createHash('sha256').update(buffer).digest()
16192 }
16193
16194 function hash160 (buffer) {
16195 return ripemd160(sha256(buffer))
16196 }
16197
16198 function hash256 (buffer) {
16199 return sha256(sha256(buffer))
16200 }
16201
16202 module.exports = {
16203 hash160: hash160,
16204 hash256: hash256,
16205 ripemd160: ripemd160,
16206 sha1: sha1,
16207 sha256: sha256
16208 }
16209
16210 },{"create-hash":82}],46:[function(require,module,exports){
16211 var Buffer = require('safe-buffer').Buffer
16212 var createHmac = require('create-hmac')
16213 var typeforce = require('typeforce')
16214 var types = require('./types')
16215
16216 var BigInteger = require('bigi')
16217 var ECSignature = require('./ecsignature')
16218
16219 var ZERO = Buffer.alloc(1, 0)
16220 var ONE = Buffer.alloc(1, 1)
16221
16222 var ecurve = require('ecurve')
16223 var secp256k1 = ecurve.getCurveByName('secp256k1')
16224
16225 // https://tools.ietf.org/html/rfc6979#section-3.2
16226 function deterministicGenerateK (hash, x, checkSig) {
16227 typeforce(types.tuple(
16228 types.Hash256bit,
16229 types.Buffer256bit,
16230 types.Function
16231 ), arguments)
16232
16233 // Step A, ignored as hash already provided
16234 // Step B
16235 // Step C
16236 var k = Buffer.alloc(32, 0)
16237 var v = Buffer.alloc(32, 1)
16238
16239 // Step D
16240 k = createHmac('sha256', k)
16241 .update(v)
16242 .update(ZERO)
16243 .update(x)
16244 .update(hash)
16245 .digest()
16246
16247 // Step E
16248 v = createHmac('sha256', k).update(v).digest()
16249
16250 // Step F
16251 k = createHmac('sha256', k)
16252 .update(v)
16253 .update(ONE)
16254 .update(x)
16255 .update(hash)
16256 .digest()
16257
16258 // Step G
16259 v = createHmac('sha256', k).update(v).digest()
16260
16261 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16262 // Step H2b
16263 v = createHmac('sha256', k).update(v).digest()
16264
16265 var T = BigInteger.fromBuffer(v)
16266
16267 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16268 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16269 k = createHmac('sha256', k)
16270 .update(v)
16271 .update(ZERO)
16272 .digest()
16273
16274 v = createHmac('sha256', k).update(v).digest()
16275
16276 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16277 // Step H2b again
16278 v = createHmac('sha256', k).update(v).digest()
16279 T = BigInteger.fromBuffer(v)
16280 }
16281
16282 return T
16283 }
16284
16285 var N_OVER_TWO = secp256k1.n.shiftRight(1)
16286
16287 function sign (hash, d) {
16288 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16289
16290 var x = d.toBuffer(32)
16291 var e = BigInteger.fromBuffer(hash)
16292 var n = secp256k1.n
16293 var G = secp256k1.G
16294
16295 var r, s
16296 deterministicGenerateK(hash, x, function (k) {
16297 var Q = G.multiply(k)
16298
16299 if (secp256k1.isInfinity(Q)) return false
16300
16301 r = Q.affineX.mod(n)
16302 if (r.signum() === 0) return false
16303
16304 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16305 if (s.signum() === 0) return false
16306
16307 return true
16308 })
16309
16310 // enforce low S values, see bip62: 'low s values in signatures'
16311 if (s.compareTo(N_OVER_TWO) > 0) {
16312 s = n.subtract(s)
16313 }
16314
16315 return new ECSignature(r, s)
16316 }
16317
16318 function verify (hash, signature, Q) {
16319 typeforce(types.tuple(
16320 types.Hash256bit,
16321 types.ECSignature,
16322 types.ECPoint
16323 ), arguments)
16324
16325 var n = secp256k1.n
16326 var G = secp256k1.G
16327
16328 var r = signature.r
16329 var s = signature.s
16330
16331 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16332 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16333 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
16334
16335 // 1.4.2 H = Hash(M), already done by the user
16336 // 1.4.3 e = H
16337 var e = BigInteger.fromBuffer(hash)
16338
16339 // Compute s^-1
16340 var sInv = s.modInverse(n)
16341
16342 // 1.4.4 Compute u1 = es^−1 mod n
16343 // u2 = rs^−1 mod n
16344 var u1 = e.multiply(sInv).mod(n)
16345 var u2 = r.multiply(sInv).mod(n)
16346
16347 // 1.4.5 Compute R = (xR, yR)
16348 // R = u1G + u2Q
16349 var R = G.multiplyTwo(u1, Q, u2)
16350
16351 // 1.4.5 (cont.) Enforce R is not at infinity
16352 if (secp256k1.isInfinity(R)) return false
16353
16354 // 1.4.6 Convert the field element R.x to an integer
16355 var xR = R.affineX
16356
16357 // 1.4.7 Set v = xR mod n
16358 var v = xR.mod(n)
16359
16360 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16361 return v.equals(r)
16362 }
16363
16364 module.exports = {
16365 deterministicGenerateK: deterministicGenerateK,
16366 sign: sign,
16367 verify: verify,
16368
16369 // TODO: remove
16370 __curve: secp256k1
16371 }
16372
16373 },{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16374 var baddress = require('./address')
16375 var bcrypto = require('./crypto')
16376 var ecdsa = require('./ecdsa')
16377 var randomBytes = require('randombytes')
16378 var typeforce = require('typeforce')
16379 var types = require('./types')
16380 var wif = require('wif')
16381
16382 var NETWORKS = require('./networks')
16383 var BigInteger = require('bigi')
16384
16385 var ecurve = require('ecurve')
16386 var secp256k1 = ecdsa.__curve
16387
16388 function ECPair (d, Q, options) {
16389 if (options) {
16390 typeforce({
16391 compressed: types.maybe(types.Boolean),
16392 network: types.maybe(types.Network)
16393 }, options)
16394 }
16395
16396 options = options || {}
16397
16398 if (d) {
16399 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16400 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16401 if (Q) throw new TypeError('Unexpected publicKey parameter')
16402
16403 this.d = d
16404 } else {
16405 typeforce(types.ECPoint, Q)
16406
16407 this.__Q = Q
16408 }
16409
16410 this.compressed = options.compressed === undefined ? true : options.compressed
16411 this.network = options.network || NETWORKS.bitcoin
16412 }
16413
16414 Object.defineProperty(ECPair.prototype, 'Q', {
16415 get: function () {
16416 if (!this.__Q && this.d) {
16417 this.__Q = secp256k1.G.multiply(this.d)
16418 }
16419
16420 return this.__Q
16421 }
16422 })
16423
16424 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16425 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16426
16427 return new ECPair(null, Q, {
16428 compressed: Q.compressed,
16429 network: network
16430 })
16431 }
16432
16433 ECPair.fromWIF = function (string, network) {
16434 var decoded = wif.decode(string)
16435 var version = decoded.version
16436
16437 // list of networks?
16438 if (types.Array(network)) {
16439 network = network.filter(function (x) {
16440 return version === x.wif
16441 }).pop()
16442
16443 if (!network) throw new Error('Unknown network version')
16444
16445 // otherwise, assume a network object (or default to bitcoin)
16446 } else {
16447 network = network || NETWORKS.bitcoin
16448
16449 if (version !== network.wif) throw new Error('Invalid network version')
16450 }
16451
16452 var d = BigInteger.fromBuffer(decoded.privateKey)
16453
16454 return new ECPair(d, null, {
16455 compressed: decoded.compressed,
16456 network: network
16457 })
16458 }
16459
16460 ECPair.makeRandom = function (options) {
16461 options = options || {}
16462
16463 var rng = options.rng || randomBytes
16464
16465 var d
16466 do {
16467 var buffer = rng(32)
16468 typeforce(types.Buffer256bit, buffer)
16469
16470 d = BigInteger.fromBuffer(buffer)
16471 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16472
16473 return new ECPair(d, null, options)
16474 }
16475
16476 ECPair.prototype.getAddress = function () {
16477 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16478 }
16479
16480 ECPair.prototype.getNetwork = function () {
16481 return this.network
16482 }
16483
16484 ECPair.prototype.getPublicKeyBuffer = function () {
16485 return this.Q.getEncoded(this.compressed)
16486 }
16487
16488 ECPair.prototype.sign = function (hash) {
16489 if (!this.d) throw new Error('Missing private key')
16490
16491 return ecdsa.sign(hash, this.d)
16492 }
16493
16494 ECPair.prototype.toWIF = function () {
16495 if (!this.d) throw new Error('Missing private key')
16496
16497 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
16498 }
16499
16500 ECPair.prototype.verify = function (hash, signature) {
16501 return ecdsa.verify(hash, signature, this.Q)
16502 }
16503
16504 module.exports = ECPair
16505
16506 },{"./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){
16507 (function (Buffer){
16508 var bip66 = require('bip66')
16509 var typeforce = require('typeforce')
16510 var types = require('./types')
16511
16512 var BigInteger = require('bigi')
16513
16514 function ECSignature (r, s) {
16515 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16516
16517 this.r = r
16518 this.s = s
16519 }
16520
16521 ECSignature.parseCompact = function (buffer) {
16522 if (buffer.length !== 65) throw new Error('Invalid signature length')
16523
16524 var flagByte = buffer.readUInt8(0) - 27
16525 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16526
16527 var compressed = !!(flagByte & 4)
16528 var recoveryParam = flagByte & 3
16529
16530 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16531 var s = BigInteger.fromBuffer(buffer.slice(33))
16532
16533 return {
16534 compressed: compressed,
16535 i: recoveryParam,
16536 signature: new ECSignature(r, s)
16537 }
16538 }
16539
16540 ECSignature.fromDER = function (buffer) {
16541 var decode = bip66.decode(buffer)
16542 var r = BigInteger.fromDERInteger(decode.r)
16543 var s = BigInteger.fromDERInteger(decode.s)
16544
16545 return new ECSignature(r, s)
16546 }
16547
16548 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16549 ECSignature.parseScriptSignature = function (buffer) {
16550 var hashType = buffer.readUInt8(buffer.length - 1)
16551 var hashTypeMod = hashType & ~0x80
16552
16553 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16554
16555 return {
16556 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16557 hashType: hashType
16558 }
16559 }
16560
16561 ECSignature.prototype.toCompact = function (i, compressed) {
16562 if (compressed) {
16563 i += 4
16564 }
16565
16566 i += 27
16567
16568 var buffer = Buffer.alloc(65)
16569 buffer.writeUInt8(i, 0)
16570 this.r.toBuffer(32).copy(buffer, 1)
16571 this.s.toBuffer(32).copy(buffer, 33)
16572
16573 return buffer
16574 }
16575
16576 ECSignature.prototype.toDER = function () {
16577 var r = Buffer.from(this.r.toDERInteger())
16578 var s = Buffer.from(this.s.toDERInteger())
16579
16580 return bip66.encode(r, s)
16581 }
16582
16583 ECSignature.prototype.toScriptSignature = function (hashType) {
16584 var hashTypeMod = hashType & ~0x80
16585 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16586
16587 var hashTypeBuffer = Buffer.alloc(1)
16588 hashTypeBuffer.writeUInt8(hashType, 0)
16589
16590 return Buffer.concat([this.toDER(), hashTypeBuffer])
16591 }
16592
16593 module.exports = ECSignature
16594
16595 }).call(this,require("buffer").Buffer)
16596 },{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16597 var Buffer = require('safe-buffer').Buffer
16598 var base58check = require('bs58check')
16599 var bcrypto = require('./crypto')
16600 var createHmac = require('create-hmac')
16601 var typeforce = require('typeforce')
16602 var types = require('./types')
16603 var NETWORKS = require('./networks')
16604
16605 var BigInteger = require('bigi')
16606 var ECPair = require('./ecpair')
16607
16608 var ecurve = require('ecurve')
16609 var curve = ecurve.getCurveByName('secp256k1')
16610
16611 function HDNode (keyPair, chainCode) {
16612 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16613
16614 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16615
16616 this.keyPair = keyPair
16617 this.chainCode = chainCode
16618 this.depth = 0
16619 this.index = 0
16620 this.parentFingerprint = 0x00000000
16621 }
16622
16623 HDNode.HIGHEST_BIT = 0x80000000
16624 HDNode.LENGTH = 78
16625 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16626
16627 HDNode.fromSeedBuffer = function (seed, network) {
16628 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16629
16630 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16631 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
16632
16633 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16634 var IL = I.slice(0, 32)
16635 var IR = I.slice(32)
16636
16637 // In case IL is 0 or >= n, the master key is invalid
16638 // This is handled by the ECPair constructor
16639 var pIL = BigInteger.fromBuffer(IL)
16640 var keyPair = new ECPair(pIL, null, {
16641 network: network
16642 })
16643
16644 return new HDNode(keyPair, IR)
16645 }
16646
16647 HDNode.fromSeedHex = function (hex, network) {
16648 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16649 }
16650
16651 HDNode.fromBase58 = function (string, networks) {
16652 var buffer = base58check.decode(string)
16653 if (buffer.length !== 78) throw new Error('Invalid buffer length')
16654
16655 // 4 bytes: version bytes
16656 var version = buffer.readUInt32BE(0)
16657 var network
16658
16659 // list of networks?
16660 if (Array.isArray(networks)) {
16661 network = networks.filter(function (x) {
16662 return version === x.bip32.private ||
16663 version === x.bip32.public
16664 }).pop()
16665
16666 if (!network) throw new Error('Unknown network version')
16667
16668 // otherwise, assume a network object (or default to bitcoin)
16669 } else {
16670 network = networks || NETWORKS.bitcoin
16671 }
16672
16673 if (version !== network.bip32.private &&
16674 version !== network.bip32.public) throw new Error('Invalid network version')
16675
16676 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16677 var depth = buffer[4]
16678
16679 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16680 var parentFingerprint = buffer.readUInt32BE(5)
16681 if (depth === 0) {
16682 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16683 }
16684
16685 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16686 // This is encoded in MSB order. (0x00000000 if master key)
16687 var index = buffer.readUInt32BE(9)
16688 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16689
16690 // 32 bytes: the chain code
16691 var chainCode = buffer.slice(13, 45)
16692 var keyPair
16693
16694 // 33 bytes: private key data (0x00 + k)
16695 if (version === network.bip32.private) {
16696 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16697
16698 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16699 keyPair = new ECPair(d, null, { network: network })
16700
16701 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16702 } else {
16703 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16704 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16705
16706 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16707 // If not, the extended public key is invalid.
16708 curve.validate(Q)
16709
16710 keyPair = new ECPair(null, Q, { network: network })
16711 }
16712
16713 var hd = new HDNode(keyPair, chainCode)
16714 hd.depth = depth
16715 hd.index = index
16716 hd.parentFingerprint = parentFingerprint
16717
16718 return hd
16719 }
16720
16721 HDNode.prototype.getAddress = function () {
16722 return this.keyPair.getAddress()
16723 }
16724
16725 HDNode.prototype.getIdentifier = function () {
16726 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16727 }
16728
16729 HDNode.prototype.getFingerprint = function () {
16730 return this.getIdentifier().slice(0, 4)
16731 }
16732
16733 HDNode.prototype.getNetwork = function () {
16734 return this.keyPair.getNetwork()
16735 }
16736
16737 HDNode.prototype.getPublicKeyBuffer = function () {
16738 return this.keyPair.getPublicKeyBuffer()
16739 }
16740
16741 HDNode.prototype.neutered = function () {
16742 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16743 network: this.keyPair.network
16744 })
16745
16746 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16747 neutered.depth = this.depth
16748 neutered.index = this.index
16749 neutered.parentFingerprint = this.parentFingerprint
16750
16751 return neutered
16752 }
16753
16754 HDNode.prototype.sign = function (hash) {
16755 return this.keyPair.sign(hash)
16756 }
16757
16758 HDNode.prototype.verify = function (hash, signature) {
16759 return this.keyPair.verify(hash, signature)
16760 }
16761
16762 HDNode.prototype.toBase58 = function (__isPrivate) {
16763 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
16764
16765 // Version
16766 var network = this.keyPair.network
16767 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16768 var buffer = Buffer.allocUnsafe(78)
16769
16770 // 4 bytes: version bytes
16771 buffer.writeUInt32BE(version, 0)
16772
16773 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16774 buffer.writeUInt8(this.depth, 4)
16775
16776 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16777 buffer.writeUInt32BE(this.parentFingerprint, 5)
16778
16779 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16780 // This is encoded in big endian. (0x00000000 if master key)
16781 buffer.writeUInt32BE(this.index, 9)
16782
16783 // 32 bytes: the chain code
16784 this.chainCode.copy(buffer, 13)
16785
16786 // 33 bytes: the public key or private key data
16787 if (!this.isNeutered()) {
16788 // 0x00 + k for private keys
16789 buffer.writeUInt8(0, 45)
16790 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16791
16792 // 33 bytes: the public key
16793 } else {
16794 // X9.62 encoding for public keys
16795 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16796 }
16797
16798 return base58check.encode(buffer)
16799 }
16800
16801 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16802 HDNode.prototype.derive = function (index) {
16803 typeforce(types.UInt32, index)
16804
16805 var isHardened = index >= HDNode.HIGHEST_BIT
16806 var data = Buffer.allocUnsafe(37)
16807
16808 // Hardened child
16809 if (isHardened) {
16810 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16811
16812 // data = 0x00 || ser256(kpar) || ser32(index)
16813 data[0] = 0x00
16814 this.keyPair.d.toBuffer(32).copy(data, 1)
16815 data.writeUInt32BE(index, 33)
16816
16817 // Normal child
16818 } else {
16819 // data = serP(point(kpar)) || ser32(index)
16820 // = serP(Kpar) || ser32(index)
16821 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16822 data.writeUInt32BE(index, 33)
16823 }
16824
16825 var I = createHmac('sha512', this.chainCode).update(data).digest()
16826 var IL = I.slice(0, 32)
16827 var IR = I.slice(32)
16828
16829 var pIL = BigInteger.fromBuffer(IL)
16830
16831 // In case parse256(IL) >= n, proceed with the next value for i
16832 if (pIL.compareTo(curve.n) >= 0) {
16833 return this.derive(index + 1)
16834 }
16835
16836 // Private parent key -> private child key
16837 var derivedKeyPair
16838 if (!this.isNeutered()) {
16839 // ki = parse256(IL) + kpar (mod n)
16840 var ki = pIL.add(this.keyPair.d).mod(curve.n)
16841
16842 // In case ki == 0, proceed with the next value for i
16843 if (ki.signum() === 0) {
16844 return this.derive(index + 1)
16845 }
16846
16847 derivedKeyPair = new ECPair(ki, null, {
16848 network: this.keyPair.network
16849 })
16850
16851 // Public parent key -> public child key
16852 } else {
16853 // Ki = point(parse256(IL)) + Kpar
16854 // = G*IL + Kpar
16855 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16856
16857 // In case Ki is the point at infinity, proceed with the next value for i
16858 if (curve.isInfinity(Ki)) {
16859 return this.derive(index + 1)
16860 }
16861
16862 derivedKeyPair = new ECPair(null, Ki, {
16863 network: this.keyPair.network
16864 })
16865 }
16866
16867 var hd = new HDNode(derivedKeyPair, IR)
16868 hd.depth = this.depth + 1
16869 hd.index = index
16870 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16871
16872 return hd
16873 }
16874
16875 HDNode.prototype.deriveHardened = function (index) {
16876 typeforce(types.UInt31, index)
16877
16878 // Only derives hardened private keys by default
16879 return this.derive(index + HDNode.HIGHEST_BIT)
16880 }
16881
16882 // Private === not neutered
16883 // Public === neutered
16884 HDNode.prototype.isNeutered = function () {
16885 return !(this.keyPair.d)
16886 }
16887
16888 HDNode.prototype.derivePath = function (path) {
16889 typeforce(types.BIP32Path, path)
16890
16891 var splitPath = path.split('/')
16892 if (splitPath[0] === 'm') {
16893 if (this.parentFingerprint) {
16894 throw new Error('Not a master node')
16895 }
16896
16897 splitPath = splitPath.slice(1)
16898 }
16899
16900 return splitPath.reduce(function (prevHd, indexStr) {
16901 var index
16902 if (indexStr.slice(-1) === "'") {
16903 index = parseInt(indexStr.slice(0, -1), 10)
16904 return prevHd.deriveHardened(index)
16905 } else {
16906 index = parseInt(indexStr, 10)
16907 return prevHd.derive(index)
16908 }
16909 }, this)
16910 }
16911
16912 module.exports = HDNode
16913
16914 },{"./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){
16915 module.exports = {
16916 Block: require('./block'),
16917 ECPair: require('./ecpair'),
16918 ECSignature: require('./ecsignature'),
16919 HDNode: require('./hdnode'),
16920 Transaction: require('./transaction'),
16921 TransactionBuilder: require('./transaction_builder'),
16922
16923 address: require('./address'),
16924 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16925 crypto: require('./crypto'),
16926 networks: require('./networks'),
16927 opcodes: require('bitcoin-ops'),
16928 script: require('./script')
16929 }
16930
16931 },{"./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){
16932 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16933 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
16934
16935 module.exports = {
16936 bitcoin: {
16937 messagePrefix: '\x18Bitcoin Signed Message:\n',
16938 bip32: {
16939 public: 0x0488b21e,
16940 private: 0x0488ade4
16941 },
16942 pubKeyHash: 0x00,
16943 scriptHash: 0x05,
16944 wif: 0x80
16945 },
16946 testnet: {
16947 messagePrefix: '\x18Bitcoin Signed Message:\n',
16948 bip32: {
16949 public: 0x043587cf,
16950 private: 0x04358394
16951 },
16952 pubKeyHash: 0x6f,
16953 scriptHash: 0xc4,
16954 wif: 0xef
16955 },
16956 litecoin: {
16957 messagePrefix: '\x19Litecoin Signed Message:\n',
16958 bip32: {
16959 public: 0x0488b21e,
16960 private: 0x0488ade4,
16961 },
16962 pubKeyHash: 0x30,
16963 scriptHash: 0x32,
16964 wif: 0xb0
16965 },
16966 litecoinLtub: {
16967 messagePrefix: '\x19Litecoin Signed Message:\n',
16968 bip32: {
16969 public: 0x019da462,
16970 private: 0x019d9cfe
16971 },
16972 pubKeyHash: 0x30,
16973 scriptHash: 0x32,
16974 wif: 0xb0
16975 }
16976 }
16977
16978 },{}],52:[function(require,module,exports){
16979 var Buffer = require('safe-buffer').Buffer
16980 var bip66 = require('bip66')
16981 var pushdata = require('pushdata-bitcoin')
16982 var typeforce = require('typeforce')
16983 var types = require('./types')
16984 var scriptNumber = require('./script_number')
16985
16986 var OPS = require('bitcoin-ops')
16987 var REVERSE_OPS = require('bitcoin-ops/map')
16988 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
16989
16990 function isOPInt (value) {
16991 return types.Number(value) &&
16992 ((value === OPS.OP_0) ||
16993 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
16994 (value === OPS.OP_1NEGATE))
16995 }
16996
16997 function isPushOnlyChunk (value) {
16998 return types.Buffer(value) || isOPInt(value)
16999 }
17000
17001 function isPushOnly (value) {
17002 return types.Array(value) && value.every(isPushOnlyChunk)
17003 }
17004
17005 function compile (chunks) {
17006 // TODO: remove me
17007 if (Buffer.isBuffer(chunks)) return chunks
17008
17009 typeforce(types.Array, chunks)
17010
17011 var bufferSize = chunks.reduce(function (accum, chunk) {
17012 // data chunk
17013 if (Buffer.isBuffer(chunk)) {
17014 // adhere to BIP62.3, minimal push policy
17015 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
17016 return accum + 1
17017 }
17018
17019 return accum + pushdata.encodingLength(chunk.length) + chunk.length
17020 }
17021
17022 // opcode
17023 return accum + 1
17024 }, 0.0)
17025
17026 var buffer = Buffer.allocUnsafe(bufferSize)
17027 var offset = 0
17028
17029 chunks.forEach(function (chunk) {
17030 // data chunk
17031 if (Buffer.isBuffer(chunk)) {
17032 // adhere to BIP62.3, minimal push policy
17033 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
17034 var opcode = OP_INT_BASE + chunk[0]
17035 buffer.writeUInt8(opcode, offset)
17036 offset += 1
17037 return
17038 }
17039
17040 if (chunk.length === 1 && chunk[0] === 0x81) {
17041 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17042 offset += 1
17043 return
17044 }
17045
17046 offset += pushdata.encode(buffer, chunk.length, offset)
17047
17048 chunk.copy(buffer, offset)
17049 offset += chunk.length
17050
17051 // opcode
17052 } else {
17053 buffer.writeUInt8(chunk, offset)
17054 offset += 1
17055 }
17056 })
17057
17058 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17059 return buffer
17060 }
17061
17062 function decompile (buffer) {
17063 // TODO: remove me
17064 if (types.Array(buffer)) return buffer
17065
17066 typeforce(types.Buffer, buffer)
17067
17068 var chunks = []
17069 var i = 0
17070
17071 while (i < buffer.length) {
17072 var opcode = buffer[i]
17073
17074 // data chunk
17075 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17076 var d = pushdata.decode(buffer, i)
17077
17078 // did reading a pushDataInt fail? empty script
17079 if (d === null) return []
17080 i += d.size
17081
17082 // attempt to read too much data? empty script
17083 if (i + d.number > buffer.length) return []
17084
17085 var data = buffer.slice(i, i + d.number)
17086 i += d.number
17087
17088 chunks.push(data)
17089
17090 // opcode
17091 } else {
17092 chunks.push(opcode)
17093
17094 i += 1
17095 }
17096 }
17097
17098 return chunks
17099 }
17100
17101 function toASM (chunks) {
17102 if (Buffer.isBuffer(chunks)) {
17103 chunks = decompile(chunks)
17104 }
17105
17106 return chunks.map(function (chunk) {
17107 // data?
17108 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
17109
17110 // opcode!
17111 return REVERSE_OPS[chunk]
17112 }).join(' ')
17113 }
17114
17115 function fromASM (asm) {
17116 typeforce(types.String, asm)
17117
17118 return compile(asm.split(' ').map(function (chunkStr) {
17119 // opcode?
17120 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17121 typeforce(types.Hex, chunkStr)
17122
17123 // data!
17124 return Buffer.from(chunkStr, 'hex')
17125 }))
17126 }
17127
17128 function toStack (chunks) {
17129 chunks = decompile(chunks)
17130 typeforce(isPushOnly, chunks)
17131
17132 return chunks.map(function (op) {
17133 if (Buffer.isBuffer(op)) return op
17134 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17135
17136 return scriptNumber.encode(op - OP_INT_BASE)
17137 })
17138 }
17139
17140 function isCanonicalPubKey (buffer) {
17141 if (!Buffer.isBuffer(buffer)) return false
17142 if (buffer.length < 33) return false
17143
17144 switch (buffer[0]) {
17145 case 0x02:
17146 case 0x03:
17147 return buffer.length === 33
17148 case 0x04:
17149 return buffer.length === 65
17150 }
17151
17152 return false
17153 }
17154
17155 function isDefinedHashType (hashType) {
17156 var hashTypeMod = hashType & ~0x80
17157
17158 // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17159 return hashTypeMod > 0x00 && hashTypeMod < 0x04
17160 }
17161
17162 function isCanonicalSignature (buffer) {
17163 if (!Buffer.isBuffer(buffer)) return false
17164 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
17165
17166 return bip66.check(buffer.slice(0, -1))
17167 }
17168
17169 module.exports = {
17170 compile: compile,
17171 decompile: decompile,
17172 fromASM: fromASM,
17173 toASM: toASM,
17174 toStack: toStack,
17175
17176 number: require('./script_number'),
17177
17178 isCanonicalPubKey: isCanonicalPubKey,
17179 isCanonicalSignature: isCanonicalSignature,
17180 isPushOnly: isPushOnly,
17181 isDefinedHashType: isDefinedHashType
17182 }
17183
17184 var templates = require('./templates')
17185 for (var key in templates) {
17186 module.exports[key] = templates[key]
17187 }
17188
17189 },{"./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){
17190 var Buffer = require('safe-buffer').Buffer
17191
17192 function decode (buffer, maxLength, minimal) {
17193 maxLength = maxLength || 4
17194 minimal = minimal === undefined ? true : minimal
17195
17196 var length = buffer.length
17197 if (length === 0) return 0
17198 if (length > maxLength) throw new TypeError('Script number overflow')
17199 if (minimal) {
17200 if ((buffer[length - 1] & 0x7f) === 0) {
17201 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17202 }
17203 }
17204
17205 // 40-bit
17206 if (length === 5) {
17207 var a = buffer.readUInt32LE(0)
17208 var b = buffer.readUInt8(4)
17209
17210 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17211 return (b * 0x100000000) + a
17212 }
17213
17214 var result = 0
17215
17216 // 32-bit / 24-bit / 16-bit / 8-bit
17217 for (var i = 0; i < length; ++i) {
17218 result |= buffer[i] << (8 * i)
17219 }
17220
17221 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17222 return result
17223 }
17224
17225 function scriptNumSize (i) {
17226 return i > 0x7fffffff ? 5
17227 : i > 0x7fffff ? 4
17228 : i > 0x7fff ? 3
17229 : i > 0x7f ? 2
17230 : i > 0x00 ? 1
17231 : 0
17232 }
17233
17234 function encode (number) {
17235 var value = Math.abs(number)
17236 var size = scriptNumSize(value)
17237 var buffer = Buffer.allocUnsafe(size)
17238 var negative = number < 0
17239
17240 for (var i = 0; i < size; ++i) {
17241 buffer.writeUInt8(value & 0xff, i)
17242 value >>= 8
17243 }
17244
17245 if (buffer[size - 1] & 0x80) {
17246 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17247 } else if (negative) {
17248 buffer[size - 1] |= 0x80
17249 }
17250
17251 return buffer
17252 }
17253
17254 module.exports = {
17255 decode: decode,
17256 encode: encode
17257 }
17258
17259 },{"safe-buffer":98}],54:[function(require,module,exports){
17260 var decompile = require('../script').decompile
17261 var multisig = require('./multisig')
17262 var nullData = require('./nulldata')
17263 var pubKey = require('./pubkey')
17264 var pubKeyHash = require('./pubkeyhash')
17265 var scriptHash = require('./scripthash')
17266 var witnessPubKeyHash = require('./witnesspubkeyhash')
17267 var witnessScriptHash = require('./witnessscripthash')
17268 var witnessCommitment = require('./witnesscommitment')
17269
17270 var types = {
17271 MULTISIG: 'multisig',
17272 NONSTANDARD: 'nonstandard',
17273 NULLDATA: 'nulldata',
17274 P2PK: 'pubkey',
17275 P2PKH: 'pubkeyhash',
17276 P2SH: 'scripthash',
17277 P2WPKH: 'witnesspubkeyhash',
17278 P2WSH: 'witnessscripthash',
17279 WITNESS_COMMITMENT: 'witnesscommitment'
17280 }
17281
17282 function classifyOutput (script) {
17283 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17284 if (witnessScriptHash.output.check(script)) return types.P2WSH
17285 if (pubKeyHash.output.check(script)) return types.P2PKH
17286 if (scriptHash.output.check(script)) return types.P2SH
17287
17288 // XXX: optimization, below functions .decompile before use
17289 var chunks = decompile(script)
17290 if (multisig.output.check(chunks)) return types.MULTISIG
17291 if (pubKey.output.check(chunks)) return types.P2PK
17292 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17293 if (nullData.output.check(chunks)) return types.NULLDATA
17294
17295 return types.NONSTANDARD
17296 }
17297
17298 function classifyInput (script, allowIncomplete) {
17299 // XXX: optimization, below functions .decompile before use
17300 var chunks = decompile(script)
17301
17302 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17303 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17304 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17305 if (pubKey.input.check(chunks)) return types.P2PK
17306
17307 return types.NONSTANDARD
17308 }
17309
17310 function classifyWitness (script, allowIncomplete) {
17311 // XXX: optimization, below functions .decompile before use
17312 var chunks = decompile(script)
17313
17314 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17315 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17316
17317 return types.NONSTANDARD
17318 }
17319
17320 module.exports = {
17321 classifyInput: classifyInput,
17322 classifyOutput: classifyOutput,
17323 classifyWitness: classifyWitness,
17324 multisig: multisig,
17325 nullData: nullData,
17326 pubKey: pubKey,
17327 pubKeyHash: pubKeyHash,
17328 scriptHash: scriptHash,
17329 witnessPubKeyHash: witnessPubKeyHash,
17330 witnessScriptHash: witnessScriptHash,
17331 witnessCommitment: witnessCommitment,
17332 types: types
17333 }
17334
17335 },{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17336 module.exports = {
17337 input: require('./input'),
17338 output: require('./output')
17339 }
17340
17341 },{"./input":56,"./output":57}],56:[function(require,module,exports){
17342 // OP_0 [signatures ...]
17343
17344 var Buffer = require('safe-buffer').Buffer
17345 var bscript = require('../../script')
17346 var typeforce = require('typeforce')
17347 var OPS = require('bitcoin-ops')
17348
17349 function partialSignature (value) {
17350 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17351 }
17352
17353 function check (script, allowIncomplete) {
17354 var chunks = bscript.decompile(script)
17355 if (chunks.length < 2) return false
17356 if (chunks[0] !== OPS.OP_0) return false
17357
17358 if (allowIncomplete) {
17359 return chunks.slice(1).every(partialSignature)
17360 }
17361
17362 return chunks.slice(1).every(bscript.isCanonicalSignature)
17363 }
17364 check.toJSON = function () { return 'multisig input' }
17365
17366 var EMPTY_BUFFER = Buffer.allocUnsafe(0)
17367
17368 function encodeStack (signatures, scriptPubKey) {
17369 typeforce([partialSignature], signatures)
17370
17371 if (scriptPubKey) {
17372 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17373
17374 if (signatures.length < scriptData.m) {
17375 throw new TypeError('Not enough signatures provided')
17376 }
17377
17378 if (signatures.length > scriptData.pubKeys.length) {
17379 throw new TypeError('Too many signatures provided')
17380 }
17381 }
17382
17383 return [].concat(EMPTY_BUFFER, signatures)
17384 }
17385
17386 function encode (signatures, scriptPubKey) {
17387 return bscript.compile(encodeStack(signatures, scriptPubKey))
17388 }
17389
17390 function decodeStack (stack, allowIncomplete) {
17391 typeforce(check, stack, allowIncomplete)
17392 return stack.slice(1)
17393 }
17394
17395 function decode (buffer, allowIncomplete) {
17396 var stack = bscript.decompile(buffer)
17397 return decodeStack(stack, allowIncomplete)
17398 }
17399
17400 module.exports = {
17401 check: check,
17402 decode: decode,
17403 decodeStack: decodeStack,
17404 encode: encode,
17405 encodeStack: encodeStack
17406 }
17407
17408 },{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17409 // m [pubKeys ...] n OP_CHECKMULTISIG
17410
17411 var bscript = require('../../script')
17412 var types = require('../../types')
17413 var typeforce = require('typeforce')
17414 var OPS = require('bitcoin-ops')
17415 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17416
17417 function check (script, allowIncomplete) {
17418 var chunks = bscript.decompile(script)
17419
17420 if (chunks.length < 4) return false
17421 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17422 if (!types.Number(chunks[0])) return false
17423 if (!types.Number(chunks[chunks.length - 2])) return false
17424 var m = chunks[0] - OP_INT_BASE
17425 var n = chunks[chunks.length - 2] - OP_INT_BASE
17426
17427 if (m <= 0) return false
17428 if (n > 16) return false
17429 if (m > n) return false
17430 if (n !== chunks.length - 3) return false
17431 if (allowIncomplete) return true
17432
17433 var keys = chunks.slice(1, -2)
17434 return keys.every(bscript.isCanonicalPubKey)
17435 }
17436 check.toJSON = function () { return 'multi-sig output' }
17437
17438 function encode (m, pubKeys) {
17439 typeforce({
17440 m: types.Number,
17441 pubKeys: [bscript.isCanonicalPubKey]
17442 }, {
17443 m: m,
17444 pubKeys: pubKeys
17445 })
17446
17447 var n = pubKeys.length
17448 if (n < m) throw new TypeError('Not enough pubKeys provided')
17449
17450 return bscript.compile([].concat(
17451 OP_INT_BASE + m,
17452 pubKeys,
17453 OP_INT_BASE + n,
17454 OPS.OP_CHECKMULTISIG
17455 ))
17456 }
17457
17458 function decode (buffer, allowIncomplete) {
17459 var chunks = bscript.decompile(buffer)
17460 typeforce(check, chunks, allowIncomplete)
17461
17462 return {
17463 m: chunks[0] - OP_INT_BASE,
17464 pubKeys: chunks.slice(1, -2)
17465 }
17466 }
17467
17468 module.exports = {
17469 check: check,
17470 decode: decode,
17471 encode: encode
17472 }
17473
17474 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17475 // OP_RETURN {data}
17476
17477 var bscript = require('../script')
17478 var types = require('../types')
17479 var typeforce = require('typeforce')
17480 var OPS = require('bitcoin-ops')
17481
17482 function check (script) {
17483 var buffer = bscript.compile(script)
17484
17485 return buffer.length > 1 &&
17486 buffer[0] === OPS.OP_RETURN
17487 }
17488 check.toJSON = function () { return 'null data output' }
17489
17490 function encode (data) {
17491 typeforce(types.Buffer, data)
17492
17493 return bscript.compile([OPS.OP_RETURN, data])
17494 }
17495
17496 function decode (buffer) {
17497 typeforce(check, buffer)
17498
17499 return buffer.slice(2)
17500 }
17501
17502 module.exports = {
17503 output: {
17504 check: check,
17505 decode: decode,
17506 encode: encode
17507 }
17508 }
17509
17510 },{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17511 arguments[4][55][0].apply(exports,arguments)
17512 },{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17513 // {signature}
17514
17515 var bscript = require('../../script')
17516 var types = require('../../types')
17517 var typeforce = require('typeforce')
17518
17519 function check (script) {
17520 var chunks = bscript.decompile(script)
17521
17522 return chunks.length === 1 &&
17523 bscript.isCanonicalSignature(chunks[0])
17524 }
17525 check.toJSON = function () { return 'pubKey input' }
17526
17527 function encodeStack (signature) {
17528 typeforce(types.Buffer, signature)
17529 return [signature]
17530 }
17531
17532 function encode (signature) {
17533 return bscript.compile(encodeStack(signature))
17534 }
17535
17536 function decodeStack (stack) {
17537 typeforce(check, stack)
17538 return stack[0]
17539 }
17540
17541 function decode (buffer) {
17542 var stack = bscript.decompile(buffer)
17543 return decodeStack(stack)
17544 }
17545
17546 module.exports = {
17547 check: check,
17548 decode: decode,
17549 decodeStack: decodeStack,
17550 encode: encode,
17551 encodeStack: encodeStack
17552 }
17553
17554 },{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17555 // {pubKey} OP_CHECKSIG
17556
17557 var bscript = require('../../script')
17558 var typeforce = require('typeforce')
17559 var OPS = require('bitcoin-ops')
17560
17561 function check (script) {
17562 var chunks = bscript.decompile(script)
17563
17564 return chunks.length === 2 &&
17565 bscript.isCanonicalPubKey(chunks[0]) &&
17566 chunks[1] === OPS.OP_CHECKSIG
17567 }
17568 check.toJSON = function () { return 'pubKey output' }
17569
17570 function encode (pubKey) {
17571 typeforce(bscript.isCanonicalPubKey, pubKey)
17572
17573 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17574 }
17575
17576 function decode (buffer) {
17577 var chunks = bscript.decompile(buffer)
17578 typeforce(check, chunks)
17579
17580 return chunks[0]
17581 }
17582
17583 module.exports = {
17584 check: check,
17585 decode: decode,
17586 encode: encode
17587 }
17588
17589 },{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17590 arguments[4][55][0].apply(exports,arguments)
17591 },{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17592 // {signature} {pubKey}
17593
17594 var bscript = require('../../script')
17595 var types = require('../../types')
17596 var typeforce = require('typeforce')
17597
17598 function check (script) {
17599 var chunks = bscript.decompile(script)
17600
17601 return chunks.length === 2 &&
17602 bscript.isCanonicalSignature(chunks[0]) &&
17603 bscript.isCanonicalPubKey(chunks[1])
17604 }
17605 check.toJSON = function () { return 'pubKeyHash input' }
17606
17607 function encodeStack (signature, pubKey) {
17608 typeforce({
17609 signature: types.Buffer, pubKey: types.Buffer
17610 }, {
17611 signature: signature, pubKey: pubKey
17612 })
17613
17614 return [signature, pubKey]
17615 }
17616
17617 function encode (signature, pubKey) {
17618 return bscript.compile(encodeStack(signature, pubKey))
17619 }
17620
17621 function decodeStack (stack) {
17622 typeforce(check, stack)
17623
17624 return {
17625 signature: stack[0],
17626 pubKey: stack[1]
17627 }
17628 }
17629
17630 function decode (buffer) {
17631 var stack = bscript.decompile(buffer)
17632 return decodeStack(stack)
17633 }
17634
17635 module.exports = {
17636 check: check,
17637 decode: decode,
17638 decodeStack: decodeStack,
17639 encode: encode,
17640 encodeStack: encodeStack
17641 }
17642
17643 },{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17644 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17645
17646 var bscript = require('../../script')
17647 var types = require('../../types')
17648 var typeforce = require('typeforce')
17649 var OPS = require('bitcoin-ops')
17650
17651 function check (script) {
17652 var buffer = bscript.compile(script)
17653
17654 return buffer.length === 25 &&
17655 buffer[0] === OPS.OP_DUP &&
17656 buffer[1] === OPS.OP_HASH160 &&
17657 buffer[2] === 0x14 &&
17658 buffer[23] === OPS.OP_EQUALVERIFY &&
17659 buffer[24] === OPS.OP_CHECKSIG
17660 }
17661 check.toJSON = function () { return 'pubKeyHash output' }
17662
17663 function encode (pubKeyHash) {
17664 typeforce(types.Hash160bit, pubKeyHash)
17665
17666 return bscript.compile([
17667 OPS.OP_DUP,
17668 OPS.OP_HASH160,
17669 pubKeyHash,
17670 OPS.OP_EQUALVERIFY,
17671 OPS.OP_CHECKSIG
17672 ])
17673 }
17674
17675 function decode (buffer) {
17676 typeforce(check, buffer)
17677
17678 return buffer.slice(3, 23)
17679 }
17680
17681 module.exports = {
17682 check: check,
17683 decode: decode,
17684 encode: encode
17685 }
17686
17687 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17688 arguments[4][55][0].apply(exports,arguments)
17689 },{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17690 // <scriptSig> {serialized scriptPubKey script}
17691
17692 var Buffer = require('safe-buffer').Buffer
17693 var bscript = require('../../script')
17694 var typeforce = require('typeforce')
17695
17696 function check (script, allowIncomplete) {
17697 var chunks = bscript.decompile(script)
17698 if (chunks.length < 1) return false
17699
17700 var lastChunk = chunks[chunks.length - 1]
17701 if (!Buffer.isBuffer(lastChunk)) return false
17702
17703 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17704 var redeemScriptChunks = bscript.decompile(lastChunk)
17705
17706 // is redeemScript a valid script?
17707 if (redeemScriptChunks.length === 0) return false
17708
17709 // is redeemScriptSig push only?
17710 if (!bscript.isPushOnly(scriptSigChunks)) return false
17711
17712 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17713 var outputType = bscript.classifyOutput(redeemScriptChunks)
17714 if (chunks.length === 1) {
17715 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17716 }
17717 return inputType === outputType
17718 }
17719 check.toJSON = function () { return 'scriptHash input' }
17720
17721 function encodeStack (redeemScriptStack, redeemScript) {
17722 var serializedScriptPubKey = bscript.compile(redeemScript)
17723
17724 return [].concat(redeemScriptStack, serializedScriptPubKey)
17725 }
17726
17727 function encode (redeemScriptSig, redeemScript) {
17728 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17729
17730 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17731 }
17732
17733 function decodeStack (stack) {
17734 typeforce(check, stack)
17735
17736 return {
17737 redeemScriptStack: stack.slice(0, -1),
17738 redeemScript: stack[stack.length - 1]
17739 }
17740 }
17741
17742 function decode (buffer) {
17743 var stack = bscript.decompile(buffer)
17744 var result = decodeStack(stack)
17745 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17746 delete result.redeemScriptStack
17747 return result
17748 }
17749
17750 module.exports = {
17751 check: check,
17752 decode: decode,
17753 decodeStack: decodeStack,
17754 encode: encode,
17755 encodeStack: encodeStack
17756 }
17757
17758 },{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17759 // OP_HASH160 {scriptHash} OP_EQUAL
17760
17761 var bscript = require('../../script')
17762 var types = require('../../types')
17763 var typeforce = require('typeforce')
17764 var OPS = require('bitcoin-ops')
17765
17766 function check (script) {
17767 var buffer = bscript.compile(script)
17768
17769 return buffer.length === 23 &&
17770 buffer[0] === OPS.OP_HASH160 &&
17771 buffer[1] === 0x14 &&
17772 buffer[22] === OPS.OP_EQUAL
17773 }
17774 check.toJSON = function () { return 'scriptHash output' }
17775
17776 function encode (scriptHash) {
17777 typeforce(types.Hash160bit, scriptHash)
17778
17779 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17780 }
17781
17782 function decode (buffer) {
17783 typeforce(check, buffer)
17784
17785 return buffer.slice(2, 22)
17786 }
17787
17788 module.exports = {
17789 check: check,
17790 decode: decode,
17791 encode: encode
17792 }
17793
17794 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17795 module.exports = {
17796 output: require('./output')
17797 }
17798
17799 },{"./output":69}],69:[function(require,module,exports){
17800 // OP_RETURN {aa21a9ed} {commitment}
17801
17802 var Buffer = require('safe-buffer').Buffer
17803 var bscript = require('../../script')
17804 var types = require('../../types')
17805 var typeforce = require('typeforce')
17806 var OPS = require('bitcoin-ops')
17807
17808 var HEADER = Buffer.from('aa21a9ed', 'hex')
17809
17810 function check (script) {
17811 var buffer = bscript.compile(script)
17812
17813 return buffer.length > 37 &&
17814 buffer[0] === OPS.OP_RETURN &&
17815 buffer[1] === 0x24 &&
17816 buffer.slice(2, 6).equals(HEADER)
17817 }
17818
17819 check.toJSON = function () { return 'Witness commitment output' }
17820
17821 function encode (commitment) {
17822 typeforce(types.Hash256bit, commitment)
17823
17824 var buffer = Buffer.allocUnsafe(36)
17825 HEADER.copy(buffer, 0)
17826 commitment.copy(buffer, 4)
17827
17828 return bscript.compile([OPS.OP_RETURN, buffer])
17829 }
17830
17831 function decode (buffer) {
17832 typeforce(check, buffer)
17833
17834 return bscript.decompile(buffer)[1].slice(4, 36)
17835 }
17836
17837 module.exports = {
17838 check: check,
17839 decode: decode,
17840 encode: encode
17841 }
17842
17843 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17844 arguments[4][55][0].apply(exports,arguments)
17845 },{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17846 // {signature} {pubKey}
17847
17848 var pkh = require('../pubkeyhash/input')
17849
17850 module.exports = {
17851 check: pkh.check,
17852 decodeStack: pkh.decodeStack,
17853 encodeStack: pkh.encodeStack
17854 }
17855
17856 },{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17857 // OP_0 {pubKeyHash}
17858
17859 var bscript = require('../../script')
17860 var types = require('../../types')
17861 var typeforce = require('typeforce')
17862 var OPS = require('bitcoin-ops')
17863
17864 function check (script) {
17865 var buffer = bscript.compile(script)
17866
17867 return buffer.length === 22 &&
17868 buffer[0] === OPS.OP_0 &&
17869 buffer[1] === 0x14
17870 }
17871 check.toJSON = function () { return 'Witness pubKeyHash output' }
17872
17873 function encode (pubKeyHash) {
17874 typeforce(types.Hash160bit, pubKeyHash)
17875
17876 return bscript.compile([OPS.OP_0, pubKeyHash])
17877 }
17878
17879 function decode (buffer) {
17880 typeforce(check, buffer)
17881
17882 return buffer.slice(2)
17883 }
17884
17885 module.exports = {
17886 check: check,
17887 decode: decode,
17888 encode: encode
17889 }
17890
17891 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17892 arguments[4][55][0].apply(exports,arguments)
17893 },{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17894 // {signature} {pubKey}
17895
17896 var p2sh = require('../scripthash/input')
17897
17898 module.exports = {
17899 check: p2sh.check,
17900 decodeStack: p2sh.decodeStack,
17901 encodeStack: p2sh.encodeStack
17902 }
17903
17904 },{"../scripthash/input":66}],75:[function(require,module,exports){
17905 // OP_0 {scriptHash}
17906
17907 var bscript = require('../../script')
17908 var types = require('../../types')
17909 var typeforce = require('typeforce')
17910 var OPS = require('bitcoin-ops')
17911
17912 function check (script) {
17913 var buffer = bscript.compile(script)
17914
17915 return buffer.length === 34 &&
17916 buffer[0] === OPS.OP_0 &&
17917 buffer[1] === 0x20
17918 }
17919 check.toJSON = function () { return 'Witness scriptHash output' }
17920
17921 function encode (scriptHash) {
17922 typeforce(types.Hash256bit, scriptHash)
17923
17924 return bscript.compile([OPS.OP_0, scriptHash])
17925 }
17926
17927 function decode (buffer) {
17928 typeforce(check, buffer)
17929
17930 return buffer.slice(2)
17931 }
17932
17933 module.exports = {
17934 check: check,
17935 decode: decode,
17936 encode: encode
17937 }
17938
17939 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17940 var Buffer = require('safe-buffer').Buffer
17941 var bcrypto = require('./crypto')
17942 var bscript = require('./script')
17943 var bufferutils = require('./bufferutils')
17944 var opcodes = require('bitcoin-ops')
17945 var typeforce = require('typeforce')
17946 var types = require('./types')
17947 var varuint = require('varuint-bitcoin')
17948
17949 function varSliceSize (someScript) {
17950 var length = someScript.length
17951
17952 return varuint.encodingLength(length) + length
17953 }
17954
17955 function vectorSize (someVector) {
17956 var length = someVector.length
17957
17958 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17959 return sum + varSliceSize(witness)
17960 }, 0)
17961 }
17962
17963 function Transaction () {
17964 this.version = 1
17965 this.locktime = 0
17966 this.ins = []
17967 this.outs = []
17968 }
17969
17970 Transaction.DEFAULT_SEQUENCE = 0xffffffff
17971 Transaction.SIGHASH_ALL = 0x01
17972 Transaction.SIGHASH_NONE = 0x02
17973 Transaction.SIGHASH_SINGLE = 0x03
17974 Transaction.SIGHASH_ANYONECANPAY = 0x80
17975 Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
17976 Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
17977
17978 var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
17979 var EMPTY_WITNESS = []
17980 var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
17981 var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
17982 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
17983 var BLANK_OUTPUT = {
17984 script: EMPTY_SCRIPT,
17985 valueBuffer: VALUE_UINT64_MAX
17986 }
17987
17988 Transaction.fromBuffer = function (buffer, __noStrict) {
17989 var offset = 0
17990 function readSlice (n) {
17991 offset += n
17992 return buffer.slice(offset - n, offset)
17993 }
17994
17995 function readUInt32 () {
17996 var i = buffer.readUInt32LE(offset)
17997 offset += 4
17998 return i
17999 }
18000
18001 function readInt32 () {
18002 var i = buffer.readInt32LE(offset)
18003 offset += 4
18004 return i
18005 }
18006
18007 function readUInt64 () {
18008 var i = bufferutils.readUInt64LE(buffer, offset)
18009 offset += 8
18010 return i
18011 }
18012
18013 function readVarInt () {
18014 var vi = varuint.decode(buffer, offset)
18015 offset += varuint.decode.bytes
18016 return vi
18017 }
18018
18019 function readVarSlice () {
18020 return readSlice(readVarInt())
18021 }
18022
18023 function readVector () {
18024 var count = readVarInt()
18025 var vector = []
18026 for (var i = 0; i < count; i++) vector.push(readVarSlice())
18027 return vector
18028 }
18029
18030 var tx = new Transaction()
18031 tx.version = readInt32()
18032
18033 var marker = buffer.readUInt8(offset)
18034 var flag = buffer.readUInt8(offset + 1)
18035
18036 var hasWitnesses = false
18037 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18038 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18039 offset += 2
18040 hasWitnesses = true
18041 }
18042
18043 var vinLen = readVarInt()
18044 for (var i = 0; i < vinLen; ++i) {
18045 tx.ins.push({
18046 hash: readSlice(32),
18047 index: readUInt32(),
18048 script: readVarSlice(),
18049 sequence: readUInt32(),
18050 witness: EMPTY_WITNESS
18051 })
18052 }
18053
18054 var voutLen = readVarInt()
18055 for (i = 0; i < voutLen; ++i) {
18056 tx.outs.push({
18057 value: readUInt64(),
18058 script: readVarSlice()
18059 })
18060 }
18061
18062 if (hasWitnesses) {
18063 for (i = 0; i < vinLen; ++i) {
18064 tx.ins[i].witness = readVector()
18065 }
18066
18067 // was this pointless?
18068 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18069 }
18070
18071 tx.locktime = readUInt32()
18072
18073 if (__noStrict) return tx
18074 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18075
18076 return tx
18077 }
18078
18079 Transaction.fromHex = function (hex) {
18080 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18081 }
18082
18083 Transaction.isCoinbaseHash = function (buffer) {
18084 typeforce(types.Hash256bit, buffer)
18085 for (var i = 0; i < 32; ++i) {
18086 if (buffer[i] !== 0) return false
18087 }
18088 return true
18089 }
18090
18091 Transaction.prototype.isCoinbase = function () {
18092 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
18093 }
18094
18095 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18096 typeforce(types.tuple(
18097 types.Hash256bit,
18098 types.UInt32,
18099 types.maybe(types.UInt32),
18100 types.maybe(types.Buffer)
18101 ), arguments)
18102
18103 if (types.Null(sequence)) {
18104 sequence = Transaction.DEFAULT_SEQUENCE
18105 }
18106
18107 // Add the input and return the input's index
18108 return (this.ins.push({
18109 hash: hash,
18110 index: index,
18111 script: scriptSig || EMPTY_SCRIPT,
18112 sequence: sequence,
18113 witness: EMPTY_WITNESS
18114 }) - 1)
18115 }
18116
18117 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18118 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18119
18120 // Add the output and return the output's index
18121 return (this.outs.push({
18122 script: scriptPubKey,
18123 value: value
18124 }) - 1)
18125 }
18126
18127 Transaction.prototype.hasWitnesses = function () {
18128 return this.ins.some(function (x) {
18129 return x.witness.length !== 0
18130 })
18131 }
18132
18133 Transaction.prototype.weight = function () {
18134 var base = this.__byteLength(false)
18135 var total = this.__byteLength(true)
18136 return base * 3 + total
18137 }
18138
18139 Transaction.prototype.virtualSize = function () {
18140 return Math.ceil(this.weight() / 4)
18141 }
18142
18143 Transaction.prototype.byteLength = function () {
18144 return this.__byteLength(true)
18145 }
18146
18147 Transaction.prototype.__byteLength = function (__allowWitness) {
18148 var hasWitnesses = __allowWitness && this.hasWitnesses()
18149
18150 return (
18151 (hasWitnesses ? 10 : 8) +
18152 varuint.encodingLength(this.ins.length) +
18153 varuint.encodingLength(this.outs.length) +
18154 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18155 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18156 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18157 )
18158 }
18159
18160 Transaction.prototype.clone = function () {
18161 var newTx = new Transaction()
18162 newTx.version = this.version
18163 newTx.locktime = this.locktime
18164
18165 newTx.ins = this.ins.map(function (txIn) {
18166 return {
18167 hash: txIn.hash,
18168 index: txIn.index,
18169 script: txIn.script,
18170 sequence: txIn.sequence,
18171 witness: txIn.witness
18172 }
18173 })
18174
18175 newTx.outs = this.outs.map(function (txOut) {
18176 return {
18177 script: txOut.script,
18178 value: txOut.value
18179 }
18180 })
18181
18182 return newTx
18183 }
18184
18185 /**
18186 * Hash transaction for signing a specific input.
18187 *
18188 * Bitcoin uses a different hash for each signed transaction input.
18189 * This method copies the transaction, makes the necessary changes based on the
18190 * hashType, and then hashes the result.
18191 * This hash can then be used to sign the provided transaction input.
18192 */
18193 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18194 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18195
18196 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18197 if (inIndex >= this.ins.length) return ONE
18198
18199 // ignore OP_CODESEPARATOR
18200 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18201 return x !== opcodes.OP_CODESEPARATOR
18202 }))
18203
18204 var txTmp = this.clone()
18205
18206 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18207 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18208 txTmp.outs = []
18209
18210 // ignore sequence numbers (except at inIndex)
18211 txTmp.ins.forEach(function (input, i) {
18212 if (i === inIndex) return
18213
18214 input.sequence = 0
18215 })
18216
18217 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18218 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18219 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18220 if (inIndex >= this.outs.length) return ONE
18221
18222 // truncate outputs after
18223 txTmp.outs.length = inIndex + 1
18224
18225 // "blank" outputs before
18226 for (var i = 0; i < inIndex; i++) {
18227 txTmp.outs[i] = BLANK_OUTPUT
18228 }
18229
18230 // ignore sequence numbers (except at inIndex)
18231 txTmp.ins.forEach(function (input, y) {
18232 if (y === inIndex) return
18233
18234 input.sequence = 0
18235 })
18236 }
18237
18238 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18239 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18240 txTmp.ins = [txTmp.ins[inIndex]]
18241 txTmp.ins[0].script = ourScript
18242
18243 // SIGHASH_ALL: only ignore input scripts
18244 } else {
18245 // "blank" others input scripts
18246 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18247 txTmp.ins[inIndex].script = ourScript
18248 }
18249
18250 // serialize and hash
18251 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18252 buffer.writeInt32LE(hashType, buffer.length - 4)
18253 txTmp.__toBuffer(buffer, 0, false)
18254
18255 return bcrypto.hash256(buffer)
18256 }
18257
18258 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18259 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18260
18261 var tbuffer, toffset
18262 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18263 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18264 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18265 function writeVarInt (i) {
18266 varuint.encode(i, tbuffer, toffset)
18267 toffset += varuint.encode.bytes
18268 }
18269 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18270
18271 var hashOutputs = ZERO
18272 var hashPrevouts = ZERO
18273 var hashSequence = ZERO
18274
18275 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18276 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18277 toffset = 0
18278
18279 this.ins.forEach(function (txIn) {
18280 writeSlice(txIn.hash)
18281 writeUInt32(txIn.index)
18282 })
18283
18284 hashPrevouts = bcrypto.hash256(tbuffer)
18285 }
18286
18287 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18288 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18289 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18290 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18291 toffset = 0
18292
18293 this.ins.forEach(function (txIn) {
18294 writeUInt32(txIn.sequence)
18295 })
18296
18297 hashSequence = bcrypto.hash256(tbuffer)
18298 }
18299
18300 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18301 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18302 var txOutsSize = this.outs.reduce(function (sum, output) {
18303 return sum + 8 + varSliceSize(output.script)
18304 }, 0)
18305
18306 tbuffer = Buffer.allocUnsafe(txOutsSize)
18307 toffset = 0
18308
18309 this.outs.forEach(function (out) {
18310 writeUInt64(out.value)
18311 writeVarSlice(out.script)
18312 })
18313
18314 hashOutputs = bcrypto.hash256(tbuffer)
18315 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18316 var output = this.outs[inIndex]
18317
18318 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18319 toffset = 0
18320 writeUInt64(output.value)
18321 writeVarSlice(output.script)
18322
18323 hashOutputs = bcrypto.hash256(tbuffer)
18324 }
18325
18326 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18327 toffset = 0
18328
18329 var input = this.ins[inIndex]
18330 writeUInt32(this.version)
18331 writeSlice(hashPrevouts)
18332 writeSlice(hashSequence)
18333 writeSlice(input.hash)
18334 writeUInt32(input.index)
18335 writeVarSlice(prevOutScript)
18336 writeUInt64(value)
18337 writeUInt32(input.sequence)
18338 writeSlice(hashOutputs)
18339 writeUInt32(this.locktime)
18340 writeUInt32(hashType)
18341 return bcrypto.hash256(tbuffer)
18342 }
18343
18344 Transaction.prototype.getHash = function () {
18345 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18346 }
18347
18348 Transaction.prototype.getId = function () {
18349 // transaction hash's are displayed in reverse order
18350 return this.getHash().reverse().toString('hex')
18351 }
18352
18353 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18354 return this.__toBuffer(buffer, initialOffset, true)
18355 }
18356
18357 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18358 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18359
18360 var offset = initialOffset || 0
18361 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18362 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18363 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18364 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18365 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18366 function writeVarInt (i) {
18367 varuint.encode(i, buffer, offset)
18368 offset += varuint.encode.bytes
18369 }
18370 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18371 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18372
18373 writeInt32(this.version)
18374
18375 var hasWitnesses = __allowWitness && this.hasWitnesses()
18376
18377 if (hasWitnesses) {
18378 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18379 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18380 }
18381
18382 writeVarInt(this.ins.length)
18383
18384 this.ins.forEach(function (txIn) {
18385 writeSlice(txIn.hash)
18386 writeUInt32(txIn.index)
18387 writeVarSlice(txIn.script)
18388 writeUInt32(txIn.sequence)
18389 })
18390
18391 writeVarInt(this.outs.length)
18392 this.outs.forEach(function (txOut) {
18393 if (!txOut.valueBuffer) {
18394 writeUInt64(txOut.value)
18395 } else {
18396 writeSlice(txOut.valueBuffer)
18397 }
18398
18399 writeVarSlice(txOut.script)
18400 })
18401
18402 if (hasWitnesses) {
18403 this.ins.forEach(function (input) {
18404 writeVector(input.witness)
18405 })
18406 }
18407
18408 writeUInt32(this.locktime)
18409
18410 // avoid slicing unless necessary
18411 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18412 return buffer
18413 }
18414
18415 Transaction.prototype.toHex = function () {
18416 return this.toBuffer().toString('hex')
18417 }
18418
18419 Transaction.prototype.setInputScript = function (index, scriptSig) {
18420 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18421
18422 this.ins[index].script = scriptSig
18423 }
18424
18425 Transaction.prototype.setWitness = function (index, witness) {
18426 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18427
18428 this.ins[index].witness = witness
18429 }
18430
18431 module.exports = Transaction
18432
18433 },{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18434 var Buffer = require('safe-buffer').Buffer
18435 var baddress = require('./address')
18436 var bcrypto = require('./crypto')
18437 var bscript = require('./script')
18438 var networks = require('./networks')
18439 var ops = require('bitcoin-ops')
18440 var typeforce = require('typeforce')
18441 var types = require('./types')
18442 var scriptTypes = bscript.types
18443 var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18444 var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18445
18446 var ECPair = require('./ecpair')
18447 var ECSignature = require('./ecsignature')
18448 var Transaction = require('./transaction')
18449
18450 function extractChunks (type, chunks, script) {
18451 var pubKeys = []
18452 var signatures = []
18453 switch (type) {
18454 case scriptTypes.P2PKH:
18455 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18456 pubKeys = chunks.slice(1)
18457 signatures = chunks.slice(0, 1)
18458 break
18459
18460 case scriptTypes.P2PK:
18461 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18462 signatures = chunks.slice(0, 1)
18463 break
18464
18465 case scriptTypes.MULTISIG:
18466 if (script) {
18467 var multisig = bscript.multisig.output.decode(script)
18468 pubKeys = multisig.pubKeys
18469 }
18470
18471 signatures = chunks.slice(1).map(function (chunk) {
18472 return chunk.length === 0 ? undefined : chunk
18473 })
18474 break
18475 }
18476
18477 return {
18478 pubKeys: pubKeys,
18479 signatures: signatures
18480 }
18481 }
18482 function expandInput (scriptSig, witnessStack) {
18483 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18484
18485 var prevOutScript
18486 var prevOutType
18487 var scriptType
18488 var script
18489 var redeemScript
18490 var witnessScript
18491 var witnessScriptType
18492 var redeemScriptType
18493 var witness = false
18494 var p2wsh = false
18495 var p2sh = false
18496 var witnessProgram
18497 var chunks
18498
18499 var scriptSigChunks = bscript.decompile(scriptSig)
18500 var sigType = bscript.classifyInput(scriptSigChunks, true)
18501 if (sigType === scriptTypes.P2SH) {
18502 p2sh = true
18503 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18504 redeemScriptType = bscript.classifyOutput(redeemScript)
18505 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18506 prevOutType = scriptTypes.P2SH
18507 script = redeemScript
18508 }
18509
18510 var classifyWitness = bscript.classifyWitness(witnessStack)
18511 if (classifyWitness === scriptTypes.P2WSH) {
18512 witnessScript = witnessStack[witnessStack.length - 1]
18513 witnessScriptType = bscript.classifyOutput(witnessScript)
18514 p2wsh = true
18515 if (scriptSig.length === 0) {
18516 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18517 prevOutType = scriptTypes.P2WSH
18518 if (typeof redeemScript !== 'undefined') {
18519 throw new Error('Redeem script given when unnecessary')
18520 }
18521 // bare witness
18522 } else {
18523 if (!redeemScript) {
18524 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18525 }
18526 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18527 if (!redeemScript.equals(witnessProgram)) {
18528 throw new Error('Redeem script didn\'t match witnessScript')
18529 }
18530 }
18531
18532 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18533 throw new Error('unsupported witness script')
18534 }
18535 script = witnessScript
18536 scriptType = witnessScriptType
18537 chunks = witnessStack.slice(0, -1)
18538 } else if (classifyWitness === scriptTypes.P2WPKH) {
18539 var key = witnessStack[witnessStack.length - 1]
18540 var keyHash = bcrypto.hash160(key)
18541 if (scriptSig.length === 0) {
18542 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18543 prevOutType = scriptTypes.P2WPKH
18544 if (typeof redeemScript !== 'undefined') {
18545 throw new Error('Redeem script given when unnecessary')
18546 }
18547 } else {
18548 if (!redeemScript) {
18549 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18550 }
18551 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18552 if (!redeemScript.equals(witnessProgram)) {
18553 throw new Error('Redeem script did not have the right witness program')
18554 }
18555 }
18556
18557 scriptType = scriptTypes.P2PKH
18558 chunks = witnessStack
18559 } else if (redeemScript) {
18560 if (P2SH.indexOf(redeemScriptType) === -1) {
18561 throw new Error('Bad redeemscript!')
18562 }
18563
18564 script = redeemScript
18565 scriptType = redeemScriptType
18566 chunks = scriptSigChunks.slice(0, -1)
18567 } else {
18568 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18569 chunks = scriptSigChunks
18570 }
18571
18572 var expanded = extractChunks(scriptType, chunks, script)
18573
18574 var result = {
18575 pubKeys: expanded.pubKeys,
18576 signatures: expanded.signatures,
18577 prevOutScript: prevOutScript,
18578 prevOutType: prevOutType,
18579 signType: scriptType,
18580 signScript: script,
18581 witness: Boolean(witness)
18582 }
18583
18584 if (p2sh) {
18585 result.redeemScript = redeemScript
18586 result.redeemScriptType = redeemScriptType
18587 }
18588
18589 if (p2wsh) {
18590 result.witnessScript = witnessScript
18591 result.witnessScriptType = witnessScriptType
18592 }
18593
18594 return result
18595 }
18596
18597 // could be done in expandInput, but requires the original Transaction for hashForSignature
18598 function fixMultisigOrder (input, transaction, vin) {
18599 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18600 if (input.pubKeys.length === input.signatures.length) return
18601
18602 var unmatched = input.signatures.concat()
18603
18604 input.signatures = input.pubKeys.map(function (pubKey) {
18605 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18606 var match
18607
18608 // check for a signature
18609 unmatched.some(function (signature, i) {
18610 // skip if undefined || OP_0
18611 if (!signature) return false
18612
18613 // TODO: avoid O(n) hashForSignature
18614 var parsed = ECSignature.parseScriptSignature(signature)
18615 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18616
18617 // skip if signature does not match pubKey
18618 if (!keyPair.verify(hash, parsed.signature)) return false
18619
18620 // remove matched signature from unmatched
18621 unmatched[i] = undefined
18622 match = signature
18623
18624 return true
18625 })
18626
18627 return match
18628 })
18629 }
18630
18631 function expandOutput (script, scriptType, ourPubKey) {
18632 typeforce(types.Buffer, script)
18633
18634 var scriptChunks = bscript.decompile(script)
18635 if (!scriptType) {
18636 scriptType = bscript.classifyOutput(script)
18637 }
18638
18639 var pubKeys = []
18640
18641 switch (scriptType) {
18642 // does our hash160(pubKey) match the output scripts?
18643 case scriptTypes.P2PKH:
18644 if (!ourPubKey) break
18645
18646 var pkh1 = scriptChunks[2]
18647 var pkh2 = bcrypto.hash160(ourPubKey)
18648 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18649 break
18650
18651 // does our hash160(pubKey) match the output scripts?
18652 case scriptTypes.P2WPKH:
18653 if (!ourPubKey) break
18654
18655 var wpkh1 = scriptChunks[1]
18656 var wpkh2 = bcrypto.hash160(ourPubKey)
18657 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18658 break
18659
18660 case scriptTypes.P2PK:
18661 pubKeys = scriptChunks.slice(0, 1)
18662 break
18663
18664 case scriptTypes.MULTISIG:
18665 pubKeys = scriptChunks.slice(1, -2)
18666 break
18667
18668 default: return { scriptType: scriptType }
18669 }
18670
18671 return {
18672 pubKeys: pubKeys,
18673 scriptType: scriptType,
18674 signatures: pubKeys.map(function () { return undefined })
18675 }
18676 }
18677
18678 function checkP2shInput (input, redeemScriptHash) {
18679 if (input.prevOutType) {
18680 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18681
18682 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18683 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18684 }
18685 }
18686
18687 function checkP2WSHInput (input, witnessScriptHash) {
18688 if (input.prevOutType) {
18689 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18690
18691 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18692 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18693 }
18694 }
18695
18696 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18697 var expanded
18698 var prevOutType
18699 var prevOutScript
18700
18701 var p2sh = false
18702 var p2shType
18703 var redeemScriptHash
18704
18705 var witness = false
18706 var p2wsh = false
18707 var witnessType
18708 var witnessScriptHash
18709
18710 var signType
18711 var signScript
18712
18713 if (redeemScript && witnessScript) {
18714 redeemScriptHash = bcrypto.hash160(redeemScript)
18715 witnessScriptHash = bcrypto.sha256(witnessScript)
18716 checkP2shInput(input, redeemScriptHash)
18717
18718 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18719
18720 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18721 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18722 prevOutType = bscript.types.P2SH
18723 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18724 p2sh = witness = p2wsh = true
18725 p2shType = bscript.types.P2WSH
18726 signType = witnessType = expanded.scriptType
18727 signScript = witnessScript
18728 } else if (redeemScript) {
18729 redeemScriptHash = bcrypto.hash160(redeemScript)
18730 checkP2shInput(input, redeemScriptHash)
18731
18732 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18733 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18734
18735 prevOutType = bscript.types.P2SH
18736 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18737 p2sh = true
18738 signType = p2shType = expanded.scriptType
18739 signScript = redeemScript
18740 witness = signType === bscript.types.P2WPKH
18741 } else if (witnessScript) {
18742 witnessScriptHash = bcrypto.sha256(witnessScript)
18743 checkP2WSHInput(input, witnessScriptHash)
18744
18745 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18746 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18747
18748 prevOutType = bscript.types.P2WSH
18749 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18750 witness = p2wsh = true
18751 signType = witnessType = expanded.scriptType
18752 signScript = witnessScript
18753 } else if (input.prevOutType) {
18754 // embedded scripts are not possible without a redeemScript
18755 if (input.prevOutType === scriptTypes.P2SH ||
18756 input.prevOutType === scriptTypes.P2WSH) {
18757 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18758 }
18759
18760 prevOutType = input.prevOutType
18761 prevOutScript = input.prevOutScript
18762 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18763 if (!expanded.pubKeys) return
18764
18765 witness = (input.prevOutType === scriptTypes.P2WPKH)
18766 signType = prevOutType
18767 signScript = prevOutScript
18768 } else {
18769 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18770 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18771 prevOutType = scriptTypes.P2PKH
18772 witness = false
18773 signType = prevOutType
18774 signScript = prevOutScript
18775 }
18776
18777 if (witness && !types.Satoshi(witnessValue)) {
18778 throw new Error('Input was witness but not given witness value')
18779 }
18780
18781 if (signType === scriptTypes.P2WPKH) {
18782 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18783 }
18784
18785 if (p2sh) {
18786 input.redeemScript = redeemScript
18787 input.redeemScriptType = p2shType
18788 }
18789
18790 if (p2wsh) {
18791 input.witnessScript = witnessScript
18792 input.witnessScriptType = witnessType
18793 }
18794
18795 input.pubKeys = expanded.pubKeys
18796 input.signatures = expanded.signatures
18797 input.signScript = signScript
18798 input.signType = signType
18799 input.prevOutScript = prevOutScript
18800 input.prevOutType = prevOutType
18801 input.witness = witness
18802 }
18803
18804 function buildStack (type, signatures, pubKeys, allowIncomplete) {
18805 if (type === scriptTypes.P2PKH) {
18806 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18807 } else if (type === scriptTypes.P2PK) {
18808 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18809 } else if (type === scriptTypes.MULTISIG) {
18810 if (signatures.length > 0) {
18811 signatures = signatures.map(function (signature) {
18812 return signature || ops.OP_0
18813 })
18814 if (!allowIncomplete) {
18815 // remove blank signatures
18816 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18817 }
18818
18819 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18820 }
18821 } else {
18822 throw new Error('Not yet supported')
18823 }
18824
18825 if (!allowIncomplete) throw new Error('Not enough signatures provided')
18826
18827 return []
18828 }
18829
18830 function buildInput (input, allowIncomplete) {
18831 var scriptType = input.prevOutType
18832 var sig = []
18833 var witness = []
18834 if (SIGNABLE.indexOf(scriptType) !== -1) {
18835 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
18836 }
18837
18838 var p2sh = false
18839 if (scriptType === bscript.types.P2SH) {
18840 // We can remove this error later when we have a guarantee prepareInput
18841 // rejects unsignable scripts - it MUST be signable at this point.
18842 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18843 throw new Error('Impossible to sign this type')
18844 }
18845 p2sh = true
18846 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18847 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18848 }
18849 // If it wasn't SIGNABLE, it's witness, defer to that
18850 scriptType = input.redeemScriptType
18851 }
18852
18853 if (scriptType === bscript.types.P2WPKH) {
18854 // P2WPKH is a special case of P2PKH
18855 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18856 } else if (scriptType === bscript.types.P2WSH) {
18857 // We can remove this check later
18858 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18859 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18860 witness.push(input.witnessScript)
18861 } else {
18862 // We can remove this error later when we have a guarantee prepareInput
18863 // rejects unsignble scripts - it MUST be signable at this point.
18864 throw new Error()
18865 }
18866
18867 scriptType = input.witnessScriptType
18868 }
18869
18870 // append redeemScript if necessary
18871 if (p2sh) {
18872 sig.push(input.redeemScript)
18873 }
18874
18875 return {
18876 type: scriptType,
18877 script: bscript.compile(sig),
18878 witness: witness
18879 }
18880 }
18881
18882 function TransactionBuilder (network, maximumFeeRate) {
18883 this.prevTxMap = {}
18884 this.network = network || networks.bitcoin
18885
18886 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18887 this.maximumFeeRate = maximumFeeRate || 1000
18888
18889 this.inputs = []
18890 this.tx = new Transaction()
18891 }
18892
18893 TransactionBuilder.prototype.setLockTime = function (locktime) {
18894 typeforce(types.UInt32, locktime)
18895
18896 // if any signatures exist, throw
18897 if (this.inputs.some(function (input) {
18898 if (!input.signatures) return false
18899
18900 return input.signatures.some(function (s) { return s })
18901 })) {
18902 throw new Error('No, this would invalidate signatures')
18903 }
18904
18905 this.tx.locktime = locktime
18906 }
18907
18908 TransactionBuilder.prototype.setVersion = function (version) {
18909 typeforce(types.UInt32, version)
18910
18911 // XXX: this might eventually become more complex depending on what the versions represent
18912 this.tx.version = version
18913 }
18914
18915 TransactionBuilder.fromTransaction = function (transaction, network) {
18916 var txb = new TransactionBuilder(network)
18917
18918 // Copy transaction fields
18919 txb.setVersion(transaction.version)
18920 txb.setLockTime(transaction.locktime)
18921
18922 // Copy outputs (done first to avoid signature invalidation)
18923 transaction.outs.forEach(function (txOut) {
18924 txb.addOutput(txOut.script, txOut.value)
18925 })
18926
18927 // Copy inputs
18928 transaction.ins.forEach(function (txIn) {
18929 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18930 sequence: txIn.sequence,
18931 script: txIn.script,
18932 witness: txIn.witness
18933 })
18934 })
18935
18936 // fix some things not possible through the public API
18937 txb.inputs.forEach(function (input, i) {
18938 fixMultisigOrder(input, transaction, i)
18939 })
18940
18941 return txb
18942 }
18943
18944 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18945 if (!this.__canModifyInputs()) {
18946 throw new Error('No, this would invalidate signatures')
18947 }
18948
18949 var value
18950
18951 // is it a hex string?
18952 if (typeof txHash === 'string') {
18953 // transaction hashs's are displayed in reverse order, un-reverse it
18954 txHash = Buffer.from(txHash, 'hex').reverse()
18955
18956 // is it a Transaction object?
18957 } else if (txHash instanceof Transaction) {
18958 var txOut = txHash.outs[vout]
18959 prevOutScript = txOut.script
18960 value = txOut.value
18961
18962 txHash = txHash.getHash()
18963 }
18964
18965 return this.__addInputUnsafe(txHash, vout, {
18966 sequence: sequence,
18967 prevOutScript: prevOutScript,
18968 value: value
18969 })
18970 }
18971
18972 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18973 if (Transaction.isCoinbaseHash(txHash)) {
18974 throw new Error('coinbase inputs not supported')
18975 }
18976
18977 var prevTxOut = txHash.toString('hex') + ':' + vout
18978 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
18979
18980 var input = {}
18981
18982 // derive what we can from the scriptSig
18983 if (options.script !== undefined) {
18984 input = expandInput(options.script, options.witness || [])
18985 }
18986
18987 // if an input value was given, retain it
18988 if (options.value !== undefined) {
18989 input.value = options.value
18990 }
18991
18992 // derive what we can from the previous transactions output script
18993 if (!input.prevOutScript && options.prevOutScript) {
18994 var prevOutType
18995
18996 if (!input.pubKeys && !input.signatures) {
18997 var expanded = expandOutput(options.prevOutScript)
18998
18999 if (expanded.pubKeys) {
19000 input.pubKeys = expanded.pubKeys
19001 input.signatures = expanded.signatures
19002 }
19003
19004 prevOutType = expanded.scriptType
19005 }
19006
19007 input.prevOutScript = options.prevOutScript
19008 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
19009 }
19010
19011 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
19012 this.inputs[vin] = input
19013 this.prevTxMap[prevTxOut] = vin
19014
19015 return vin
19016 }
19017
19018 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19019 if (!this.__canModifyOutputs()) {
19020 throw new Error('No, this would invalidate signatures')
19021 }
19022
19023 // Attempt to get a script if it's a base58 address string
19024 if (typeof scriptPubKey === 'string') {
19025 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
19026 }
19027
19028 return this.tx.addOutput(scriptPubKey, value)
19029 }
19030
19031 TransactionBuilder.prototype.build = function () {
19032 return this.__build(false)
19033 }
19034 TransactionBuilder.prototype.buildIncomplete = function () {
19035 return this.__build(true)
19036 }
19037
19038 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19039 if (!allowIncomplete) {
19040 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19041 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19042 }
19043
19044 var tx = this.tx.clone()
19045 // Create script signatures from inputs
19046 this.inputs.forEach(function (input, i) {
19047 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19048 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19049 var result = buildInput(input, allowIncomplete)
19050
19051 // skip if no result
19052 if (!allowIncomplete) {
19053 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19054 throw new Error(result.type + ' not supported')
19055 }
19056 }
19057
19058 tx.setInputScript(i, result.script)
19059 tx.setWitness(i, result.witness)
19060 })
19061
19062 if (!allowIncomplete) {
19063 // do not rely on this, its merely a last resort
19064 if (this.__overMaximumFees(tx.byteLength())) {
19065 throw new Error('Transaction has absurd fees')
19066 }
19067 }
19068
19069 return tx
19070 }
19071
19072 function canSign (input) {
19073 return input.prevOutScript !== undefined &&
19074 input.signScript !== undefined &&
19075 input.pubKeys !== undefined &&
19076 input.signatures !== undefined &&
19077 input.signatures.length === input.pubKeys.length &&
19078 input.pubKeys.length > 0 &&
19079 input.witness !== undefined
19080 }
19081
19082 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19083 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19084 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19085 hashType = hashType || Transaction.SIGHASH_ALL
19086
19087 var input = this.inputs[vin]
19088
19089 // if redeemScript was previously provided, enforce consistency
19090 if (input.redeemScript !== undefined &&
19091 redeemScript &&
19092 !input.redeemScript.equals(redeemScript)) {
19093 throw new Error('Inconsistent redeemScript')
19094 }
19095
19096 var kpPubKey = keyPair.getPublicKeyBuffer()
19097 if (!canSign(input)) {
19098 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19099 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19100 }
19101
19102 // ready to sign
19103 var signatureHash
19104 if (input.witness) {
19105 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
19106 } else {
19107 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19108 }
19109 // enforce in order signing of public keys
19110 var signed = input.pubKeys.some(function (pubKey, i) {
19111 if (!kpPubKey.equals(pubKey)) return false
19112 if (input.signatures[i]) throw new Error('Signature already exists')
19113
19114 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19115 return true
19116 })
19117
19118 if (!signed) throw new Error('Key pair cannot sign for this input')
19119 }
19120
19121 function signatureHashType (buffer) {
19122 return buffer.readUInt8(buffer.length - 1)
19123 }
19124
19125 TransactionBuilder.prototype.__canModifyInputs = function () {
19126 return this.inputs.every(function (input) {
19127 // any signatures?
19128 if (input.signatures === undefined) return true
19129
19130 return input.signatures.every(function (signature) {
19131 if (!signature) return true
19132 var hashType = signatureHashType(signature)
19133
19134 // if SIGHASH_ANYONECANPAY is set, signatures would not
19135 // be invalidated by more inputs
19136 return hashType & Transaction.SIGHASH_ANYONECANPAY
19137 })
19138 })
19139 }
19140
19141 TransactionBuilder.prototype.__canModifyOutputs = function () {
19142 var nInputs = this.tx.ins.length
19143 var nOutputs = this.tx.outs.length
19144
19145 return this.inputs.every(function (input) {
19146 if (input.signatures === undefined) return true
19147
19148 return input.signatures.every(function (signature) {
19149 if (!signature) return true
19150 var hashType = signatureHashType(signature)
19151
19152 var hashTypeMod = hashType & 0x1f
19153 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19154 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19155 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19156 // some signatures would be invalidated by the addition
19157 // of more outputs
19158 return nInputs <= nOutputs
19159 }
19160 })
19161 })
19162 }
19163
19164 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19165 // not all inputs will have .value defined
19166 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
19167
19168 // but all outputs do, and if we have any input value
19169 // we can immediately determine if the outputs are too small
19170 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19171 var fee = incoming - outgoing
19172 var feeRate = fee / bytes
19173
19174 return feeRate > this.maximumFeeRate
19175 }
19176
19177 module.exports = TransactionBuilder
19178
19179 },{"./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){
19180 var typeforce = require('typeforce')
19181
19182 var UINT31_MAX = Math.pow(2, 31) - 1
19183 function UInt31 (value) {
19184 return typeforce.UInt32(value) && value <= UINT31_MAX
19185 }
19186
19187 function BIP32Path (value) {
19188 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19189 }
19190 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19191
19192 var SATOSHI_MAX = 21 * 1e14
19193 function Satoshi (value) {
19194 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19195 }
19196
19197 // external dependent types
19198 var BigInt = typeforce.quacksLike('BigInteger')
19199 var ECPoint = typeforce.quacksLike('Point')
19200
19201 // exposed, external API
19202 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19203 var Network = typeforce.compile({
19204 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19205 bip32: {
19206 public: typeforce.UInt32,
19207 private: typeforce.UInt32
19208 },
19209 pubKeyHash: typeforce.UInt8,
19210 scriptHash: typeforce.UInt8,
19211 wif: typeforce.UInt8
19212 })
19213
19214 // extend typeforce types with ours
19215 var types = {
19216 BigInt: BigInt,
19217 BIP32Path: BIP32Path,
19218 Buffer256bit: typeforce.BufferN(32),
19219 ECPoint: ECPoint,
19220 ECSignature: ECSignature,
19221 Hash160bit: typeforce.BufferN(20),
19222 Hash256bit: typeforce.BufferN(32),
19223 Network: Network,
19224 Satoshi: Satoshi,
19225 UInt31: UInt31
19226 }
19227
19228 for (var typeName in typeforce) {
19229 types[typeName] = typeforce[typeName]
19230 }
19231
19232 module.exports = types
19233
19234 },{"typeforce":109}],79:[function(require,module,exports){
19235 var basex = require('base-x')
19236 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
19237
19238 module.exports = basex(ALPHABET)
19239
19240 },{"base-x":34}],80:[function(require,module,exports){
19241 (function (Buffer){
19242 'use strict'
19243
19244 var base58 = require('bs58')
19245 var createHash = require('create-hash')
19246
19247 // SHA256(SHA256(buffer))
19248 function sha256x2 (buffer) {
19249 var tmp = createHash('sha256').update(buffer).digest()
19250 return createHash('sha256').update(tmp).digest()
19251 }
19252
19253 // Encode a buffer as a base58-check encoded string
19254 function encode (payload) {
19255 var checksum = sha256x2(payload)
19256
19257 return base58.encode(Buffer.concat([
19258 payload,
19259 checksum
19260 ], payload.length + 4))
19261 }
19262
19263 function decodeRaw (buffer) {
19264 var payload = buffer.slice(0, -4)
19265 var checksum = buffer.slice(-4)
19266 var newChecksum = sha256x2(payload)
19267
19268 if (checksum[0] ^ newChecksum[0] |
19269 checksum[1] ^ newChecksum[1] |
19270 checksum[2] ^ newChecksum[2] |
19271 checksum[3] ^ newChecksum[3]) return
19272
19273 return payload
19274 }
19275
19276 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19277 function decodeUnsafe (string) {
19278 var buffer = base58.decodeUnsafe(string)
19279 if (!buffer) return
19280
19281 return decodeRaw(buffer)
19282 }
19283
19284 function decode (string) {
19285 var buffer = base58.decode(string)
19286 var payload = decodeRaw(buffer)
19287 if (!payload) throw new Error('Invalid checksum')
19288 return payload
19289 }
19290
19291 module.exports = {
19292 encode: encode,
19293 decode: decode,
19294 decodeUnsafe: decodeUnsafe
19295 }
19296
19297 }).call(this,require("buffer").Buffer)
19298 },{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19299 var Buffer = require('safe-buffer').Buffer
19300 var Transform = require('stream').Transform
19301 var StringDecoder = require('string_decoder').StringDecoder
19302 var inherits = require('inherits')
19303
19304 function CipherBase (hashMode) {
19305 Transform.call(this)
19306 this.hashMode = typeof hashMode === 'string'
19307 if (this.hashMode) {
19308 this[hashMode] = this._finalOrDigest
19309 } else {
19310 this.final = this._finalOrDigest
19311 }
19312 if (this._final) {
19313 this.__final = this._final
19314 this._final = null
19315 }
19316 this._decoder = null
19317 this._encoding = null
19318 }
19319 inherits(CipherBase, Transform)
19320
19321 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19322 if (typeof data === 'string') {
19323 data = Buffer.from(data, inputEnc)
19324 }
19325
19326 var outData = this._update(data)
19327 if (this.hashMode) return this
19328
19329 if (outputEnc) {
19330 outData = this._toString(outData, outputEnc)
19331 }
19332
19333 return outData
19334 }
19335
19336 CipherBase.prototype.setAutoPadding = function () {}
19337 CipherBase.prototype.getAuthTag = function () {
19338 throw new Error('trying to get auth tag in unsupported state')
19339 }
19340
19341 CipherBase.prototype.setAuthTag = function () {
19342 throw new Error('trying to set auth tag in unsupported state')
19343 }
19344
19345 CipherBase.prototype.setAAD = function () {
19346 throw new Error('trying to set aad in unsupported state')
19347 }
19348
19349 CipherBase.prototype._transform = function (data, _, next) {
19350 var err
19351 try {
19352 if (this.hashMode) {
19353 this._update(data)
19354 } else {
19355 this.push(this._update(data))
19356 }
19357 } catch (e) {
19358 err = e
19359 } finally {
19360 next(err)
19361 }
19362 }
19363 CipherBase.prototype._flush = function (done) {
19364 var err
19365 try {
19366 this.push(this.__final())
19367 } catch (e) {
19368 err = e
19369 }
19370
19371 done(err)
19372 }
19373 CipherBase.prototype._finalOrDigest = function (outputEnc) {
19374 var outData = this.__final() || Buffer.alloc(0)
19375 if (outputEnc) {
19376 outData = this._toString(outData, outputEnc, true)
19377 }
19378 return outData
19379 }
19380
19381 CipherBase.prototype._toString = function (value, enc, fin) {
19382 if (!this._decoder) {
19383 this._decoder = new StringDecoder(enc)
19384 this._encoding = enc
19385 }
19386
19387 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
19388
19389 var out = this._decoder.write(value)
19390 if (fin) {
19391 out += this._decoder.end()
19392 }
19393
19394 return out
19395 }
19396
19397 module.exports = CipherBase
19398
19399 },{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19400 (function (Buffer){
19401 'use strict'
19402 var inherits = require('inherits')
19403 var md5 = require('./md5')
19404 var RIPEMD160 = require('ripemd160')
19405 var sha = require('sha.js')
19406
19407 var Base = require('cipher-base')
19408
19409 function HashNoConstructor (hash) {
19410 Base.call(this, 'digest')
19411
19412 this._hash = hash
19413 this.buffers = []
19414 }
19415
19416 inherits(HashNoConstructor, Base)
19417
19418 HashNoConstructor.prototype._update = function (data) {
19419 this.buffers.push(data)
19420 }
19421
19422 HashNoConstructor.prototype._final = function () {
19423 var buf = Buffer.concat(this.buffers)
19424 var r = this._hash(buf)
19425 this.buffers = null
19426
19427 return r
19428 }
19429
19430 function Hash (hash) {
19431 Base.call(this, 'digest')
19432
19433 this._hash = hash
19434 }
19435
19436 inherits(Hash, Base)
19437
19438 Hash.prototype._update = function (data) {
19439 this._hash.update(data)
19440 }
19441
19442 Hash.prototype._final = function () {
19443 return this._hash.digest()
19444 }
19445
19446 module.exports = function createHash (alg) {
19447 alg = alg.toLowerCase()
19448 if (alg === 'md5') return new HashNoConstructor(md5)
19449 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
19450
19451 return new Hash(sha(alg))
19452 }
19453
19454 }).call(this,require("buffer").Buffer)
19455 },{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19456 (function (Buffer){
19457 'use strict'
19458 var intSize = 4
19459 var zeroBuffer = new Buffer(intSize)
19460 zeroBuffer.fill(0)
19461
19462 var charSize = 8
19463 var hashSize = 16
19464
19465 function toArray (buf) {
19466 if ((buf.length % intSize) !== 0) {
19467 var len = buf.length + (intSize - (buf.length % intSize))
19468 buf = Buffer.concat([buf, zeroBuffer], len)
19469 }
19470
19471 var arr = new Array(buf.length >>> 2)
19472 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19473 arr[j] = buf.readInt32LE(i)
19474 }
19475
19476 return arr
19477 }
19478
19479 module.exports = function hash (buf, fn) {
19480 var arr = fn(toArray(buf), buf.length * charSize)
19481 buf = new Buffer(hashSize)
19482 for (var i = 0; i < arr.length; i++) {
19483 buf.writeInt32LE(arr[i], i << 2, true)
19484 }
19485 return buf
19486 }
19487
19488 }).call(this,require("buffer").Buffer)
19489 },{"buffer":4}],84:[function(require,module,exports){
19490 'use strict'
19491 /*
19492 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19493 * Digest Algorithm, as defined in RFC 1321.
19494 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19495 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19496 * Distributed under the BSD License
19497 * See http://pajhome.org.uk/crypt/md5 for more info.
19498 */
19499
19500 var makeHash = require('./make-hash')
19501
19502 /*
19503 * Calculate the MD5 of an array of little-endian words, and a bit length
19504 */
19505 function core_md5 (x, len) {
19506 /* append padding */
19507 x[len >> 5] |= 0x80 << ((len) % 32)
19508 x[(((len + 64) >>> 9) << 4) + 14] = len
19509
19510 var a = 1732584193
19511 var b = -271733879
19512 var c = -1732584194
19513 var d = 271733878
19514
19515 for (var i = 0; i < x.length; i += 16) {
19516 var olda = a
19517 var oldb = b
19518 var oldc = c
19519 var oldd = d
19520
19521 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19522 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19523 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19524 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19525 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19526 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19527 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19528 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19529 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19530 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19531 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19532 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19533 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19534 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19535 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19536 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19537
19538 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19539 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19540 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19541 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19542 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19543 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19544 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19545 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19546 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19547 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19548 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19549 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19550 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19551 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19552 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19553 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19554
19555 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19556 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19557 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19558 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19559 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19560 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19561 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19562 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19563 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19564 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19565 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19566 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19567 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19568 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19569 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19570 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19571
19572 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19573 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19574 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19575 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19576 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19577 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19578 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19579 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19580 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19581 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19582 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19583 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19584 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19585 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19586 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19587 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19588
19589 a = safe_add(a, olda)
19590 b = safe_add(b, oldb)
19591 c = safe_add(c, oldc)
19592 d = safe_add(d, oldd)
19593 }
19594
19595 return [a, b, c, d]
19596 }
19597
19598 /*
19599 * These functions implement the four basic operations the algorithm uses.
19600 */
19601 function md5_cmn (q, a, b, x, s, t) {
19602 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
19603 }
19604
19605 function md5_ff (a, b, c, d, x, s, t) {
19606 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19607 }
19608
19609 function md5_gg (a, b, c, d, x, s, t) {
19610 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19611 }
19612
19613 function md5_hh (a, b, c, d, x, s, t) {
19614 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19615 }
19616
19617 function md5_ii (a, b, c, d, x, s, t) {
19618 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19619 }
19620
19621 /*
19622 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19623 * to work around bugs in some JS interpreters.
19624 */
19625 function safe_add (x, y) {
19626 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19627 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19628 return (msw << 16) | (lsw & 0xFFFF)
19629 }
19630
19631 /*
19632 * Bitwise rotate a 32-bit number to the left.
19633 */
19634 function bit_rol (num, cnt) {
19635 return (num << cnt) | (num >>> (32 - cnt))
19636 }
19637
19638 module.exports = function md5 (buf) {
19639 return makeHash(buf, core_md5)
19640 }
19641
19642 },{"./make-hash":83}],85:[function(require,module,exports){
19643 'use strict'
19644 var inherits = require('inherits')
19645 var Legacy = require('./legacy')
19646 var Base = require('cipher-base')
19647 var Buffer = require('safe-buffer').Buffer
19648 var md5 = require('create-hash/md5')
19649 var RIPEMD160 = require('ripemd160')
19650
19651 var sha = require('sha.js')
19652
19653 var ZEROS = Buffer.alloc(128)
19654
19655 function Hmac (alg, key) {
19656 Base.call(this, 'digest')
19657 if (typeof key === 'string') {
19658 key = Buffer.from(key)
19659 }
19660
19661 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
19662
19663 this._alg = alg
19664 this._key = key
19665 if (key.length > blocksize) {
19666 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19667 key = hash.update(key).digest()
19668 } else if (key.length < blocksize) {
19669 key = Buffer.concat([key, ZEROS], blocksize)
19670 }
19671
19672 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19673 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19674
19675 for (var i = 0; i < blocksize; i++) {
19676 ipad[i] = key[i] ^ 0x36
19677 opad[i] = key[i] ^ 0x5C
19678 }
19679 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19680 this._hash.update(ipad)
19681 }
19682
19683 inherits(Hmac, Base)
19684
19685 Hmac.prototype._update = function (data) {
19686 this._hash.update(data)
19687 }
19688
19689 Hmac.prototype._final = function () {
19690 var h = this._hash.digest()
19691 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19692 return hash.update(this._opad).update(h).digest()
19693 }
19694
19695 module.exports = function createHmac (alg, key) {
19696 alg = alg.toLowerCase()
19697 if (alg === 'rmd160' || alg === 'ripemd160') {
19698 return new Hmac('rmd160', key)
19699 }
19700 if (alg === 'md5') {
19701 return new Legacy(md5, key)
19702 }
19703 return new Hmac(alg, key)
19704 }
19705
19706 },{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19707 'use strict'
19708 var inherits = require('inherits')
19709 var Buffer = require('safe-buffer').Buffer
19710
19711 var Base = require('cipher-base')
19712
19713 var ZEROS = Buffer.alloc(128)
19714 var blocksize = 64
19715
19716 function Hmac (alg, key) {
19717 Base.call(this, 'digest')
19718 if (typeof key === 'string') {
19719 key = Buffer.from(key)
19720 }
19721
19722 this._alg = alg
19723 this._key = key
19724
19725 if (key.length > blocksize) {
19726 key = alg(key)
19727 } else if (key.length < blocksize) {
19728 key = Buffer.concat([key, ZEROS], blocksize)
19729 }
19730
19731 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19732 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19733
19734 for (var i = 0; i < blocksize; i++) {
19735 ipad[i] = key[i] ^ 0x36
19736 opad[i] = key[i] ^ 0x5C
19737 }
19738
19739 this._hash = [ipad]
19740 }
19741
19742 inherits(Hmac, Base)
19743
19744 Hmac.prototype._update = function (data) {
19745 this._hash.push(data)
19746 }
19747
19748 Hmac.prototype._final = function () {
19749 var h = this._alg(Buffer.concat(this._hash))
19750 return this._alg(Buffer.concat([this._opad, h]))
19751 }
19752 module.exports = Hmac
19753
19754 },{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
19755 var assert = require('assert')
19756 var BigInteger = require('bigi')
19757
19758 var Point = require('./point')
19759
19760 function Curve (p, a, b, Gx, Gy, n, h) {
19761 this.p = p
19762 this.a = a
19763 this.b = b
19764 this.G = Point.fromAffine(this, Gx, Gy)
19765 this.n = n
19766 this.h = h
19767
19768 this.infinity = new Point(this, null, null, BigInteger.ZERO)
19769
19770 // result caching
19771 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
19772
19773 // determine size of p in bytes
19774 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19775 }
19776
19777 Curve.prototype.pointFromX = function (isOdd, x) {
19778 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19779 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
19780
19781 var y = beta
19782 if (beta.isEven() ^ !isOdd) {
19783 y = this.p.subtract(y) // -y % p
19784 }
19785
19786 return Point.fromAffine(this, x, y)
19787 }
19788
19789 Curve.prototype.isInfinity = function (Q) {
19790 if (Q === this.infinity) return true
19791
19792 return Q.z.signum() === 0 && Q.y.signum() !== 0
19793 }
19794
19795 Curve.prototype.isOnCurve = function (Q) {
19796 if (this.isInfinity(Q)) return true
19797
19798 var x = Q.affineX
19799 var y = Q.affineY
19800 var a = this.a
19801 var b = this.b
19802 var p = this.p
19803
19804 // Check that xQ and yQ are integers in the interval [0, p - 1]
19805 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19806 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
19807
19808 // and check that y^2 = x^3 + ax + b (mod p)
19809 var lhs = y.square().mod(p)
19810 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19811 return lhs.equals(rhs)
19812 }
19813
19814 /**
19815 * Validate an elliptic curve point.
19816 *
19817 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19818 */
19819 Curve.prototype.validate = function (Q) {
19820 // Check Q != O
19821 assert(!this.isInfinity(Q), 'Point is at infinity')
19822 assert(this.isOnCurve(Q), 'Point is not on the curve')
19823
19824 // Check nQ = O (where Q is a scalar multiple of G)
19825 var nQ = Q.multiply(this.n)
19826 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
19827
19828 return true
19829 }
19830
19831 module.exports = Curve
19832
19833 },{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19834 module.exports={
19835 "secp128r1": {
19836 "p": "fffffffdffffffffffffffffffffffff",
19837 "a": "fffffffdfffffffffffffffffffffffc",
19838 "b": "e87579c11079f43dd824993c2cee5ed3",
19839 "n": "fffffffe0000000075a30d1b9038a115",
19840 "h": "01",
19841 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19842 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19843 },
19844 "secp160k1": {
19845 "p": "fffffffffffffffffffffffffffffffeffffac73",
19846 "a": "00",
19847 "b": "07",
19848 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19849 "h": "01",
19850 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19851 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19852 },
19853 "secp160r1": {
19854 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19855 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19856 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19857 "n": "0100000000000000000001f4c8f927aed3ca752257",
19858 "h": "01",
19859 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19860 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19861 },
19862 "secp192k1": {
19863 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19864 "a": "00",
19865 "b": "03",
19866 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19867 "h": "01",
19868 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19869 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19870 },
19871 "secp192r1": {
19872 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19873 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19874 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19875 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19876 "h": "01",
19877 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19878 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19879 },
19880 "secp256k1": {
19881 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19882 "a": "00",
19883 "b": "07",
19884 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19885 "h": "01",
19886 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19887 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19888 },
19889 "secp256r1": {
19890 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19891 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19892 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19893 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19894 "h": "01",
19895 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19896 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19897 }
19898 }
19899
19900 },{}],89:[function(require,module,exports){
19901 var Point = require('./point')
19902 var Curve = require('./curve')
19903
19904 var getCurveByName = require('./names')
19905
19906 module.exports = {
19907 Curve: Curve,
19908 Point: Point,
19909 getCurveByName: getCurveByName
19910 }
19911
19912 },{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19913 var BigInteger = require('bigi')
19914
19915 var curves = require('./curves.json')
19916 var Curve = require('./curve')
19917
19918 function getCurveByName (name) {
19919 var curve = curves[name]
19920 if (!curve) return null
19921
19922 var p = new BigInteger(curve.p, 16)
19923 var a = new BigInteger(curve.a, 16)
19924 var b = new BigInteger(curve.b, 16)
19925 var n = new BigInteger(curve.n, 16)
19926 var h = new BigInteger(curve.h, 16)
19927 var Gx = new BigInteger(curve.Gx, 16)
19928 var Gy = new BigInteger(curve.Gy, 16)
19929
19930 return new Curve(p, a, b, Gx, Gy, n, h)
19931 }
19932
19933 module.exports = getCurveByName
19934
19935 },{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19936 (function (Buffer){
19937 var assert = require('assert')
19938 var BigInteger = require('bigi')
19939
19940 var THREE = BigInteger.valueOf(3)
19941
19942 function Point (curve, x, y, z) {
19943 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
19944
19945 this.curve = curve
19946 this.x = x
19947 this.y = y
19948 this.z = z
19949 this._zInv = null
19950
19951 this.compressed = true
19952 }
19953
19954 Object.defineProperty(Point.prototype, 'zInv', {
19955 get: function () {
19956 if (this._zInv === null) {
19957 this._zInv = this.z.modInverse(this.curve.p)
19958 }
19959
19960 return this._zInv
19961 }
19962 })
19963
19964 Object.defineProperty(Point.prototype, 'affineX', {
19965 get: function () {
19966 return this.x.multiply(this.zInv).mod(this.curve.p)
19967 }
19968 })
19969
19970 Object.defineProperty(Point.prototype, 'affineY', {
19971 get: function () {
19972 return this.y.multiply(this.zInv).mod(this.curve.p)
19973 }
19974 })
19975
19976 Point.fromAffine = function (curve, x, y) {
19977 return new Point(curve, x, y, BigInteger.ONE)
19978 }
19979
19980 Point.prototype.equals = function (other) {
19981 if (other === this) return true
19982 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
19983 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
19984
19985 // u = Y2 * Z1 - Y1 * Z2
19986 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
19987
19988 if (u.signum() !== 0) return false
19989
19990 // v = X2 * Z1 - X1 * Z2
19991 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
19992
19993 return v.signum() === 0
19994 }
19995
19996 Point.prototype.negate = function () {
19997 var y = this.curve.p.subtract(this.y)
19998
19999 return new Point(this.curve, this.x, y, this.z)
20000 }
20001
20002 Point.prototype.add = function (b) {
20003 if (this.curve.isInfinity(this)) return b
20004 if (this.curve.isInfinity(b)) return this
20005
20006 var x1 = this.x
20007 var y1 = this.y
20008 var x2 = b.x
20009 var y2 = b.y
20010
20011 // u = Y2 * Z1 - Y1 * Z2
20012 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
20013 // v = X2 * Z1 - X1 * Z2
20014 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
20015
20016 if (v.signum() === 0) {
20017 if (u.signum() === 0) {
20018 return this.twice() // this == b, so double
20019 }
20020
20021 return this.curve.infinity // this = -b, so infinity
20022 }
20023
20024 var v2 = v.square()
20025 var v3 = v2.multiply(v)
20026 var x1v2 = x1.multiply(v2)
20027 var zu2 = u.square().multiply(this.z)
20028
20029 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
20030 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
20031 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
20032 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)
20033 // z3 = v^3 * z1 * z2
20034 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
20035
20036 return new Point(this.curve, x3, y3, z3)
20037 }
20038
20039 Point.prototype.twice = function () {
20040 if (this.curve.isInfinity(this)) return this
20041 if (this.y.signum() === 0) return this.curve.infinity
20042
20043 var x1 = this.x
20044 var y1 = this.y
20045
20046 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20047 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20048 var a = this.curve.a
20049
20050 // w = 3 * x1^2 + a * z1^2
20051 var w = x1.square().multiply(THREE)
20052
20053 if (a.signum() !== 0) {
20054 w = w.add(this.z.square().multiply(a))
20055 }
20056
20057 w = w.mod(this.curve.p)
20058 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20059 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20060 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20061 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20062 // z3 = 8 * (y1 * z1)^3
20063 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
20064
20065 return new Point(this.curve, x3, y3, z3)
20066 }
20067
20068 // Simple NAF (Non-Adjacent Form) multiplication algorithm
20069 // TODO: modularize the multiplication algorithm
20070 Point.prototype.multiply = function (k) {
20071 if (this.curve.isInfinity(this)) return this
20072 if (k.signum() === 0) return this.curve.infinity
20073
20074 var e = k
20075 var h = e.multiply(THREE)
20076
20077 var neg = this.negate()
20078 var R = this
20079
20080 for (var i = h.bitLength() - 2; i > 0; --i) {
20081 var hBit = h.testBit(i)
20082 var eBit = e.testBit(i)
20083
20084 R = R.twice()
20085
20086 if (hBit !== eBit) {
20087 R = R.add(hBit ? this : neg)
20088 }
20089 }
20090
20091 return R
20092 }
20093
20094 // Compute this*j + x*k (simultaneous multiplication)
20095 Point.prototype.multiplyTwo = function (j, x, k) {
20096 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20097 var R = this.curve.infinity
20098 var both = this.add(x)
20099
20100 while (i >= 0) {
20101 var jBit = j.testBit(i)
20102 var kBit = k.testBit(i)
20103
20104 R = R.twice()
20105
20106 if (jBit) {
20107 if (kBit) {
20108 R = R.add(both)
20109 } else {
20110 R = R.add(this)
20111 }
20112 } else if (kBit) {
20113 R = R.add(x)
20114 }
20115 --i
20116 }
20117
20118 return R
20119 }
20120
20121 Point.prototype.getEncoded = function (compressed) {
20122 if (compressed == null) compressed = this.compressed
20123 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
20124
20125 var x = this.affineX
20126 var y = this.affineY
20127 var byteLength = this.curve.pLength
20128 var buffer
20129
20130 // 0x02/0x03 | X
20131 if (compressed) {
20132 buffer = new Buffer(1 + byteLength)
20133 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
20134
20135 // 0x04 | X | Y
20136 } else {
20137 buffer = new Buffer(1 + byteLength + byteLength)
20138 buffer.writeUInt8(0x04, 0)
20139
20140 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
20141 }
20142
20143 x.toBuffer(byteLength).copy(buffer, 1)
20144
20145 return buffer
20146 }
20147
20148 Point.decodeFrom = function (curve, buffer) {
20149 var type = buffer.readUInt8(0)
20150 var compressed = (type !== 4)
20151
20152 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20153 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
20154
20155 var Q
20156 if (compressed) {
20157 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20158 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
20159
20160 var isOdd = (type === 0x03)
20161 Q = curve.pointFromX(isOdd, x)
20162 } else {
20163 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
20164
20165 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20166 Q = Point.fromAffine(curve, x, y)
20167 }
20168
20169 Q.compressed = compressed
20170 return Q
20171 }
20172
20173 Point.prototype.toString = function () {
20174 if (this.curve.isInfinity(this)) return '(INFINITY)'
20175
20176 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20177 }
20178
20179 module.exports = Point
20180
20181 }).call(this,require("buffer").Buffer)
20182 },{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20183 (function (Buffer){
20184 'use strict'
20185 var Transform = require('stream').Transform
20186 var inherits = require('inherits')
20187
20188 function HashBase (blockSize) {
20189 Transform.call(this)
20190
20191 this._block = new Buffer(blockSize)
20192 this._blockSize = blockSize
20193 this._blockOffset = 0
20194 this._length = [0, 0, 0, 0]
20195
20196 this._finalized = false
20197 }
20198
20199 inherits(HashBase, Transform)
20200
20201 HashBase.prototype._transform = function (chunk, encoding, callback) {
20202 var error = null
20203 try {
20204 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20205 this.update(chunk)
20206 } catch (err) {
20207 error = err
20208 }
20209
20210 callback(error)
20211 }
20212
20213 HashBase.prototype._flush = function (callback) {
20214 var error = null
20215 try {
20216 this.push(this._digest())
20217 } catch (err) {
20218 error = err
20219 }
20220
20221 callback(error)
20222 }
20223
20224 HashBase.prototype.update = function (data, encoding) {
20225 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20226 if (this._finalized) throw new Error('Digest already called')
20227 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
20228
20229 // consume data
20230 var block = this._block
20231 var offset = 0
20232 while (this._blockOffset + data.length - offset >= this._blockSize) {
20233 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20234 this._update()
20235 this._blockOffset = 0
20236 }
20237 while (offset < data.length) block[this._blockOffset++] = data[offset++]
20238
20239 // update length
20240 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20241 this._length[j] += carry
20242 carry = (this._length[j] / 0x0100000000) | 0
20243 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20244 }
20245
20246 return this
20247 }
20248
20249 HashBase.prototype._update = function (data) {
20250 throw new Error('_update is not implemented')
20251 }
20252
20253 HashBase.prototype.digest = function (encoding) {
20254 if (this._finalized) throw new Error('Digest already called')
20255 this._finalized = true
20256
20257 var digest = this._digest()
20258 if (encoding !== undefined) digest = digest.toString(encoding)
20259 return digest
20260 }
20261
20262 HashBase.prototype._digest = function () {
20263 throw new Error('_digest is not implemented')
20264 }
20265
20266 module.exports = HashBase
20267
20268 }).call(this,require("buffer").Buffer)
20269 },{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20270 arguments[4][8][0].apply(exports,arguments)
20271 },{"dup":8}],94:[function(require,module,exports){
20272 (function (Buffer){
20273 // constant-space merkle root calculation algorithm
20274 module.exports = function fastRoot (values, digestFn) {
20275 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20276 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
20277
20278 var length = values.length
20279 var results = values.concat()
20280
20281 while (length > 1) {
20282 var j = 0
20283
20284 for (var i = 0; i < length; i += 2, ++j) {
20285 var left = results[i]
20286 var right = i + 1 === length ? left : results[i + 1]
20287 var data = Buffer.concat([left, right])
20288
20289 results[j] = digestFn(data)
20290 }
20291
20292 length = j
20293 }
20294
20295 return results[0]
20296 }
20297
20298 }).call(this,require("buffer").Buffer)
20299 },{"buffer":4}],95:[function(require,module,exports){
20300 var OPS = require('bitcoin-ops')
20301
20302 function encodingLength (i) {
20303 return i < OPS.OP_PUSHDATA1 ? 1
20304 : i <= 0xff ? 2
20305 : i <= 0xffff ? 3
20306 : 5
20307 }
20308
20309 function encode (buffer, number, offset) {
20310 var size = encodingLength(number)
20311
20312 // ~6 bit
20313 if (size === 1) {
20314 buffer.writeUInt8(number, offset)
20315
20316 // 8 bit
20317 } else if (size === 2) {
20318 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20319 buffer.writeUInt8(number, offset + 1)
20320
20321 // 16 bit
20322 } else if (size === 3) {
20323 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20324 buffer.writeUInt16LE(number, offset + 1)
20325
20326 // 32 bit
20327 } else {
20328 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20329 buffer.writeUInt32LE(number, offset + 1)
20330 }
20331
20332 return size
20333 }
20334
20335 function decode (buffer, offset) {
20336 var opcode = buffer.readUInt8(offset)
20337 var number, size
20338
20339 // ~6 bit
20340 if (opcode < OPS.OP_PUSHDATA1) {
20341 number = opcode
20342 size = 1
20343
20344 // 8 bit
20345 } else if (opcode === OPS.OP_PUSHDATA1) {
20346 if (offset + 2 > buffer.length) return null
20347 number = buffer.readUInt8(offset + 1)
20348 size = 2
20349
20350 // 16 bit
20351 } else if (opcode === OPS.OP_PUSHDATA2) {
20352 if (offset + 3 > buffer.length) return null
20353 number = buffer.readUInt16LE(offset + 1)
20354 size = 3
20355
20356 // 32 bit
20357 } else {
20358 if (offset + 5 > buffer.length) return null
20359 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
20360
20361 number = buffer.readUInt32LE(offset + 1)
20362 size = 5
20363 }
20364
20365 return {
20366 opcode: opcode,
20367 number: number,
20368 size: size
20369 }
20370 }
20371
20372 module.exports = {
20373 encodingLength: encodingLength,
20374 encode: encode,
20375 decode: decode
20376 }
20377
20378 },{"bitcoin-ops":40}],96:[function(require,module,exports){
20379 (function (process,global){
20380 'use strict'
20381
20382 function oldBrowser () {
20383 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
20384 }
20385
20386 var Buffer = require('safe-buffer').Buffer
20387 var crypto = global.crypto || global.msCrypto
20388
20389 if (crypto && crypto.getRandomValues) {
20390 module.exports = randomBytes
20391 } else {
20392 module.exports = oldBrowser
20393 }
20394
20395 function randomBytes (size, cb) {
20396 // phantomjs needs to throw
20397 if (size > 65536) throw new Error('requested too many random bytes')
20398 // in case browserify isn't using the Uint8Array version
20399 var rawBytes = new global.Uint8Array(size)
20400
20401 // This will not work in older browsers.
20402 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20403 if (size > 0) { // getRandomValues fails on IE if size == 0
20404 crypto.getRandomValues(rawBytes)
20405 }
20406
20407 // XXX: phantomjs doesn't like a buffer being passed here
20408 var bytes = Buffer.from(rawBytes.buffer)
20409
20410 if (typeof cb === 'function') {
20411 return process.nextTick(function () {
20412 cb(null, bytes)
20413 })
20414 }
20415
20416 return bytes
20417 }
20418
20419 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20420 },{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20421 (function (Buffer){
20422 'use strict'
20423 var inherits = require('inherits')
20424 var HashBase = require('hash-base')
20425
20426 function RIPEMD160 () {
20427 HashBase.call(this, 64)
20428
20429 // state
20430 this._a = 0x67452301
20431 this._b = 0xefcdab89
20432 this._c = 0x98badcfe
20433 this._d = 0x10325476
20434 this._e = 0xc3d2e1f0
20435 }
20436
20437 inherits(RIPEMD160, HashBase)
20438
20439 RIPEMD160.prototype._update = function () {
20440 var m = new Array(16)
20441 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20442
20443 var al = this._a
20444 var bl = this._b
20445 var cl = this._c
20446 var dl = this._d
20447 var el = this._e
20448
20449 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20450 // K = 0x00000000
20451 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20452 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20453 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20454 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20455 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20456 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20457 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20458 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20459 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20460 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20461 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20462 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20463 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20464 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20465 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20466 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20467 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20468
20469 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20470 // K = 0x5a827999
20471 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20472 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20473 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20474 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20475 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20476 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20477 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20478 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20479 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20480 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20481 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20482 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20483 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20484 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20485 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20486 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20487 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20488
20489 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20490 // K = 0x6ed9eba1
20491 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20492 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20493 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20494 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20495 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20496 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20497 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20498 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20499 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20500 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20501 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20502 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20503 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20504 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20505 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20506 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20507 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20508
20509 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20510 // K = 0x8f1bbcdc
20511 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20512 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20513 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20514 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20515 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20516 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20517 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20518 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20519 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20520 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20521 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20522 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20523 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20524 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20525 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20526 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20527 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20528
20529 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20530 // K = 0xa953fd4e
20531 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20532 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20533 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20534 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20535 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20536 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20537 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20538 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20539 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20540 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20541 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20542 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20543 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20544 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20545 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20546 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20547 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20548
20549 var ar = this._a
20550 var br = this._b
20551 var cr = this._c
20552 var dr = this._d
20553 var er = this._e
20554
20555 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20556 // K' = 0x50a28be6
20557 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20558 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20559 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20560 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20561 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20562 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20563 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20564 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20565 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20566 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20567 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20568 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20569 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20570 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20571 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20572 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20573 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20574
20575 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20576 // K' = 0x5c4dd124
20577 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20578 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20579 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20580 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20581 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20582 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20583 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20584 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20585 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20586 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20587 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20588 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20589 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20590 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20591 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20592 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20593 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20594
20595 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20596 // K' = 0x6d703ef3
20597 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20598 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20599 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20600 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20601 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20602 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20603 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20604 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20605 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20606 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20607 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20608 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20609 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20610 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20611 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20612 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20613 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20614
20615 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20616 // K' = 0x7a6d76e9
20617 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20618 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20619 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20620 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20621 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20622 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20623 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20624 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20625 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20626 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20627 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20628 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20629 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20630 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20631 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20632 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20633 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20634
20635 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20636 // K' = 0x00000000
20637 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20638 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20639 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20640 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20641 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20642 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20643 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20644 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20645 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20646 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20647 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20648 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20649 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20650 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20651 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20652 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20653 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20654
20655 // change state
20656 var t = (this._b + cl + dr) | 0
20657 this._b = (this._c + dl + er) | 0
20658 this._c = (this._d + el + ar) | 0
20659 this._d = (this._e + al + br) | 0
20660 this._e = (this._a + bl + cr) | 0
20661 this._a = t
20662 }
20663
20664 RIPEMD160.prototype._digest = function () {
20665 // create padding and handle blocks
20666 this._block[this._blockOffset++] = 0x80
20667 if (this._blockOffset > 56) {
20668 this._block.fill(0, this._blockOffset, 64)
20669 this._update()
20670 this._blockOffset = 0
20671 }
20672
20673 this._block.fill(0, this._blockOffset, 56)
20674 this._block.writeUInt32LE(this._length[0], 56)
20675 this._block.writeUInt32LE(this._length[1], 60)
20676 this._update()
20677
20678 // produce result
20679 var buffer = new Buffer(20)
20680 buffer.writeInt32LE(this._a, 0)
20681 buffer.writeInt32LE(this._b, 4)
20682 buffer.writeInt32LE(this._c, 8)
20683 buffer.writeInt32LE(this._d, 12)
20684 buffer.writeInt32LE(this._e, 16)
20685 return buffer
20686 }
20687
20688 function rotl (x, n) {
20689 return (x << n) | (x >>> (32 - n))
20690 }
20691
20692 function fn1 (a, b, c, d, e, m, k, s) {
20693 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20694 }
20695
20696 function fn2 (a, b, c, d, e, m, k, s) {
20697 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20698 }
20699
20700 function fn3 (a, b, c, d, e, m, k, s) {
20701 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20702 }
20703
20704 function fn4 (a, b, c, d, e, m, k, s) {
20705 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20706 }
20707
20708 function fn5 (a, b, c, d, e, m, k, s) {
20709 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20710 }
20711
20712 module.exports = RIPEMD160
20713
20714 }).call(this,require("buffer").Buffer)
20715 },{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20716 arguments[4][26][0].apply(exports,arguments)
20717 },{"buffer":4,"dup":26}],99:[function(require,module,exports){
20718 (function (Buffer){
20719 // prototype class for hash functions
20720 function Hash (blockSize, finalSize) {
20721 this._block = new Buffer(blockSize)
20722 this._finalSize = finalSize
20723 this._blockSize = blockSize
20724 this._len = 0
20725 this._s = 0
20726 }
20727
20728 Hash.prototype.update = function (data, enc) {
20729 if (typeof data === 'string') {
20730 enc = enc || 'utf8'
20731 data = new Buffer(data, enc)
20732 }
20733
20734 var l = this._len += data.length
20735 var s = this._s || 0
20736 var f = 0
20737 var buffer = this._block
20738
20739 while (s < l) {
20740 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20741 var ch = (t - f)
20742
20743 for (var i = 0; i < ch; i++) {
20744 buffer[(s % this._blockSize) + i] = data[i + f]
20745 }
20746
20747 s += ch
20748 f += ch
20749
20750 if ((s % this._blockSize) === 0) {
20751 this._update(buffer)
20752 }
20753 }
20754 this._s = s
20755
20756 return this
20757 }
20758
20759 Hash.prototype.digest = function (enc) {
20760 // Suppose the length of the message M, in bits, is l
20761 var l = this._len * 8
20762
20763 // Append the bit 1 to the end of the message
20764 this._block[this._len % this._blockSize] = 0x80
20765
20766 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20767 this._block.fill(0, this._len % this._blockSize + 1)
20768
20769 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20770 this._update(this._block)
20771 this._block.fill(0)
20772 }
20773
20774 // to this append the block which is equal to the number l written in binary
20775 // TODO: handle case where l is > Math.pow(2, 29)
20776 this._block.writeInt32BE(l, this._blockSize - 4)
20777
20778 var hash = this._update(this._block) || this._hash()
20779
20780 return enc ? hash.toString(enc) : hash
20781 }
20782
20783 Hash.prototype._update = function () {
20784 throw new Error('_update must be implemented by subclass')
20785 }
20786
20787 module.exports = Hash
20788
20789 }).call(this,require("buffer").Buffer)
20790 },{"buffer":4}],100:[function(require,module,exports){
20791 var exports = module.exports = function SHA (algorithm) {
20792 algorithm = algorithm.toLowerCase()
20793
20794 var Algorithm = exports[algorithm]
20795 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
20796
20797 return new Algorithm()
20798 }
20799
20800 exports.sha = require('./sha')
20801 exports.sha1 = require('./sha1')
20802 exports.sha224 = require('./sha224')
20803 exports.sha256 = require('./sha256')
20804 exports.sha384 = require('./sha384')
20805 exports.sha512 = require('./sha512')
20806
20807 },{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
20808 (function (Buffer){
20809 /*
20810 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20811 * in FIPS PUB 180-1
20812 * This source code is derived from sha1.js of the same repository.
20813 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20814 * operation was added.
20815 */
20816
20817 var inherits = require('inherits')
20818 var Hash = require('./hash')
20819
20820 var K = [
20821 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20822 ]
20823
20824 var W = new Array(80)
20825
20826 function Sha () {
20827 this.init()
20828 this._w = W
20829
20830 Hash.call(this, 64, 56)
20831 }
20832
20833 inherits(Sha, Hash)
20834
20835 Sha.prototype.init = function () {
20836 this._a = 0x67452301
20837 this._b = 0xefcdab89
20838 this._c = 0x98badcfe
20839 this._d = 0x10325476
20840 this._e = 0xc3d2e1f0
20841
20842 return this
20843 }
20844
20845 function rotl5 (num) {
20846 return (num << 5) | (num >>> 27)
20847 }
20848
20849 function rotl30 (num) {
20850 return (num << 30) | (num >>> 2)
20851 }
20852
20853 function ft (s, b, c, d) {
20854 if (s === 0) return (b & c) | ((~b) & d)
20855 if (s === 2) return (b & c) | (b & d) | (c & d)
20856 return b ^ c ^ d
20857 }
20858
20859 Sha.prototype._update = function (M) {
20860 var W = this._w
20861
20862 var a = this._a | 0
20863 var b = this._b | 0
20864 var c = this._c | 0
20865 var d = this._d | 0
20866 var e = this._e | 0
20867
20868 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20869 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
20870
20871 for (var j = 0; j < 80; ++j) {
20872 var s = ~~(j / 20)
20873 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20874
20875 e = d
20876 d = c
20877 c = rotl30(b)
20878 b = a
20879 a = t
20880 }
20881
20882 this._a = (a + this._a) | 0
20883 this._b = (b + this._b) | 0
20884 this._c = (c + this._c) | 0
20885 this._d = (d + this._d) | 0
20886 this._e = (e + this._e) | 0
20887 }
20888
20889 Sha.prototype._hash = function () {
20890 var H = new Buffer(20)
20891
20892 H.writeInt32BE(this._a | 0, 0)
20893 H.writeInt32BE(this._b | 0, 4)
20894 H.writeInt32BE(this._c | 0, 8)
20895 H.writeInt32BE(this._d | 0, 12)
20896 H.writeInt32BE(this._e | 0, 16)
20897
20898 return H
20899 }
20900
20901 module.exports = Sha
20902
20903 }).call(this,require("buffer").Buffer)
20904 },{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20905 (function (Buffer){
20906 /*
20907 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20908 * in FIPS PUB 180-1
20909 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20910 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20911 * Distributed under the BSD License
20912 * See http://pajhome.org.uk/crypt/md5 for details.
20913 */
20914
20915 var inherits = require('inherits')
20916 var Hash = require('./hash')
20917
20918 var K = [
20919 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20920 ]
20921
20922 var W = new Array(80)
20923
20924 function Sha1 () {
20925 this.init()
20926 this._w = W
20927
20928 Hash.call(this, 64, 56)
20929 }
20930
20931 inherits(Sha1, Hash)
20932
20933 Sha1.prototype.init = function () {
20934 this._a = 0x67452301
20935 this._b = 0xefcdab89
20936 this._c = 0x98badcfe
20937 this._d = 0x10325476
20938 this._e = 0xc3d2e1f0
20939
20940 return this
20941 }
20942
20943 function rotl1 (num) {
20944 return (num << 1) | (num >>> 31)
20945 }
20946
20947 function rotl5 (num) {
20948 return (num << 5) | (num >>> 27)
20949 }
20950
20951 function rotl30 (num) {
20952 return (num << 30) | (num >>> 2)
20953 }
20954
20955 function ft (s, b, c, d) {
20956 if (s === 0) return (b & c) | ((~b) & d)
20957 if (s === 2) return (b & c) | (b & d) | (c & d)
20958 return b ^ c ^ d
20959 }
20960
20961 Sha1.prototype._update = function (M) {
20962 var W = this._w
20963
20964 var a = this._a | 0
20965 var b = this._b | 0
20966 var c = this._c | 0
20967 var d = this._d | 0
20968 var e = this._e | 0
20969
20970 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20971 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
20972
20973 for (var j = 0; j < 80; ++j) {
20974 var s = ~~(j / 20)
20975 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20976
20977 e = d
20978 d = c
20979 c = rotl30(b)
20980 b = a
20981 a = t
20982 }
20983
20984 this._a = (a + this._a) | 0
20985 this._b = (b + this._b) | 0
20986 this._c = (c + this._c) | 0
20987 this._d = (d + this._d) | 0
20988 this._e = (e + this._e) | 0
20989 }
20990
20991 Sha1.prototype._hash = function () {
20992 var H = new Buffer(20)
20993
20994 H.writeInt32BE(this._a | 0, 0)
20995 H.writeInt32BE(this._b | 0, 4)
20996 H.writeInt32BE(this._c | 0, 8)
20997 H.writeInt32BE(this._d | 0, 12)
20998 H.writeInt32BE(this._e | 0, 16)
20999
21000 return H
21001 }
21002
21003 module.exports = Sha1
21004
21005 }).call(this,require("buffer").Buffer)
21006 },{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
21007 (function (Buffer){
21008 /**
21009 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21010 * in FIPS 180-2
21011 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21012 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21013 *
21014 */
21015
21016 var inherits = require('inherits')
21017 var Sha256 = require('./sha256')
21018 var Hash = require('./hash')
21019
21020 var W = new Array(64)
21021
21022 function Sha224 () {
21023 this.init()
21024
21025 this._w = W // new Array(64)
21026
21027 Hash.call(this, 64, 56)
21028 }
21029
21030 inherits(Sha224, Sha256)
21031
21032 Sha224.prototype.init = function () {
21033 this._a = 0xc1059ed8
21034 this._b = 0x367cd507
21035 this._c = 0x3070dd17
21036 this._d = 0xf70e5939
21037 this._e = 0xffc00b31
21038 this._f = 0x68581511
21039 this._g = 0x64f98fa7
21040 this._h = 0xbefa4fa4
21041
21042 return this
21043 }
21044
21045 Sha224.prototype._hash = function () {
21046 var H = new Buffer(28)
21047
21048 H.writeInt32BE(this._a, 0)
21049 H.writeInt32BE(this._b, 4)
21050 H.writeInt32BE(this._c, 8)
21051 H.writeInt32BE(this._d, 12)
21052 H.writeInt32BE(this._e, 16)
21053 H.writeInt32BE(this._f, 20)
21054 H.writeInt32BE(this._g, 24)
21055
21056 return H
21057 }
21058
21059 module.exports = Sha224
21060
21061 }).call(this,require("buffer").Buffer)
21062 },{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21063 (function (Buffer){
21064 /**
21065 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21066 * in FIPS 180-2
21067 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21068 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21069 *
21070 */
21071
21072 var inherits = require('inherits')
21073 var Hash = require('./hash')
21074
21075 var K = [
21076 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21077 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21078 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21079 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21080 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21081 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21082 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21083 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21084 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21085 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21086 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21087 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21088 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21089 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21090 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21091 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21092 ]
21093
21094 var W = new Array(64)
21095
21096 function Sha256 () {
21097 this.init()
21098
21099 this._w = W // new Array(64)
21100
21101 Hash.call(this, 64, 56)
21102 }
21103
21104 inherits(Sha256, Hash)
21105
21106 Sha256.prototype.init = function () {
21107 this._a = 0x6a09e667
21108 this._b = 0xbb67ae85
21109 this._c = 0x3c6ef372
21110 this._d = 0xa54ff53a
21111 this._e = 0x510e527f
21112 this._f = 0x9b05688c
21113 this._g = 0x1f83d9ab
21114 this._h = 0x5be0cd19
21115
21116 return this
21117 }
21118
21119 function ch (x, y, z) {
21120 return z ^ (x & (y ^ z))
21121 }
21122
21123 function maj (x, y, z) {
21124 return (x & y) | (z & (x | y))
21125 }
21126
21127 function sigma0 (x) {
21128 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
21129 }
21130
21131 function sigma1 (x) {
21132 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21133 }
21134
21135 function gamma0 (x) {
21136 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21137 }
21138
21139 function gamma1 (x) {
21140 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21141 }
21142
21143 Sha256.prototype._update = function (M) {
21144 var W = this._w
21145
21146 var a = this._a | 0
21147 var b = this._b | 0
21148 var c = this._c | 0
21149 var d = this._d | 0
21150 var e = this._e | 0
21151 var f = this._f | 0
21152 var g = this._g | 0
21153 var h = this._h | 0
21154
21155 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21156 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
21157
21158 for (var j = 0; j < 64; ++j) {
21159 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21160 var T2 = (sigma0(a) + maj(a, b, c)) | 0
21161
21162 h = g
21163 g = f
21164 f = e
21165 e = (d + T1) | 0
21166 d = c
21167 c = b
21168 b = a
21169 a = (T1 + T2) | 0
21170 }
21171
21172 this._a = (a + this._a) | 0
21173 this._b = (b + this._b) | 0
21174 this._c = (c + this._c) | 0
21175 this._d = (d + this._d) | 0
21176 this._e = (e + this._e) | 0
21177 this._f = (f + this._f) | 0
21178 this._g = (g + this._g) | 0
21179 this._h = (h + this._h) | 0
21180 }
21181
21182 Sha256.prototype._hash = function () {
21183 var H = new Buffer(32)
21184
21185 H.writeInt32BE(this._a, 0)
21186 H.writeInt32BE(this._b, 4)
21187 H.writeInt32BE(this._c, 8)
21188 H.writeInt32BE(this._d, 12)
21189 H.writeInt32BE(this._e, 16)
21190 H.writeInt32BE(this._f, 20)
21191 H.writeInt32BE(this._g, 24)
21192 H.writeInt32BE(this._h, 28)
21193
21194 return H
21195 }
21196
21197 module.exports = Sha256
21198
21199 }).call(this,require("buffer").Buffer)
21200 },{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21201 (function (Buffer){
21202 var inherits = require('inherits')
21203 var SHA512 = require('./sha512')
21204 var Hash = require('./hash')
21205
21206 var W = new Array(160)
21207
21208 function Sha384 () {
21209 this.init()
21210 this._w = W
21211
21212 Hash.call(this, 128, 112)
21213 }
21214
21215 inherits(Sha384, SHA512)
21216
21217 Sha384.prototype.init = function () {
21218 this._ah = 0xcbbb9d5d
21219 this._bh = 0x629a292a
21220 this._ch = 0x9159015a
21221 this._dh = 0x152fecd8
21222 this._eh = 0x67332667
21223 this._fh = 0x8eb44a87
21224 this._gh = 0xdb0c2e0d
21225 this._hh = 0x47b5481d
21226
21227 this._al = 0xc1059ed8
21228 this._bl = 0x367cd507
21229 this._cl = 0x3070dd17
21230 this._dl = 0xf70e5939
21231 this._el = 0xffc00b31
21232 this._fl = 0x68581511
21233 this._gl = 0x64f98fa7
21234 this._hl = 0xbefa4fa4
21235
21236 return this
21237 }
21238
21239 Sha384.prototype._hash = function () {
21240 var H = new Buffer(48)
21241
21242 function writeInt64BE (h, l, offset) {
21243 H.writeInt32BE(h, offset)
21244 H.writeInt32BE(l, offset + 4)
21245 }
21246
21247 writeInt64BE(this._ah, this._al, 0)
21248 writeInt64BE(this._bh, this._bl, 8)
21249 writeInt64BE(this._ch, this._cl, 16)
21250 writeInt64BE(this._dh, this._dl, 24)
21251 writeInt64BE(this._eh, this._el, 32)
21252 writeInt64BE(this._fh, this._fl, 40)
21253
21254 return H
21255 }
21256
21257 module.exports = Sha384
21258
21259 }).call(this,require("buffer").Buffer)
21260 },{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21261 (function (Buffer){
21262 var inherits = require('inherits')
21263 var Hash = require('./hash')
21264
21265 var K = [
21266 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21267 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21268 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21269 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21270 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21271 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21272 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21273 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21274 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21275 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21276 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21277 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21278 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21279 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21280 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21281 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21282 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21283 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21284 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21285 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21286 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21287 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21288 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21289 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21290 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21291 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21292 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21293 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21294 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21295 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21296 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21297 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21298 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21299 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21300 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21301 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21302 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21303 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21304 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21305 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21306 ]
21307
21308 var W = new Array(160)
21309
21310 function Sha512 () {
21311 this.init()
21312 this._w = W
21313
21314 Hash.call(this, 128, 112)
21315 }
21316
21317 inherits(Sha512, Hash)
21318
21319 Sha512.prototype.init = function () {
21320 this._ah = 0x6a09e667
21321 this._bh = 0xbb67ae85
21322 this._ch = 0x3c6ef372
21323 this._dh = 0xa54ff53a
21324 this._eh = 0x510e527f
21325 this._fh = 0x9b05688c
21326 this._gh = 0x1f83d9ab
21327 this._hh = 0x5be0cd19
21328
21329 this._al = 0xf3bcc908
21330 this._bl = 0x84caa73b
21331 this._cl = 0xfe94f82b
21332 this._dl = 0x5f1d36f1
21333 this._el = 0xade682d1
21334 this._fl = 0x2b3e6c1f
21335 this._gl = 0xfb41bd6b
21336 this._hl = 0x137e2179
21337
21338 return this
21339 }
21340
21341 function Ch (x, y, z) {
21342 return z ^ (x & (y ^ z))
21343 }
21344
21345 function maj (x, y, z) {
21346 return (x & y) | (z & (x | y))
21347 }
21348
21349 function sigma0 (x, xl) {
21350 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21351 }
21352
21353 function sigma1 (x, xl) {
21354 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21355 }
21356
21357 function Gamma0 (x, xl) {
21358 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
21359 }
21360
21361 function Gamma0l (x, xl) {
21362 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21363 }
21364
21365 function Gamma1 (x, xl) {
21366 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21367 }
21368
21369 function Gamma1l (x, xl) {
21370 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21371 }
21372
21373 function getCarry (a, b) {
21374 return (a >>> 0) < (b >>> 0) ? 1 : 0
21375 }
21376
21377 Sha512.prototype._update = function (M) {
21378 var W = this._w
21379
21380 var ah = this._ah | 0
21381 var bh = this._bh | 0
21382 var ch = this._ch | 0
21383 var dh = this._dh | 0
21384 var eh = this._eh | 0
21385 var fh = this._fh | 0
21386 var gh = this._gh | 0
21387 var hh = this._hh | 0
21388
21389 var al = this._al | 0
21390 var bl = this._bl | 0
21391 var cl = this._cl | 0
21392 var dl = this._dl | 0
21393 var el = this._el | 0
21394 var fl = this._fl | 0
21395 var gl = this._gl | 0
21396 var hl = this._hl | 0
21397
21398 for (var i = 0; i < 32; i += 2) {
21399 W[i] = M.readInt32BE(i * 4)
21400 W[i + 1] = M.readInt32BE(i * 4 + 4)
21401 }
21402 for (; i < 160; i += 2) {
21403 var xh = W[i - 15 * 2]
21404 var xl = W[i - 15 * 2 + 1]
21405 var gamma0 = Gamma0(xh, xl)
21406 var gamma0l = Gamma0l(xl, xh)
21407
21408 xh = W[i - 2 * 2]
21409 xl = W[i - 2 * 2 + 1]
21410 var gamma1 = Gamma1(xh, xl)
21411 var gamma1l = Gamma1l(xl, xh)
21412
21413 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21414 var Wi7h = W[i - 7 * 2]
21415 var Wi7l = W[i - 7 * 2 + 1]
21416
21417 var Wi16h = W[i - 16 * 2]
21418 var Wi16l = W[i - 16 * 2 + 1]
21419
21420 var Wil = (gamma0l + Wi7l) | 0
21421 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21422 Wil = (Wil + gamma1l) | 0
21423 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21424 Wil = (Wil + Wi16l) | 0
21425 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
21426
21427 W[i] = Wih
21428 W[i + 1] = Wil
21429 }
21430
21431 for (var j = 0; j < 160; j += 2) {
21432 Wih = W[j]
21433 Wil = W[j + 1]
21434
21435 var majh = maj(ah, bh, ch)
21436 var majl = maj(al, bl, cl)
21437
21438 var sigma0h = sigma0(ah, al)
21439 var sigma0l = sigma0(al, ah)
21440 var sigma1h = sigma1(eh, el)
21441 var sigma1l = sigma1(el, eh)
21442
21443 // t1 = h + sigma1 + ch + K[j] + W[j]
21444 var Kih = K[j]
21445 var Kil = K[j + 1]
21446
21447 var chh = Ch(eh, fh, gh)
21448 var chl = Ch(el, fl, gl)
21449
21450 var t1l = (hl + sigma1l) | 0
21451 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21452 t1l = (t1l + chl) | 0
21453 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21454 t1l = (t1l + Kil) | 0
21455 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21456 t1l = (t1l + Wil) | 0
21457 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
21458
21459 // t2 = sigma0 + maj
21460 var t2l = (sigma0l + majl) | 0
21461 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21462
21463 hh = gh
21464 hl = gl
21465 gh = fh
21466 gl = fl
21467 fh = eh
21468 fl = el
21469 el = (dl + t1l) | 0
21470 eh = (dh + t1h + getCarry(el, dl)) | 0
21471 dh = ch
21472 dl = cl
21473 ch = bh
21474 cl = bl
21475 bh = ah
21476 bl = al
21477 al = (t1l + t2l) | 0
21478 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21479 }
21480
21481 this._al = (this._al + al) | 0
21482 this._bl = (this._bl + bl) | 0
21483 this._cl = (this._cl + cl) | 0
21484 this._dl = (this._dl + dl) | 0
21485 this._el = (this._el + el) | 0
21486 this._fl = (this._fl + fl) | 0
21487 this._gl = (this._gl + gl) | 0
21488 this._hl = (this._hl + hl) | 0
21489
21490 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21491 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21492 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21493 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21494 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21495 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21496 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21497 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21498 }
21499
21500 Sha512.prototype._hash = function () {
21501 var H = new Buffer(64)
21502
21503 function writeInt64BE (h, l, offset) {
21504 H.writeInt32BE(h, offset)
21505 H.writeInt32BE(l, offset + 4)
21506 }
21507
21508 writeInt64BE(this._ah, this._al, 0)
21509 writeInt64BE(this._bh, this._bl, 8)
21510 writeInt64BE(this._ch, this._cl, 16)
21511 writeInt64BE(this._dh, this._dl, 24)
21512 writeInt64BE(this._eh, this._el, 32)
21513 writeInt64BE(this._fh, this._fl, 40)
21514 writeInt64BE(this._gh, this._gl, 48)
21515 writeInt64BE(this._hh, this._hl, 56)
21516
21517 return H
21518 }
21519
21520 module.exports = Sha512
21521
21522 }).call(this,require("buffer").Buffer)
21523 },{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21524 var inherits = require('inherits')
21525 var native = require('./native')
21526
21527 function TfTypeError (type, value, valueTypeName) {
21528 this.__error = Error.call(this)
21529 this.__type = type
21530 this.__value = value
21531 this.__valueTypeName = valueTypeName
21532
21533 var message
21534 Object.defineProperty(this, 'message', {
21535 enumerable: true,
21536 get: function () {
21537 if (message) return message
21538
21539 valueTypeName = valueTypeName || getValueTypeName(value)
21540 message = tfErrorString(type, value, valueTypeName)
21541
21542 return message
21543 }
21544 })
21545 }
21546
21547 function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21548 this.__error = error || Error.call(this)
21549 this.__label = label
21550 this.__property = property
21551 this.__type = type
21552 this.__value = value
21553 this.__valueTypeName = valueTypeName
21554
21555 var message
21556 Object.defineProperty(this, 'message', {
21557 enumerable: true,
21558 get: function () {
21559 if (message) return message
21560 if (type) {
21561 valueTypeName = valueTypeName || getValueTypeName(value)
21562 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21563 } else {
21564 message = 'Unexpected property "' + property + '"'
21565 }
21566
21567 return message
21568 }
21569 })
21570 }
21571
21572 // inherit from Error, assign stack
21573 [TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21574 inherits(tfErrorType, Error)
21575 Object.defineProperty(tfErrorType, 'stack', {
21576 get: function () { return this.__error.stack }
21577 })
21578 })
21579
21580 function tfCustomError (expected, actual) {
21581 return new TfTypeError(expected, {}, actual)
21582 }
21583
21584 function tfSubError (e, property, label) {
21585 // sub child?
21586 if (e instanceof TfPropertyTypeError) {
21587 property = property + '.' + e.__property
21588 label = e.__label
21589
21590 return new TfPropertyTypeError(
21591 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21592 )
21593 }
21594
21595 // child?
21596 if (e instanceof TfTypeError) {
21597 return new TfPropertyTypeError(
21598 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21599 )
21600 }
21601
21602 return e
21603 }
21604
21605 function getTypeName (fn) {
21606 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21607 }
21608
21609 function getValueTypeName (value) {
21610 return native.Nil(value) ? '' : getTypeName(value.constructor)
21611 }
21612
21613 function getValue (value) {
21614 if (native.Function(value)) return ''
21615 if (native.String(value)) return JSON.stringify(value)
21616 if (value && native.Object(value)) return ''
21617 return value
21618 }
21619
21620 function tfJSON (type) {
21621 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21622 if (native.Array(type)) return 'Array'
21623 if (type && native.Object(type)) return 'Object'
21624
21625 return type !== undefined ? type : ''
21626 }
21627
21628 function tfErrorString (type, value, valueTypeName) {
21629 var valueJson = getValue(value)
21630
21631 return 'Expected ' + tfJSON(type) + ', got' +
21632 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21633 (valueJson !== '' ? ' ' + valueJson : '')
21634 }
21635
21636 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21637 var description = '" of type '
21638 if (label === 'key') description = '" with key type '
21639
21640 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
21641 }
21642
21643 module.exports = {
21644 TfTypeError: TfTypeError,
21645 TfPropertyTypeError: TfPropertyTypeError,
21646 tfCustomError: tfCustomError,
21647 tfSubError: tfSubError,
21648 tfJSON: tfJSON,
21649 getValueTypeName: getValueTypeName
21650 }
21651
21652 },{"./native":110,"inherits":93}],108:[function(require,module,exports){
21653 (function (Buffer){
21654 var NATIVE = require('./native')
21655 var ERRORS = require('./errors')
21656
21657 function _Buffer (value) {
21658 return Buffer.isBuffer(value)
21659 }
21660
21661 function Hex (value) {
21662 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21663 }
21664
21665 function _LengthN (type, length) {
21666 var name = type.toJSON()
21667
21668 function Length (value) {
21669 if (!type(value)) return false
21670 if (value.length === length) return true
21671
21672 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21673 }
21674 Length.toJSON = function () { return name }
21675
21676 return Length
21677 }
21678
21679 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21680 var _BufferN = _LengthN.bind(null, _Buffer)
21681 var _HexN = _LengthN.bind(null, Hex)
21682
21683 var UINT53_MAX = Math.pow(2, 53) - 1
21684
21685 function Finite (value) {
21686 return typeof value === 'number' && isFinite(value)
21687 }
21688 function Int8 (value) { return ((value << 24) >> 24) === value }
21689 function Int16 (value) { return ((value << 16) >> 16) === value }
21690 function Int32 (value) { return (value | 0) === value }
21691 function UInt8 (value) { return (value & 0xff) === value }
21692 function UInt16 (value) { return (value & 0xffff) === value }
21693 function UInt32 (value) { return (value >>> 0) === value }
21694 function UInt53 (value) {
21695 return typeof value === 'number' &&
21696 value >= 0 &&
21697 value <= UINT53_MAX &&
21698 Math.floor(value) === value
21699 }
21700
21701 var types = {
21702 ArrayN: _ArrayN,
21703 Buffer: _Buffer,
21704 BufferN: _BufferN,
21705 Finite: Finite,
21706 Hex: Hex,
21707 HexN: _HexN,
21708 Int8: Int8,
21709 Int16: Int16,
21710 Int32: Int32,
21711 UInt8: UInt8,
21712 UInt16: UInt16,
21713 UInt32: UInt32,
21714 UInt53: UInt53
21715 }
21716
21717 for (var typeName in types) {
21718 types[typeName].toJSON = function (t) {
21719 return t
21720 }.bind(null, typeName)
21721 }
21722
21723 module.exports = types
21724
21725 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21726 },{"../../../../../.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){
21727 var ERRORS = require('./errors')
21728 var NATIVE = require('./native')
21729
21730 // short-hand
21731 var tfJSON = ERRORS.tfJSON
21732 var TfTypeError = ERRORS.TfTypeError
21733 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21734 var tfSubError = ERRORS.tfSubError
21735 var getValueTypeName = ERRORS.getValueTypeName
21736
21737 var TYPES = {
21738 arrayOf: function arrayOf (type) {
21739 type = compile(type)
21740
21741 function _arrayOf (array, strict) {
21742 if (!NATIVE.Array(array)) return false
21743
21744 return array.every(function (value, i) {
21745 try {
21746 return typeforce(type, value, strict)
21747 } catch (e) {
21748 throw tfSubError(e, i)
21749 }
21750 })
21751 }
21752 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
21753
21754 return _arrayOf
21755 },
21756
21757 maybe: function maybe (type) {
21758 type = compile(type)
21759
21760 function _maybe (value, strict) {
21761 return NATIVE.Nil(value) || type(value, strict, maybe)
21762 }
21763 _maybe.toJSON = function () { return '?' + tfJSON(type) }
21764
21765 return _maybe
21766 },
21767
21768 map: function map (propertyType, propertyKeyType) {
21769 propertyType = compile(propertyType)
21770 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
21771
21772 function _map (value, strict) {
21773 if (!NATIVE.Object(value, strict)) return false
21774 if (NATIVE.Nil(value, strict)) return false
21775
21776 for (var propertyName in value) {
21777 try {
21778 if (propertyKeyType) {
21779 typeforce(propertyKeyType, propertyName, strict)
21780 }
21781 } catch (e) {
21782 throw tfSubError(e, propertyName, 'key')
21783 }
21784
21785 try {
21786 var propertyValue = value[propertyName]
21787 typeforce(propertyType, propertyValue, strict)
21788 } catch (e) {
21789 throw tfSubError(e, propertyName)
21790 }
21791 }
21792
21793 return true
21794 }
21795
21796 if (propertyKeyType) {
21797 _map.toJSON = function () {
21798 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
21799 }
21800 } else {
21801 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
21802 }
21803
21804 return _map
21805 },
21806
21807 object: function object (uncompiled) {
21808 var type = {}
21809
21810 for (var typePropertyName in uncompiled) {
21811 type[typePropertyName] = compile(uncompiled[typePropertyName])
21812 }
21813
21814 function _object (value, strict) {
21815 if (!NATIVE.Object(value)) return false
21816 if (NATIVE.Nil(value)) return false
21817
21818 var propertyName
21819
21820 try {
21821 for (propertyName in type) {
21822 var propertyType = type[propertyName]
21823 var propertyValue = value[propertyName]
21824
21825 typeforce(propertyType, propertyValue, strict)
21826 }
21827 } catch (e) {
21828 throw tfSubError(e, propertyName)
21829 }
21830
21831 if (strict) {
21832 for (propertyName in value) {
21833 if (type[propertyName]) continue
21834
21835 throw new TfPropertyTypeError(undefined, propertyName)
21836 }
21837 }
21838
21839 return true
21840 }
21841 _object.toJSON = function () { return tfJSON(type) }
21842
21843 return _object
21844 },
21845
21846 oneOf: function oneOf () {
21847 var types = [].slice.call(arguments).map(compile)
21848
21849 function _oneOf (value, strict) {
21850 return types.some(function (type) {
21851 try {
21852 return typeforce(type, value, strict)
21853 } catch (e) {
21854 return false
21855 }
21856 })
21857 }
21858 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
21859
21860 return _oneOf
21861 },
21862
21863 quacksLike: function quacksLike (type) {
21864 function _quacksLike (value) {
21865 return type === getValueTypeName(value)
21866 }
21867 _quacksLike.toJSON = function () { return type }
21868
21869 return _quacksLike
21870 },
21871
21872 tuple: function tuple () {
21873 var types = [].slice.call(arguments).map(compile)
21874
21875 function _tuple (values, strict) {
21876 return types.every(function (type, i) {
21877 try {
21878 return typeforce(type, values[i], strict)
21879 } catch (e) {
21880 throw tfSubError(e, i)
21881 }
21882 }) && (!strict || values.length === arguments.length)
21883 }
21884 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
21885
21886 return _tuple
21887 },
21888
21889 value: function value (expected) {
21890 function _value (actual) {
21891 return actual === expected
21892 }
21893 _value.toJSON = function () { return expected }
21894
21895 return _value
21896 }
21897 }
21898
21899 function compile (type) {
21900 if (NATIVE.String(type)) {
21901 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
21902
21903 return NATIVE[type] || TYPES.quacksLike(type)
21904 } else if (type && NATIVE.Object(type)) {
21905 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
21906
21907 return TYPES.object(type)
21908 } else if (NATIVE.Function(type)) {
21909 return type
21910 }
21911
21912 return TYPES.value(type)
21913 }
21914
21915 function typeforce (type, value, strict, surrogate) {
21916 if (NATIVE.Function(type)) {
21917 if (type(value, strict)) return true
21918
21919 throw new TfTypeError(surrogate || type, value)
21920 }
21921
21922 // JIT
21923 return typeforce(compile(type), value, strict)
21924 }
21925
21926 // assign types to typeforce function
21927 for (var typeName in NATIVE) {
21928 typeforce[typeName] = NATIVE[typeName]
21929 }
21930
21931 for (typeName in TYPES) {
21932 typeforce[typeName] = TYPES[typeName]
21933 }
21934
21935 var EXTRA = require('./extra')
21936 for (typeName in EXTRA) {
21937 typeforce[typeName] = EXTRA[typeName]
21938 }
21939
21940 // async wrapper
21941 function __async (type, value, strict, callback) {
21942 // default to falsy strict if using shorthand overload
21943 if (typeof strict === 'function') return __async(type, value, false, strict)
21944
21945 try {
21946 typeforce(type, value, strict)
21947 } catch (e) {
21948 return callback(e)
21949 }
21950
21951 callback()
21952 }
21953
21954 typeforce.async = __async
21955 typeforce.compile = compile
21956 typeforce.TfTypeError = TfTypeError
21957 typeforce.TfPropertyTypeError = TfPropertyTypeError
21958
21959 module.exports = typeforce
21960
21961 },{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21962 var types = {
21963 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21964 Boolean: function (value) { return typeof value === 'boolean' },
21965 Function: function (value) { return typeof value === 'function' },
21966 Nil: function (value) { return value === undefined || value === null },
21967 Number: function (value) { return typeof value === 'number' },
21968 Object: function (value) { return typeof value === 'object' },
21969 String: function (value) { return typeof value === 'string' },
21970 '': function () { return true }
21971 }
21972
21973 // TODO: deprecate
21974 types.Null = types.Nil
21975
21976 for (var typeName in types) {
21977 types[typeName].toJSON = function (t) {
21978 return t
21979 }.bind(null, typeName)
21980 }
21981
21982 module.exports = types
21983
21984 },{}],111:[function(require,module,exports){
21985 (function (Buffer){
21986 'use strict'
21987
21988 // Number.MAX_SAFE_INTEGER
21989 var MAX_SAFE_INTEGER = 9007199254740991
21990
21991 function checkUInt53 (n) {
21992 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
21993 }
21994
21995 function encode (number, buffer, offset) {
21996 checkUInt53(number)
21997
21998 if (!buffer) buffer = new Buffer(encodingLength(number))
21999 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22000 if (!offset) offset = 0
22001
22002 // 8 bit
22003 if (number < 0xfd) {
22004 buffer.writeUInt8(number, offset)
22005 encode.bytes = 1
22006
22007 // 16 bit
22008 } else if (number <= 0xffff) {
22009 buffer.writeUInt8(0xfd, offset)
22010 buffer.writeUInt16LE(number, offset + 1)
22011 encode.bytes = 3
22012
22013 // 32 bit
22014 } else if (number <= 0xffffffff) {
22015 buffer.writeUInt8(0xfe, offset)
22016 buffer.writeUInt32LE(number, offset + 1)
22017 encode.bytes = 5
22018
22019 // 64 bit
22020 } else {
22021 buffer.writeUInt8(0xff, offset)
22022 buffer.writeUInt32LE(number >>> 0, offset + 1)
22023 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
22024 encode.bytes = 9
22025 }
22026
22027 return buffer
22028 }
22029
22030 function decode (buffer, offset) {
22031 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22032 if (!offset) offset = 0
22033
22034 var first = buffer.readUInt8(offset)
22035
22036 // 8 bit
22037 if (first < 0xfd) {
22038 decode.bytes = 1
22039 return first
22040
22041 // 16 bit
22042 } else if (first === 0xfd) {
22043 decode.bytes = 3
22044 return buffer.readUInt16LE(offset + 1)
22045
22046 // 32 bit
22047 } else if (first === 0xfe) {
22048 decode.bytes = 5
22049 return buffer.readUInt32LE(offset + 1)
22050
22051 // 64 bit
22052 } else {
22053 decode.bytes = 9
22054 var lo = buffer.readUInt32LE(offset + 1)
22055 var hi = buffer.readUInt32LE(offset + 5)
22056 var number = hi * 0x0100000000 + lo
22057 checkUInt53(number)
22058
22059 return number
22060 }
22061 }
22062
22063 function encodingLength (number) {
22064 checkUInt53(number)
22065
22066 return (
22067 number < 0xfd ? 1
22068 : number <= 0xffff ? 3
22069 : number <= 0xffffffff ? 5
22070 : 9
22071 )
22072 }
22073
22074 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
22075
22076 }).call(this,require("buffer").Buffer)
22077 },{"buffer":4}],112:[function(require,module,exports){
22078 (function (Buffer){
22079 var bs58check = require('bs58check')
22080
22081 function decodeRaw (buffer, version) {
22082 // check version only if defined
22083 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
22084
22085 // uncompressed
22086 if (buffer.length === 33) {
22087 return {
22088 version: buffer[0],
22089 privateKey: buffer.slice(1, 33),
22090 compressed: false
22091 }
22092 }
22093
22094 // invalid length
22095 if (buffer.length !== 34) throw new Error('Invalid WIF length')
22096
22097 // invalid compression flag
22098 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
22099
22100 return {
22101 version: buffer[0],
22102 privateKey: buffer.slice(1, 33),
22103 compressed: true
22104 }
22105 }
22106
22107 function encodeRaw (version, privateKey, compressed) {
22108 var result = new Buffer(compressed ? 34 : 33)
22109
22110 result.writeUInt8(version, 0)
22111 privateKey.copy(result, 1)
22112
22113 if (compressed) {
22114 result[33] = 0x01
22115 }
22116
22117 return result
22118 }
22119
22120 function decode (string, version) {
22121 return decodeRaw(bs58check.decode(string), version)
22122 }
22123
22124 function encode (version, privateKey, compressed) {
22125 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
22126
22127 return bs58check.encode(
22128 encodeRaw(
22129 version.version,
22130 version.privateKey,
22131 version.compressed
22132 )
22133 )
22134 }
22135
22136 module.exports = {
22137 decode: decode,
22138 decodeRaw: decodeRaw,
22139 encode: encode,
22140 encodeRaw: encodeRaw
22141 }
22142
22143 }).call(this,require("buffer").Buffer)
22144 },{"bs58check":80,"buffer":4}]},{},[33])(33)
22145 });
22146 </script>
22147 <script>bitcoinjs.bitcoin.networks.shadow = {
22148 messagePrefix: 'unused',
22149 bip32: {
22150 public: 0xEE80286A,
22151 private: 0xEE8031E8
22152 },
22153 pubKeyHash: 0x3f,
22154 scriptHash: 0x7d,
22155 wif: 0xbf
22156 };
22157
22158 bitcoinjs.bitcoin.networks.shadowtn = {
22159 messagePrefix: 'unused',
22160 bip32: {
22161 public: 0x76C0FDFB,
22162 private: 0x76C1077A
22163 },
22164 pubKeyHash: 0x7f,
22165 scriptHash: 0xc4,
22166 wif: 0xff
22167 };
22168
22169 bitcoinjs.bitcoin.networks.clam = {
22170 messagePrefix: 'unused',
22171 bip32: {
22172 public: 0xa8c26d64,
22173 private: 0xa8c17826
22174 },
22175 pubKeyHash: 0x89,
22176 scriptHash: 0x00, // TODO set this correctly
22177 wif: 0x85
22178 };
22179
22180 bitcoinjs.bitcoin.networks.crown = {
22181 messagePrefix: 'unused',
22182 bip32: {
22183 public: 0x0488b21e,
22184 private: 0x0488ade4
22185 },
22186 pubKeyHash: 0x00,
22187 scriptHash: 0x05,
22188 wif: 0x80
22189 };
22190
22191 bitcoinjs.bitcoin.networks.dash = {
22192 messagePrefix: 'unused',
22193 bip32: {
22194 public: 0x0488b21e,
22195 private: 0x0488ade4
22196 },
22197 pubKeyHash: 0x4c,
22198 scriptHash: 0x10,
22199 wif: 0xcc
22200 };
22201
22202 bitcoinjs.bitcoin.networks.maza = {
22203 messagePrefix: 'unused',
22204 bip32: {
22205 public: 0x0488b21e,
22206 private: 0x0488ade4
22207 },
22208 pubKeyHash: 0x32,
22209 scriptHash: 0x09,
22210 wif: 0xe0
22211 };
22212
22213 bitcoinjs.bitcoin.networks.dashtn = {
22214 messagePrefix: 'unused',
22215 bip32: {
22216 public: 0x043587cf,
22217 private: 0x04358394
22218 },
22219 pubKeyHash: 0x8c,
22220 scriptHash: 0x13,
22221 wif: 0xef
22222 };
22223
22224 bitcoinjs.bitcoin.networks.game = {
22225 messagePrefix: 'unused',
22226 bip32: {
22227 public: 0x0488b21e,
22228 private: 0x0488ade4
22229 },
22230 pubKeyHash: 0x26,
22231 scriptHash: 0x05,
22232 wif: 0xa6
22233 };
22234
22235 bitcoinjs.bitcoin.networks.namecoin = {
22236 messagePrefix: 'unused',
22237 bip32: {
22238 public: 0x0488b21e,
22239 private: 0x0488ade4
22240 },
22241 pubKeyHash: 0x34,
22242 scriptHash: 0x00, // TODO set this correctly
22243 wif: 0x80
22244 };
22245
22246 bitcoinjs.bitcoin.networks.peercoin = {
22247 messagePrefix: 'unused',
22248 bip32: {
22249 public: 0x0488b21e,
22250 private: 0x0488ade4
22251 },
22252 pubKeyHash: 0x37,
22253 scriptHash: 0x00, // TODO set this correctly
22254 wif: 0xb7
22255 };
22256
22257 bitcoinjs.bitcoin.networks.slimcoin = {
22258 messagePrefix: 'unused',
22259 bip32: {
22260 public: 0xef6adf10,
22261 private: 0xef69ea80
22262 },
22263 pubKeyHash: 0x3f,
22264 scriptHash: 0x7d,
22265 wif: 0x46
22266 };
22267
22268 bitcoinjs.bitcoin.networks.slimcointn = {
22269 messagePrefix: 'unused',
22270 bip32: {
22271 public: 0x043587CF,
22272 private: 0x04358394
22273 },
22274 pubKeyHash: 0x6f,
22275 scriptHash: 0xc4,
22276 wif: 0x57
22277 };
22278
22279 bitcoinjs.bitcoin.networks.dogecoin = {
22280 messagePrefix: '\x19Dogecoin Signed Message:\n',
22281 bip32: {
22282 public: 0x02facafd,
22283 private: 0x02fac398
22284 },
22285 pubKeyHash: 0x1e,
22286 scriptHash: 0x16,
22287 wif: 0x9e
22288 };
22289
22290 bitcoinjs.bitcoin.networks.viacoin = {
22291 messagePrefix: '\x18Viacoin Signed Message:\n',
22292 bip32: {
22293 public: 0x0488b21e,
22294 private: 0x0488ade4
22295 },
22296 pubKeyHash: 0x47,
22297 scriptHash: 0x21,
22298 wif: 0xc7
22299 };
22300
22301 bitcoinjs.bitcoin.networks.viacointestnet = {
22302 messagePrefix: '\x18Viacoin Signed Message:\n',
22303 bip32: {
22304 public: 0x043587cf,
22305 private: 0x04358394
22306 },
22307 pubKeyHash: 0x7f,
22308 scriptHash: 0xc4,
22309 wif: 0xff
22310 };
22311
22312 bitcoinjs.bitcoin.networks.gamerscoin = {
22313 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22314 bip32: {
22315 public: 0x019da462,
22316 private: 0x019d9cfe
22317 },
22318 pubKeyHash: 0x26,
22319 scriptHash: 0x05,
22320 wif: 0xA6
22321 };
22322
22323 bitcoinjs.bitcoin.networks.jumbucks = {
22324 messagePrefix: '\x19Jumbucks Signed Message:\n',
22325 bip32: {
22326 public: 0x037a689a,
22327 private: 0x037a6460
22328 },
22329 pubKeyHash: 0x2b,
22330 scriptHash: 0x05,
22331 wif: 0xab
22332 };
22333
22334 bitcoinjs.bitcoin.networks.zetacoin = {
22335 messagePrefix: '\x18Zetacoin Signed Message:\n',
22336 bip32: {
22337 public: 0x0488b21e,
22338 private: 0x0488ade4
22339 },
22340 pubKeyHash: 0x50,
22341 scriptHash: 0x09,
22342 wif: 0xe0
22343 };
22344
22345 bitcoinjs.bitcoin.networks.myriadcoin = {
22346 messagePrefix: 'unused',
22347 bip32: {
22348 public: 0x0488b21e,
22349 private: 0x0488ade4
22350 },
22351 pubKeyHash: 0x32,
22352 scriptHash: 0x00, // TODO set this correctly
22353 wif: 0xb2
22354 };
22355
22356 bitcoinjs.bitcoin.networks.pivx = {
22357 messagePrefix: 'unused',
22358 bip32: {
22359 public: 0x022d2533,
22360 private: 0x0221312b
22361 },
22362 pubKeyHash: 0x1e,
22363 scriptHash: 0x0d,
22364 wif: 0xd4
22365 };
22366
22367 bitcoinjs.bitcoin.networks.pivxtestnet = {
22368 messagePrefix: 'unused',
22369 bip32: {
22370 public: 0x3a8061a0,
22371 private: 0x3a805837
22372 },
22373 pubKeyHash: 0x8b,
22374 scriptHash: 0x13,
22375 wif: 0xef
22376 };
22377 </script>
22378 <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){
22379 (function (global){
22380 'use strict';
22381
22382 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22383 // original notice:
22384
22385 /*!
22386 * The buffer module from node.js, for the browser.
22387 *
22388 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22389 * @license MIT
22390 */
22391 function compare(a, b) {
22392 if (a === b) {
22393 return 0;
22394 }
22395
22396 var x = a.length;
22397 var y = b.length;
22398
22399 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22400 if (a[i] !== b[i]) {
22401 x = a[i];
22402 y = b[i];
22403 break;
22404 }
22405 }
22406
22407 if (x < y) {
22408 return -1;
22409 }
22410 if (y < x) {
22411 return 1;
22412 }
22413 return 0;
22414 }
22415 function isBuffer(b) {
22416 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22417 return global.Buffer.isBuffer(b);
22418 }
22419 return !!(b != null && b._isBuffer);
22420 }
22421
22422 // based on node assert, original notice:
22423
22424 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22425 //
22426 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22427 //
22428 // Originally from narwhal.js (http://narwhaljs.org)
22429 // Copyright (c) 2009 Thomas Robinson <280north.com>
22430 //
22431 // Permission is hereby granted, free of charge, to any person obtaining a copy
22432 // of this software and associated documentation files (the 'Software'), to
22433 // deal in the Software without restriction, including without limitation the
22434 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22435 // sell copies of the Software, and to permit persons to whom the Software is
22436 // furnished to do so, subject to the following conditions:
22437 //
22438 // The above copyright notice and this permission notice shall be included in
22439 // all copies or substantial portions of the Software.
22440 //
22441 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22442 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22443 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22444 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22445 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22446 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22447
22448 var util = require('util/');
22449 var hasOwn = Object.prototype.hasOwnProperty;
22450 var pSlice = Array.prototype.slice;
22451 var functionsHaveNames = (function () {
22452 return function foo() {}.name === 'foo';
22453 }());
22454 function pToString (obj) {
22455 return Object.prototype.toString.call(obj);
22456 }
22457 function isView(arrbuf) {
22458 if (isBuffer(arrbuf)) {
22459 return false;
22460 }
22461 if (typeof global.ArrayBuffer !== 'function') {
22462 return false;
22463 }
22464 if (typeof ArrayBuffer.isView === 'function') {
22465 return ArrayBuffer.isView(arrbuf);
22466 }
22467 if (!arrbuf) {
22468 return false;
22469 }
22470 if (arrbuf instanceof DataView) {
22471 return true;
22472 }
22473 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22474 return true;
22475 }
22476 return false;
22477 }
22478 // 1. The assert module provides functions that throw
22479 // AssertionError's when particular conditions are not met. The
22480 // assert module must conform to the following interface.
22481
22482 var assert = module.exports = ok;
22483
22484 // 2. The AssertionError is defined in assert.
22485 // new assert.AssertionError({ message: message,
22486 // actual: actual,
22487 // expected: expected })
22488
22489 var regex = /\s*function\s+([^\(\s]*)\s*/;
22490 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22491 function getName(func) {
22492 if (!util.isFunction(func)) {
22493 return;
22494 }
22495 if (functionsHaveNames) {
22496 return func.name;
22497 }
22498 var str = func.toString();
22499 var match = str.match(regex);
22500 return match && match[1];
22501 }
22502 assert.AssertionError = function AssertionError(options) {
22503 this.name = 'AssertionError';
22504 this.actual = options.actual;
22505 this.expected = options.expected;
22506 this.operator = options.operator;
22507 if (options.message) {
22508 this.message = options.message;
22509 this.generatedMessage = false;
22510 } else {
22511 this.message = getMessage(this);
22512 this.generatedMessage = true;
22513 }
22514 var stackStartFunction = options.stackStartFunction || fail;
22515 if (Error.captureStackTrace) {
22516 Error.captureStackTrace(this, stackStartFunction);
22517 } else {
22518 // non v8 browsers so we can have a stacktrace
22519 var err = new Error();
22520 if (err.stack) {
22521 var out = err.stack;
22522
22523 // try to strip useless frames
22524 var fn_name = getName(stackStartFunction);
22525 var idx = out.indexOf('\n' + fn_name);
22526 if (idx >= 0) {
22527 // once we have located the function frame
22528 // we need to strip out everything before it (and its line)
22529 var next_line = out.indexOf('\n', idx + 1);
22530 out = out.substring(next_line + 1);
22531 }
22532
22533 this.stack = out;
22534 }
22535 }
22536 };
22537
22538 // assert.AssertionError instanceof Error
22539 util.inherits(assert.AssertionError, Error);
22540
22541 function truncate(s, n) {
22542 if (typeof s === 'string') {
22543 return s.length < n ? s : s.slice(0, n);
22544 } else {
22545 return s;
22546 }
22547 }
22548 function inspect(something) {
22549 if (functionsHaveNames || !util.isFunction(something)) {
22550 return util.inspect(something);
22551 }
22552 var rawname = getName(something);
22553 var name = rawname ? ': ' + rawname : '';
22554 return '[Function' + name + ']';
22555 }
22556 function getMessage(self) {
22557 return truncate(inspect(self.actual), 128) + ' ' +
22558 self.operator + ' ' +
22559 truncate(inspect(self.expected), 128);
22560 }
22561
22562 // At present only the three keys mentioned above are used and
22563 // understood by the spec. Implementations or sub modules can pass
22564 // other keys to the AssertionError's constructor - they will be
22565 // ignored.
22566
22567 // 3. All of the following functions must throw an AssertionError
22568 // when a corresponding condition is not met, with a message that
22569 // may be undefined if not provided. All assertion methods provide
22570 // both the actual and expected values to the assertion error for
22571 // display purposes.
22572
22573 function fail(actual, expected, message, operator, stackStartFunction) {
22574 throw new assert.AssertionError({
22575 message: message,
22576 actual: actual,
22577 expected: expected,
22578 operator: operator,
22579 stackStartFunction: stackStartFunction
22580 });
22581 }
22582
22583 // EXTENSION! allows for well behaved errors defined elsewhere.
22584 assert.fail = fail;
22585
22586 // 4. Pure assertion tests whether a value is truthy, as determined
22587 // by !!guard.
22588 // assert.ok(guard, message_opt);
22589 // This statement is equivalent to assert.equal(true, !!guard,
22590 // message_opt);. To test strictly for the value true, use
22591 // assert.strictEqual(true, guard, message_opt);.
22592
22593 function ok(value, message) {
22594 if (!value) fail(value, true, message, '==', assert.ok);
22595 }
22596 assert.ok = ok;
22597
22598 // 5. The equality assertion tests shallow, coercive equality with
22599 // ==.
22600 // assert.equal(actual, expected, message_opt);
22601
22602 assert.equal = function equal(actual, expected, message) {
22603 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22604 };
22605
22606 // 6. The non-equality assertion tests for whether two objects are not equal
22607 // with != assert.notEqual(actual, expected, message_opt);
22608
22609 assert.notEqual = function notEqual(actual, expected, message) {
22610 if (actual == expected) {
22611 fail(actual, expected, message, '!=', assert.notEqual);
22612 }
22613 };
22614
22615 // 7. The equivalence assertion tests a deep equality relation.
22616 // assert.deepEqual(actual, expected, message_opt);
22617
22618 assert.deepEqual = function deepEqual(actual, expected, message) {
22619 if (!_deepEqual(actual, expected, false)) {
22620 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
22621 }
22622 };
22623
22624 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22625 if (!_deepEqual(actual, expected, true)) {
22626 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
22627 }
22628 };
22629
22630 function _deepEqual(actual, expected, strict, memos) {
22631 // 7.1. All identical values are equivalent, as determined by ===.
22632 if (actual === expected) {
22633 return true;
22634 } else if (isBuffer(actual) && isBuffer(expected)) {
22635 return compare(actual, expected) === 0;
22636
22637 // 7.2. If the expected value is a Date object, the actual value is
22638 // equivalent if it is also a Date object that refers to the same time.
22639 } else if (util.isDate(actual) && util.isDate(expected)) {
22640 return actual.getTime() === expected.getTime();
22641
22642 // 7.3 If the expected value is a RegExp object, the actual value is
22643 // equivalent if it is also a RegExp object with the same source and
22644 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22645 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22646 return actual.source === expected.source &&
22647 actual.global === expected.global &&
22648 actual.multiline === expected.multiline &&
22649 actual.lastIndex === expected.lastIndex &&
22650 actual.ignoreCase === expected.ignoreCase;
22651
22652 // 7.4. Other pairs that do not both pass typeof value == 'object',
22653 // equivalence is determined by ==.
22654 } else if ((actual === null || typeof actual !== 'object') &&
22655 (expected === null || typeof expected !== 'object')) {
22656 return strict ? actual === expected : actual == expected;
22657
22658 // If both values are instances of typed arrays, wrap their underlying
22659 // ArrayBuffers in a Buffer each to increase performance
22660 // This optimization requires the arrays to have the same type as checked by
22661 // Object.prototype.toString (aka pToString). Never perform binary
22662 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22663 // bit patterns are not identical.
22664 } else if (isView(actual) && isView(expected) &&
22665 pToString(actual) === pToString(expected) &&
22666 !(actual instanceof Float32Array ||
22667 actual instanceof Float64Array)) {
22668 return compare(new Uint8Array(actual.buffer),
22669 new Uint8Array(expected.buffer)) === 0;
22670
22671 // 7.5 For all other Object pairs, including Array objects, equivalence is
22672 // determined by having the same number of owned properties (as verified
22673 // with Object.prototype.hasOwnProperty.call), the same set of keys
22674 // (although not necessarily the same order), equivalent values for every
22675 // corresponding key, and an identical 'prototype' property. Note: this
22676 // accounts for both named and indexed properties on Arrays.
22677 } else if (isBuffer(actual) !== isBuffer(expected)) {
22678 return false;
22679 } else {
22680 memos = memos || {actual: [], expected: []};
22681
22682 var actualIndex = memos.actual.indexOf(actual);
22683 if (actualIndex !== -1) {
22684 if (actualIndex === memos.expected.indexOf(expected)) {
22685 return true;
22686 }
22687 }
22688
22689 memos.actual.push(actual);
22690 memos.expected.push(expected);
22691
22692 return objEquiv(actual, expected, strict, memos);
22693 }
22694 }
22695
22696 function isArguments(object) {
22697 return Object.prototype.toString.call(object) == '[object Arguments]';
22698 }
22699
22700 function objEquiv(a, b, strict, actualVisitedObjects) {
22701 if (a === null || a === undefined || b === null || b === undefined)
22702 return false;
22703 // if one is a primitive, the other must be same
22704 if (util.isPrimitive(a) || util.isPrimitive(b))
22705 return a === b;
22706 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22707 return false;
22708 var aIsArgs = isArguments(a);
22709 var bIsArgs = isArguments(b);
22710 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22711 return false;
22712 if (aIsArgs) {
22713 a = pSlice.call(a);
22714 b = pSlice.call(b);
22715 return _deepEqual(a, b, strict);
22716 }
22717 var ka = objectKeys(a);
22718 var kb = objectKeys(b);
22719 var key, i;
22720 // having the same number of owned properties (keys incorporates
22721 // hasOwnProperty)
22722 if (ka.length !== kb.length)
22723 return false;
22724 //the same set of keys (although not necessarily the same order),
22725 ka.sort();
22726 kb.sort();
22727 //~~~cheap key test
22728 for (i = ka.length - 1; i >= 0; i--) {
22729 if (ka[i] !== kb[i])
22730 return false;
22731 }
22732 //equivalent values for every corresponding key, and
22733 //~~~possibly expensive deep test
22734 for (i = ka.length - 1; i >= 0; i--) {
22735 key = ka[i];
22736 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22737 return false;
22738 }
22739 return true;
22740 }
22741
22742 // 8. The non-equivalence assertion tests for any deep inequality.
22743 // assert.notDeepEqual(actual, expected, message_opt);
22744
22745 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22746 if (_deepEqual(actual, expected, false)) {
22747 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
22748 }
22749 };
22750
22751 assert.notDeepStrictEqual = notDeepStrictEqual;
22752 function notDeepStrictEqual(actual, expected, message) {
22753 if (_deepEqual(actual, expected, true)) {
22754 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22755 }
22756 }
22757
22758
22759 // 9. The strict equality assertion tests strict equality, as determined by ===.
22760 // assert.strictEqual(actual, expected, message_opt);
22761
22762 assert.strictEqual = function strictEqual(actual, expected, message) {
22763 if (actual !== expected) {
22764 fail(actual, expected, message, '===', assert.strictEqual);
22765 }
22766 };
22767
22768 // 10. The strict non-equality assertion tests for strict inequality, as
22769 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
22770
22771 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22772 if (actual === expected) {
22773 fail(actual, expected, message, '!==', assert.notStrictEqual);
22774 }
22775 };
22776
22777 function expectedException(actual, expected) {
22778 if (!actual || !expected) {
22779 return false;
22780 }
22781
22782 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22783 return expected.test(actual);
22784 }
22785
22786 try {
22787 if (actual instanceof expected) {
22788 return true;
22789 }
22790 } catch (e) {
22791 // Ignore. The instanceof check doesn't work for arrow functions.
22792 }
22793
22794 if (Error.isPrototypeOf(expected)) {
22795 return false;
22796 }
22797
22798 return expected.call({}, actual) === true;
22799 }
22800
22801 function _tryBlock(block) {
22802 var error;
22803 try {
22804 block();
22805 } catch (e) {
22806 error = e;
22807 }
22808 return error;
22809 }
22810
22811 function _throws(shouldThrow, block, expected, message) {
22812 var actual;
22813
22814 if (typeof block !== 'function') {
22815 throw new TypeError('"block" argument must be a function');
22816 }
22817
22818 if (typeof expected === 'string') {
22819 message = expected;
22820 expected = null;
22821 }
22822
22823 actual = _tryBlock(block);
22824
22825 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22826 (message ? ' ' + message : '.');
22827
22828 if (shouldThrow && !actual) {
22829 fail(actual, expected, 'Missing expected exception' + message);
22830 }
22831
22832 var userProvidedMessage = typeof message === 'string';
22833 var isUnwantedException = !shouldThrow && util.isError(actual);
22834 var isUnexpectedException = !shouldThrow && actual && !expected;
22835
22836 if ((isUnwantedException &&
22837 userProvidedMessage &&
22838 expectedException(actual, expected)) ||
22839 isUnexpectedException) {
22840 fail(actual, expected, 'Got unwanted exception' + message);
22841 }
22842
22843 if ((shouldThrow && actual && expected &&
22844 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22845 throw actual;
22846 }
22847 }
22848
22849 // 11. Expected to throw an error:
22850 // assert.throws(block, Error_opt, message_opt);
22851
22852 assert.throws = function(block, /*optional*/error, /*optional*/message) {
22853 _throws(true, block, error, message);
22854 };
22855
22856 // EXTENSION! This is annoying to write outside this module.
22857 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22858 _throws(false, block, error, message);
22859 };
22860
22861 assert.ifError = function(err) { if (err) throw err; };
22862
22863 var objectKeys = Object.keys || function (obj) {
22864 var keys = [];
22865 for (var key in obj) {
22866 if (hasOwn.call(obj, key)) keys.push(key);
22867 }
22868 return keys;
22869 };
22870
22871 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22872 },{"util/":30}],2:[function(require,module,exports){
22873 'use strict'
22874
22875 exports.byteLength = byteLength
22876 exports.toByteArray = toByteArray
22877 exports.fromByteArray = fromByteArray
22878
22879 var lookup = []
22880 var revLookup = []
22881 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22882
22883 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22884 for (var i = 0, len = code.length; i < len; ++i) {
22885 lookup[i] = code[i]
22886 revLookup[code.charCodeAt(i)] = i
22887 }
22888
22889 revLookup['-'.charCodeAt(0)] = 62
22890 revLookup['_'.charCodeAt(0)] = 63
22891
22892 function placeHoldersCount (b64) {
22893 var len = b64.length
22894 if (len % 4 > 0) {
22895 throw new Error('Invalid string. Length must be a multiple of 4')
22896 }
22897
22898 // the number of equal signs (place holders)
22899 // if there are two placeholders, than the two characters before it
22900 // represent one byte
22901 // if there is only one, then the three characters before it represent 2 bytes
22902 // this is just a cheap hack to not do indexOf twice
22903 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
22904 }
22905
22906 function byteLength (b64) {
22907 // base64 is 4/3 + up to two characters of the original data
22908 return b64.length * 3 / 4 - placeHoldersCount(b64)
22909 }
22910
22911 function toByteArray (b64) {
22912 var i, j, l, tmp, placeHolders, arr
22913 var len = b64.length
22914 placeHolders = placeHoldersCount(b64)
22915
22916 arr = new Arr(len * 3 / 4 - placeHolders)
22917
22918 // if there are placeholders, only get up to the last complete 4 chars
22919 l = placeHolders > 0 ? len - 4 : len
22920
22921 var L = 0
22922
22923 for (i = 0, j = 0; i < l; i += 4, j += 3) {
22924 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
22925 arr[L++] = (tmp >> 16) & 0xFF
22926 arr[L++] = (tmp >> 8) & 0xFF
22927 arr[L++] = tmp & 0xFF
22928 }
22929
22930 if (placeHolders === 2) {
22931 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
22932 arr[L++] = tmp & 0xFF
22933 } else if (placeHolders === 1) {
22934 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
22935 arr[L++] = (tmp >> 8) & 0xFF
22936 arr[L++] = tmp & 0xFF
22937 }
22938
22939 return arr
22940 }
22941
22942 function tripletToBase64 (num) {
22943 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
22944 }
22945
22946 function encodeChunk (uint8, start, end) {
22947 var tmp
22948 var output = []
22949 for (var i = start; i < end; i += 3) {
22950 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
22951 output.push(tripletToBase64(tmp))
22952 }
22953 return output.join('')
22954 }
22955
22956 function fromByteArray (uint8) {
22957 var tmp
22958 var len = uint8.length
22959 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
22960 var output = ''
22961 var parts = []
22962 var maxChunkLength = 16383 // must be multiple of 3
22963
22964 // go through the array every three bytes, we'll deal with trailing stuff later
22965 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
22966 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
22967 }
22968
22969 // pad the end with zeros, but make sure to not forget the extra bytes
22970 if (extraBytes === 1) {
22971 tmp = uint8[len - 1]
22972 output += lookup[tmp >> 2]
22973 output += lookup[(tmp << 4) & 0x3F]
22974 output += '=='
22975 } else if (extraBytes === 2) {
22976 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
22977 output += lookup[tmp >> 10]
22978 output += lookup[(tmp >> 4) & 0x3F]
22979 output += lookup[(tmp << 2) & 0x3F]
22980 output += '='
22981 }
22982
22983 parts.push(output)
22984
22985 return parts.join('')
22986 }
22987
22988 },{}],3:[function(require,module,exports){
22989
22990 },{}],4:[function(require,module,exports){
22991 (function (global){
22992 'use strict';
22993
22994 var buffer = require('buffer');
22995 var Buffer = buffer.Buffer;
22996 var SlowBuffer = buffer.SlowBuffer;
22997 var MAX_LEN = buffer.kMaxLength || 2147483647;
22998 exports.alloc = function alloc(size, fill, encoding) {
22999 if (typeof Buffer.alloc === 'function') {
23000 return Buffer.alloc(size, fill, encoding);
23001 }
23002 if (typeof encoding === 'number') {
23003 throw new TypeError('encoding must not be number');
23004 }
23005 if (typeof size !== 'number') {
23006 throw new TypeError('size must be a number');
23007 }
23008 if (size > MAX_LEN) {
23009 throw new RangeError('size is too large');
23010 }
23011 var enc = encoding;
23012 var _fill = fill;
23013 if (_fill === undefined) {
23014 enc = undefined;
23015 _fill = 0;
23016 }
23017 var buf = new Buffer(size);
23018 if (typeof _fill === 'string') {
23019 var fillBuf = new Buffer(_fill, enc);
23020 var flen = fillBuf.length;
23021 var i = -1;
23022 while (++i < size) {
23023 buf[i] = fillBuf[i % flen];
23024 }
23025 } else {
23026 buf.fill(_fill);
23027 }
23028 return buf;
23029 }
23030 exports.allocUnsafe = function allocUnsafe(size) {
23031 if (typeof Buffer.allocUnsafe === 'function') {
23032 return Buffer.allocUnsafe(size);
23033 }
23034 if (typeof size !== 'number') {
23035 throw new TypeError('size must be a number');
23036 }
23037 if (size > MAX_LEN) {
23038 throw new RangeError('size is too large');
23039 }
23040 return new Buffer(size);
23041 }
23042 exports.from = function from(value, encodingOrOffset, length) {
23043 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
23044 return Buffer.from(value, encodingOrOffset, length);
23045 }
23046 if (typeof value === 'number') {
23047 throw new TypeError('"value" argument must not be a number');
23048 }
23049 if (typeof value === 'string') {
23050 return new Buffer(value, encodingOrOffset);
23051 }
23052 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23053 var offset = encodingOrOffset;
23054 if (arguments.length === 1) {
23055 return new Buffer(value);
23056 }
23057 if (typeof offset === 'undefined') {
23058 offset = 0;
23059 }
23060 var len = length;
23061 if (typeof len === 'undefined') {
23062 len = value.byteLength - offset;
23063 }
23064 if (offset >= value.byteLength) {
23065 throw new RangeError('\'offset\' is out of bounds');
23066 }
23067 if (len > value.byteLength - offset) {
23068 throw new RangeError('\'length\' is out of bounds');
23069 }
23070 return new Buffer(value.slice(offset, offset + len));
23071 }
23072 if (Buffer.isBuffer(value)) {
23073 var out = new Buffer(value.length);
23074 value.copy(out, 0, 0, value.length);
23075 return out;
23076 }
23077 if (value) {
23078 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23079 return new Buffer(value);
23080 }
23081 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23082 return new Buffer(value.data);
23083 }
23084 }
23085
23086 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
23087 }
23088 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23089 if (typeof Buffer.allocUnsafeSlow === 'function') {
23090 return Buffer.allocUnsafeSlow(size);
23091 }
23092 if (typeof size !== 'number') {
23093 throw new TypeError('size must be a number');
23094 }
23095 if (size >= MAX_LEN) {
23096 throw new RangeError('size is too large');
23097 }
23098 return new SlowBuffer(size);
23099 }
23100
23101 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23102 },{"buffer":5}],5:[function(require,module,exports){
23103 /*!
23104 * The buffer module from node.js, for the browser.
23105 *
23106 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23107 * @license MIT
23108 */
23109 /* eslint-disable no-proto */
23110
23111 'use strict'
23112
23113 var base64 = require('base64-js')
23114 var ieee754 = require('ieee754')
23115
23116 exports.Buffer = Buffer
23117 exports.SlowBuffer = SlowBuffer
23118 exports.INSPECT_MAX_BYTES = 50
23119
23120 var K_MAX_LENGTH = 0x7fffffff
23121 exports.kMaxLength = K_MAX_LENGTH
23122
23123 /**
23124 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23125 * === true Use Uint8Array implementation (fastest)
23126 * === false Print warning and recommend using `buffer` v4.x which has an Object
23127 * implementation (most compatible, even IE6)
23128 *
23129 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23130 * Opera 11.6+, iOS 4.2+.
23131 *
23132 * We report that the browser does not support typed arrays if the are not subclassable
23133 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23134 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23135 * for __proto__ and has a buggy typed array implementation.
23136 */
23137 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23138
23139 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23140 typeof console.error === 'function') {
23141 console.error(
23142 'This browser lacks typed array (Uint8Array) support which is required by ' +
23143 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23144 )
23145 }
23146
23147 function typedArraySupport () {
23148 // Can typed array instances can be augmented?
23149 try {
23150 var arr = new Uint8Array(1)
23151 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23152 return arr.foo() === 42
23153 } catch (e) {
23154 return false
23155 }
23156 }
23157
23158 function createBuffer (length) {
23159 if (length > K_MAX_LENGTH) {
23160 throw new RangeError('Invalid typed array length')
23161 }
23162 // Return an augmented `Uint8Array` instance
23163 var buf = new Uint8Array(length)
23164 buf.__proto__ = Buffer.prototype
23165 return buf
23166 }
23167
23168 /**
23169 * The Buffer constructor returns instances of `Uint8Array` that have their
23170 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23171 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23172 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23173 * returns a single octet.
23174 *
23175 * The `Uint8Array` prototype remains unmodified.
23176 */
23177
23178 function Buffer (arg, encodingOrOffset, length) {
23179 // Common case.
23180 if (typeof arg === 'number') {
23181 if (typeof encodingOrOffset === 'string') {
23182 throw new Error(
23183 'If encoding is specified then the first argument must be a string'
23184 )
23185 }
23186 return allocUnsafe(arg)
23187 }
23188 return from(arg, encodingOrOffset, length)
23189 }
23190
23191 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23192 if (typeof Symbol !== 'undefined' && Symbol.species &&
23193 Buffer[Symbol.species] === Buffer) {
23194 Object.defineProperty(Buffer, Symbol.species, {
23195 value: null,
23196 configurable: true,
23197 enumerable: false,
23198 writable: false
23199 })
23200 }
23201
23202 Buffer.poolSize = 8192 // not used by this implementation
23203
23204 function from (value, encodingOrOffset, length) {
23205 if (typeof value === 'number') {
23206 throw new TypeError('"value" argument must not be a number')
23207 }
23208
23209 if (value instanceof ArrayBuffer) {
23210 return fromArrayBuffer(value, encodingOrOffset, length)
23211 }
23212
23213 if (typeof value === 'string') {
23214 return fromString(value, encodingOrOffset)
23215 }
23216
23217 return fromObject(value)
23218 }
23219
23220 /**
23221 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23222 * if value is a number.
23223 * Buffer.from(str[, encoding])
23224 * Buffer.from(array)
23225 * Buffer.from(buffer)
23226 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23227 **/
23228 Buffer.from = function (value, encodingOrOffset, length) {
23229 return from(value, encodingOrOffset, length)
23230 }
23231
23232 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23233 // https://github.com/feross/buffer/pull/148
23234 Buffer.prototype.__proto__ = Uint8Array.prototype
23235 Buffer.__proto__ = Uint8Array
23236
23237 function assertSize (size) {
23238 if (typeof size !== 'number') {
23239 throw new TypeError('"size" argument must be a number')
23240 } else if (size < 0) {
23241 throw new RangeError('"size" argument must not be negative')
23242 }
23243 }
23244
23245 function alloc (size, fill, encoding) {
23246 assertSize(size)
23247 if (size <= 0) {
23248 return createBuffer(size)
23249 }
23250 if (fill !== undefined) {
23251 // Only pay attention to encoding if it's a string. This
23252 // prevents accidentally sending in a number that would
23253 // be interpretted as a start offset.
23254 return typeof encoding === 'string'
23255 ? createBuffer(size).fill(fill, encoding)
23256 : createBuffer(size).fill(fill)
23257 }
23258 return createBuffer(size)
23259 }
23260
23261 /**
23262 * Creates a new filled Buffer instance.
23263 * alloc(size[, fill[, encoding]])
23264 **/
23265 Buffer.alloc = function (size, fill, encoding) {
23266 return alloc(size, fill, encoding)
23267 }
23268
23269 function allocUnsafe (size) {
23270 assertSize(size)
23271 return createBuffer(size < 0 ? 0 : checked(size) | 0)
23272 }
23273
23274 /**
23275 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23276 * */
23277 Buffer.allocUnsafe = function (size) {
23278 return allocUnsafe(size)
23279 }
23280 /**
23281 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23282 */
23283 Buffer.allocUnsafeSlow = function (size) {
23284 return allocUnsafe(size)
23285 }
23286
23287 function fromString (string, encoding) {
23288 if (typeof encoding !== 'string' || encoding === '') {
23289 encoding = 'utf8'
23290 }
23291
23292 if (!Buffer.isEncoding(encoding)) {
23293 throw new TypeError('"encoding" must be a valid string encoding')
23294 }
23295
23296 var length = byteLength(string, encoding) | 0
23297 var buf = createBuffer(length)
23298
23299 var actual = buf.write(string, encoding)
23300
23301 if (actual !== length) {
23302 // Writing a hex string, for example, that contains invalid characters will
23303 // cause everything after the first invalid character to be ignored. (e.g.
23304 // 'abxxcd' will be treated as 'ab')
23305 buf = buf.slice(0, actual)
23306 }
23307
23308 return buf
23309 }
23310
23311 function fromArrayLike (array) {
23312 var length = array.length < 0 ? 0 : checked(array.length) | 0
23313 var buf = createBuffer(length)
23314 for (var i = 0; i < length; i += 1) {
23315 buf[i] = array[i] & 255
23316 }
23317 return buf
23318 }
23319
23320 function fromArrayBuffer (array, byteOffset, length) {
23321 if (byteOffset < 0 || array.byteLength < byteOffset) {
23322 throw new RangeError('\'offset\' is out of bounds')
23323 }
23324
23325 if (array.byteLength < byteOffset + (length || 0)) {
23326 throw new RangeError('\'length\' is out of bounds')
23327 }
23328
23329 var buf
23330 if (byteOffset === undefined && length === undefined) {
23331 buf = new Uint8Array(array)
23332 } else if (length === undefined) {
23333 buf = new Uint8Array(array, byteOffset)
23334 } else {
23335 buf = new Uint8Array(array, byteOffset, length)
23336 }
23337
23338 // Return an augmented `Uint8Array` instance
23339 buf.__proto__ = Buffer.prototype
23340 return buf
23341 }
23342
23343 function fromObject (obj) {
23344 if (Buffer.isBuffer(obj)) {
23345 var len = checked(obj.length) | 0
23346 var buf = createBuffer(len)
23347
23348 if (buf.length === 0) {
23349 return buf
23350 }
23351
23352 obj.copy(buf, 0, 0, len)
23353 return buf
23354 }
23355
23356 if (obj) {
23357 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23358 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23359 return createBuffer(0)
23360 }
23361 return fromArrayLike(obj)
23362 }
23363
23364 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23365 return fromArrayLike(obj.data)
23366 }
23367 }
23368
23369 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
23370 }
23371
23372 function checked (length) {
23373 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23374 // length is NaN (which is otherwise coerced to zero.)
23375 if (length >= K_MAX_LENGTH) {
23376 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23377 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
23378 }
23379 return length | 0
23380 }
23381
23382 function SlowBuffer (length) {
23383 if (+length != length) { // eslint-disable-line eqeqeq
23384 length = 0
23385 }
23386 return Buffer.alloc(+length)
23387 }
23388
23389 Buffer.isBuffer = function isBuffer (b) {
23390 return b != null && b._isBuffer === true
23391 }
23392
23393 Buffer.compare = function compare (a, b) {
23394 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23395 throw new TypeError('Arguments must be Buffers')
23396 }
23397
23398 if (a === b) return 0
23399
23400 var x = a.length
23401 var y = b.length
23402
23403 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23404 if (a[i] !== b[i]) {
23405 x = a[i]
23406 y = b[i]
23407 break
23408 }
23409 }
23410
23411 if (x < y) return -1
23412 if (y < x) return 1
23413 return 0
23414 }
23415
23416 Buffer.isEncoding = function isEncoding (encoding) {
23417 switch (String(encoding).toLowerCase()) {
23418 case 'hex':
23419 case 'utf8':
23420 case 'utf-8':
23421 case 'ascii':
23422 case 'latin1':
23423 case 'binary':
23424 case 'base64':
23425 case 'ucs2':
23426 case 'ucs-2':
23427 case 'utf16le':
23428 case 'utf-16le':
23429 return true
23430 default:
23431 return false
23432 }
23433 }
23434
23435 Buffer.concat = function concat (list, length) {
23436 if (!Array.isArray(list)) {
23437 throw new TypeError('"list" argument must be an Array of Buffers')
23438 }
23439
23440 if (list.length === 0) {
23441 return Buffer.alloc(0)
23442 }
23443
23444 var i
23445 if (length === undefined) {
23446 length = 0
23447 for (i = 0; i < list.length; ++i) {
23448 length += list[i].length
23449 }
23450 }
23451
23452 var buffer = Buffer.allocUnsafe(length)
23453 var pos = 0
23454 for (i = 0; i < list.length; ++i) {
23455 var buf = list[i]
23456 if (!Buffer.isBuffer(buf)) {
23457 throw new TypeError('"list" argument must be an Array of Buffers')
23458 }
23459 buf.copy(buffer, pos)
23460 pos += buf.length
23461 }
23462 return buffer
23463 }
23464
23465 function byteLength (string, encoding) {
23466 if (Buffer.isBuffer(string)) {
23467 return string.length
23468 }
23469 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23470 return string.byteLength
23471 }
23472 if (typeof string !== 'string') {
23473 string = '' + string
23474 }
23475
23476 var len = string.length
23477 if (len === 0) return 0
23478
23479 // Use a for loop to avoid recursion
23480 var loweredCase = false
23481 for (;;) {
23482 switch (encoding) {
23483 case 'ascii':
23484 case 'latin1':
23485 case 'binary':
23486 return len
23487 case 'utf8':
23488 case 'utf-8':
23489 case undefined:
23490 return utf8ToBytes(string).length
23491 case 'ucs2':
23492 case 'ucs-2':
23493 case 'utf16le':
23494 case 'utf-16le':
23495 return len * 2
23496 case 'hex':
23497 return len >>> 1
23498 case 'base64':
23499 return base64ToBytes(string).length
23500 default:
23501 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23502 encoding = ('' + encoding).toLowerCase()
23503 loweredCase = true
23504 }
23505 }
23506 }
23507 Buffer.byteLength = byteLength
23508
23509 function slowToString (encoding, start, end) {
23510 var loweredCase = false
23511
23512 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23513 // property of a typed array.
23514
23515 // This behaves neither like String nor Uint8Array in that we set start/end
23516 // to their upper/lower bounds if the value passed is out of range.
23517 // undefined is handled specially as per ECMA-262 6th Edition,
23518 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23519 if (start === undefined || start < 0) {
23520 start = 0
23521 }
23522 // Return early if start > this.length. Done here to prevent potential uint32
23523 // coercion fail below.
23524 if (start > this.length) {
23525 return ''
23526 }
23527
23528 if (end === undefined || end > this.length) {
23529 end = this.length
23530 }
23531
23532 if (end <= 0) {
23533 return ''
23534 }
23535
23536 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23537 end >>>= 0
23538 start >>>= 0
23539
23540 if (end <= start) {
23541 return ''
23542 }
23543
23544 if (!encoding) encoding = 'utf8'
23545
23546 while (true) {
23547 switch (encoding) {
23548 case 'hex':
23549 return hexSlice(this, start, end)
23550
23551 case 'utf8':
23552 case 'utf-8':
23553 return utf8Slice(this, start, end)
23554
23555 case 'ascii':
23556 return asciiSlice(this, start, end)
23557
23558 case 'latin1':
23559 case 'binary':
23560 return latin1Slice(this, start, end)
23561
23562 case 'base64':
23563 return base64Slice(this, start, end)
23564
23565 case 'ucs2':
23566 case 'ucs-2':
23567 case 'utf16le':
23568 case 'utf-16le':
23569 return utf16leSlice(this, start, end)
23570
23571 default:
23572 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23573 encoding = (encoding + '').toLowerCase()
23574 loweredCase = true
23575 }
23576 }
23577 }
23578
23579 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23580 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23581 // reliably in a browserify context because there could be multiple different
23582 // copies of the 'buffer' package in use. This method works even for Buffer
23583 // instances that were created from another copy of the `buffer` package.
23584 // See: https://github.com/feross/buffer/issues/154
23585 Buffer.prototype._isBuffer = true
23586
23587 function swap (b, n, m) {
23588 var i = b[n]
23589 b[n] = b[m]
23590 b[m] = i
23591 }
23592
23593 Buffer.prototype.swap16 = function swap16 () {
23594 var len = this.length
23595 if (len % 2 !== 0) {
23596 throw new RangeError('Buffer size must be a multiple of 16-bits')
23597 }
23598 for (var i = 0; i < len; i += 2) {
23599 swap(this, i, i + 1)
23600 }
23601 return this
23602 }
23603
23604 Buffer.prototype.swap32 = function swap32 () {
23605 var len = this.length
23606 if (len % 4 !== 0) {
23607 throw new RangeError('Buffer size must be a multiple of 32-bits')
23608 }
23609 for (var i = 0; i < len; i += 4) {
23610 swap(this, i, i + 3)
23611 swap(this, i + 1, i + 2)
23612 }
23613 return this
23614 }
23615
23616 Buffer.prototype.swap64 = function swap64 () {
23617 var len = this.length
23618 if (len % 8 !== 0) {
23619 throw new RangeError('Buffer size must be a multiple of 64-bits')
23620 }
23621 for (var i = 0; i < len; i += 8) {
23622 swap(this, i, i + 7)
23623 swap(this, i + 1, i + 6)
23624 swap(this, i + 2, i + 5)
23625 swap(this, i + 3, i + 4)
23626 }
23627 return this
23628 }
23629
23630 Buffer.prototype.toString = function toString () {
23631 var length = this.length
23632 if (length === 0) return ''
23633 if (arguments.length === 0) return utf8Slice(this, 0, length)
23634 return slowToString.apply(this, arguments)
23635 }
23636
23637 Buffer.prototype.equals = function equals (b) {
23638 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23639 if (this === b) return true
23640 return Buffer.compare(this, b) === 0
23641 }
23642
23643 Buffer.prototype.inspect = function inspect () {
23644 var str = ''
23645 var max = exports.INSPECT_MAX_BYTES
23646 if (this.length > 0) {
23647 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23648 if (this.length > max) str += ' ... '
23649 }
23650 return '<Buffer ' + str + '>'
23651 }
23652
23653 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23654 if (!Buffer.isBuffer(target)) {
23655 throw new TypeError('Argument must be a Buffer')
23656 }
23657
23658 if (start === undefined) {
23659 start = 0
23660 }
23661 if (end === undefined) {
23662 end = target ? target.length : 0
23663 }
23664 if (thisStart === undefined) {
23665 thisStart = 0
23666 }
23667 if (thisEnd === undefined) {
23668 thisEnd = this.length
23669 }
23670
23671 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23672 throw new RangeError('out of range index')
23673 }
23674
23675 if (thisStart >= thisEnd && start >= end) {
23676 return 0
23677 }
23678 if (thisStart >= thisEnd) {
23679 return -1
23680 }
23681 if (start >= end) {
23682 return 1
23683 }
23684
23685 start >>>= 0
23686 end >>>= 0
23687 thisStart >>>= 0
23688 thisEnd >>>= 0
23689
23690 if (this === target) return 0
23691
23692 var x = thisEnd - thisStart
23693 var y = end - start
23694 var len = Math.min(x, y)
23695
23696 var thisCopy = this.slice(thisStart, thisEnd)
23697 var targetCopy = target.slice(start, end)
23698
23699 for (var i = 0; i < len; ++i) {
23700 if (thisCopy[i] !== targetCopy[i]) {
23701 x = thisCopy[i]
23702 y = targetCopy[i]
23703 break
23704 }
23705 }
23706
23707 if (x < y) return -1
23708 if (y < x) return 1
23709 return 0
23710 }
23711
23712 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23713 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
23714 //
23715 // Arguments:
23716 // - buffer - a Buffer to search
23717 // - val - a string, Buffer, or number
23718 // - byteOffset - an index into `buffer`; will be clamped to an int32
23719 // - encoding - an optional encoding, relevant is val is a string
23720 // - dir - true for indexOf, false for lastIndexOf
23721 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23722 // Empty buffer means no match
23723 if (buffer.length === 0) return -1
23724
23725 // Normalize byteOffset
23726 if (typeof byteOffset === 'string') {
23727 encoding = byteOffset
23728 byteOffset = 0
23729 } else if (byteOffset > 0x7fffffff) {
23730 byteOffset = 0x7fffffff
23731 } else if (byteOffset < -0x80000000) {
23732 byteOffset = -0x80000000
23733 }
23734 byteOffset = +byteOffset // Coerce to Number.
23735 if (isNaN(byteOffset)) {
23736 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23737 byteOffset = dir ? 0 : (buffer.length - 1)
23738 }
23739
23740 // Normalize byteOffset: negative offsets start from the end of the buffer
23741 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23742 if (byteOffset >= buffer.length) {
23743 if (dir) return -1
23744 else byteOffset = buffer.length - 1
23745 } else if (byteOffset < 0) {
23746 if (dir) byteOffset = 0
23747 else return -1
23748 }
23749
23750 // Normalize val
23751 if (typeof val === 'string') {
23752 val = Buffer.from(val, encoding)
23753 }
23754
23755 // Finally, search either indexOf (if dir is true) or lastIndexOf
23756 if (Buffer.isBuffer(val)) {
23757 // Special case: looking for empty string/buffer always fails
23758 if (val.length === 0) {
23759 return -1
23760 }
23761 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23762 } else if (typeof val === 'number') {
23763 val = val & 0xFF // Search for a byte value [0-255]
23764 if (typeof Uint8Array.prototype.indexOf === 'function') {
23765 if (dir) {
23766 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23767 } else {
23768 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23769 }
23770 }
23771 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23772 }
23773
23774 throw new TypeError('val must be string, number or Buffer')
23775 }
23776
23777 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23778 var indexSize = 1
23779 var arrLength = arr.length
23780 var valLength = val.length
23781
23782 if (encoding !== undefined) {
23783 encoding = String(encoding).toLowerCase()
23784 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23785 encoding === 'utf16le' || encoding === 'utf-16le') {
23786 if (arr.length < 2 || val.length < 2) {
23787 return -1
23788 }
23789 indexSize = 2
23790 arrLength /= 2
23791 valLength /= 2
23792 byteOffset /= 2
23793 }
23794 }
23795
23796 function read (buf, i) {
23797 if (indexSize === 1) {
23798 return buf[i]
23799 } else {
23800 return buf.readUInt16BE(i * indexSize)
23801 }
23802 }
23803
23804 var i
23805 if (dir) {
23806 var foundIndex = -1
23807 for (i = byteOffset; i < arrLength; i++) {
23808 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23809 if (foundIndex === -1) foundIndex = i
23810 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23811 } else {
23812 if (foundIndex !== -1) i -= i - foundIndex
23813 foundIndex = -1
23814 }
23815 }
23816 } else {
23817 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23818 for (i = byteOffset; i >= 0; i--) {
23819 var found = true
23820 for (var j = 0; j < valLength; j++) {
23821 if (read(arr, i + j) !== read(val, j)) {
23822 found = false
23823 break
23824 }
23825 }
23826 if (found) return i
23827 }
23828 }
23829
23830 return -1
23831 }
23832
23833 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23834 return this.indexOf(val, byteOffset, encoding) !== -1
23835 }
23836
23837 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23838 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23839 }
23840
23841 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23842 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23843 }
23844
23845 function hexWrite (buf, string, offset, length) {
23846 offset = Number(offset) || 0
23847 var remaining = buf.length - offset
23848 if (!length) {
23849 length = remaining
23850 } else {
23851 length = Number(length)
23852 if (length > remaining) {
23853 length = remaining
23854 }
23855 }
23856
23857 // must be an even number of digits
23858 var strLen = string.length
23859 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
23860
23861 if (length > strLen / 2) {
23862 length = strLen / 2
23863 }
23864 for (var i = 0; i < length; ++i) {
23865 var parsed = parseInt(string.substr(i * 2, 2), 16)
23866 if (isNaN(parsed)) return i
23867 buf[offset + i] = parsed
23868 }
23869 return i
23870 }
23871
23872 function utf8Write (buf, string, offset, length) {
23873 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
23874 }
23875
23876 function asciiWrite (buf, string, offset, length) {
23877 return blitBuffer(asciiToBytes(string), buf, offset, length)
23878 }
23879
23880 function latin1Write (buf, string, offset, length) {
23881 return asciiWrite(buf, string, offset, length)
23882 }
23883
23884 function base64Write (buf, string, offset, length) {
23885 return blitBuffer(base64ToBytes(string), buf, offset, length)
23886 }
23887
23888 function ucs2Write (buf, string, offset, length) {
23889 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23890 }
23891
23892 Buffer.prototype.write = function write (string, offset, length, encoding) {
23893 // Buffer#write(string)
23894 if (offset === undefined) {
23895 encoding = 'utf8'
23896 length = this.length
23897 offset = 0
23898 // Buffer#write(string, encoding)
23899 } else if (length === undefined && typeof offset === 'string') {
23900 encoding = offset
23901 length = this.length
23902 offset = 0
23903 // Buffer#write(string, offset[, length][, encoding])
23904 } else if (isFinite(offset)) {
23905 offset = offset >>> 0
23906 if (isFinite(length)) {
23907 length = length >>> 0
23908 if (encoding === undefined) encoding = 'utf8'
23909 } else {
23910 encoding = length
23911 length = undefined
23912 }
23913 } else {
23914 throw new Error(
23915 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
23916 )
23917 }
23918
23919 var remaining = this.length - offset
23920 if (length === undefined || length > remaining) length = remaining
23921
23922 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
23923 throw new RangeError('Attempt to write outside buffer bounds')
23924 }
23925
23926 if (!encoding) encoding = 'utf8'
23927
23928 var loweredCase = false
23929 for (;;) {
23930 switch (encoding) {
23931 case 'hex':
23932 return hexWrite(this, string, offset, length)
23933
23934 case 'utf8':
23935 case 'utf-8':
23936 return utf8Write(this, string, offset, length)
23937
23938 case 'ascii':
23939 return asciiWrite(this, string, offset, length)
23940
23941 case 'latin1':
23942 case 'binary':
23943 return latin1Write(this, string, offset, length)
23944
23945 case 'base64':
23946 // Warning: maxLength not taken into account in base64Write
23947 return base64Write(this, string, offset, length)
23948
23949 case 'ucs2':
23950 case 'ucs-2':
23951 case 'utf16le':
23952 case 'utf-16le':
23953 return ucs2Write(this, string, offset, length)
23954
23955 default:
23956 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23957 encoding = ('' + encoding).toLowerCase()
23958 loweredCase = true
23959 }
23960 }
23961 }
23962
23963 Buffer.prototype.toJSON = function toJSON () {
23964 return {
23965 type: 'Buffer',
23966 data: Array.prototype.slice.call(this._arr || this, 0)
23967 }
23968 }
23969
23970 function base64Slice (buf, start, end) {
23971 if (start === 0 && end === buf.length) {
23972 return base64.fromByteArray(buf)
23973 } else {
23974 return base64.fromByteArray(buf.slice(start, end))
23975 }
23976 }
23977
23978 function utf8Slice (buf, start, end) {
23979 end = Math.min(buf.length, end)
23980 var res = []
23981
23982 var i = start
23983 while (i < end) {
23984 var firstByte = buf[i]
23985 var codePoint = null
23986 var bytesPerSequence = (firstByte > 0xEF) ? 4
23987 : (firstByte > 0xDF) ? 3
23988 : (firstByte > 0xBF) ? 2
23989 : 1
23990
23991 if (i + bytesPerSequence <= end) {
23992 var secondByte, thirdByte, fourthByte, tempCodePoint
23993
23994 switch (bytesPerSequence) {
23995 case 1:
23996 if (firstByte < 0x80) {
23997 codePoint = firstByte
23998 }
23999 break
24000 case 2:
24001 secondByte = buf[i + 1]
24002 if ((secondByte & 0xC0) === 0x80) {
24003 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
24004 if (tempCodePoint > 0x7F) {
24005 codePoint = tempCodePoint
24006 }
24007 }
24008 break
24009 case 3:
24010 secondByte = buf[i + 1]
24011 thirdByte = buf[i + 2]
24012 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
24013 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
24014 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
24015 codePoint = tempCodePoint
24016 }
24017 }
24018 break
24019 case 4:
24020 secondByte = buf[i + 1]
24021 thirdByte = buf[i + 2]
24022 fourthByte = buf[i + 3]
24023 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
24024 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
24025 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
24026 codePoint = tempCodePoint
24027 }
24028 }
24029 }
24030 }
24031
24032 if (codePoint === null) {
24033 // we did not generate a valid codePoint so insert a
24034 // replacement char (U+FFFD) and advance only 1 byte
24035 codePoint = 0xFFFD
24036 bytesPerSequence = 1
24037 } else if (codePoint > 0xFFFF) {
24038 // encode to utf16 (surrogate pair dance)
24039 codePoint -= 0x10000
24040 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
24041 codePoint = 0xDC00 | codePoint & 0x3FF
24042 }
24043
24044 res.push(codePoint)
24045 i += bytesPerSequence
24046 }
24047
24048 return decodeCodePointsArray(res)
24049 }
24050
24051 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
24052 // the lowest limit is Chrome, with 0x10000 args.
24053 // We go 1 magnitude less, for safety
24054 var MAX_ARGUMENTS_LENGTH = 0x1000
24055
24056 function decodeCodePointsArray (codePoints) {
24057 var len = codePoints.length
24058 if (len <= MAX_ARGUMENTS_LENGTH) {
24059 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
24060 }
24061
24062 // Decode in chunks to avoid "call stack size exceeded".
24063 var res = ''
24064 var i = 0
24065 while (i < len) {
24066 res += String.fromCharCode.apply(
24067 String,
24068 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24069 )
24070 }
24071 return res
24072 }
24073
24074 function asciiSlice (buf, start, end) {
24075 var ret = ''
24076 end = Math.min(buf.length, end)
24077
24078 for (var i = start; i < end; ++i) {
24079 ret += String.fromCharCode(buf[i] & 0x7F)
24080 }
24081 return ret
24082 }
24083
24084 function latin1Slice (buf, start, end) {
24085 var ret = ''
24086 end = Math.min(buf.length, end)
24087
24088 for (var i = start; i < end; ++i) {
24089 ret += String.fromCharCode(buf[i])
24090 }
24091 return ret
24092 }
24093
24094 function hexSlice (buf, start, end) {
24095 var len = buf.length
24096
24097 if (!start || start < 0) start = 0
24098 if (!end || end < 0 || end > len) end = len
24099
24100 var out = ''
24101 for (var i = start; i < end; ++i) {
24102 out += toHex(buf[i])
24103 }
24104 return out
24105 }
24106
24107 function utf16leSlice (buf, start, end) {
24108 var bytes = buf.slice(start, end)
24109 var res = ''
24110 for (var i = 0; i < bytes.length; i += 2) {
24111 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24112 }
24113 return res
24114 }
24115
24116 Buffer.prototype.slice = function slice (start, end) {
24117 var len = this.length
24118 start = ~~start
24119 end = end === undefined ? len : ~~end
24120
24121 if (start < 0) {
24122 start += len
24123 if (start < 0) start = 0
24124 } else if (start > len) {
24125 start = len
24126 }
24127
24128 if (end < 0) {
24129 end += len
24130 if (end < 0) end = 0
24131 } else if (end > len) {
24132 end = len
24133 }
24134
24135 if (end < start) end = start
24136
24137 var newBuf = this.subarray(start, end)
24138 // Return an augmented `Uint8Array` instance
24139 newBuf.__proto__ = Buffer.prototype
24140 return newBuf
24141 }
24142
24143 /*
24144 * Need to make sure that buffer isn't trying to write out of bounds.
24145 */
24146 function checkOffset (offset, ext, length) {
24147 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24148 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
24149 }
24150
24151 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24152 offset = offset >>> 0
24153 byteLength = byteLength >>> 0
24154 if (!noAssert) checkOffset(offset, byteLength, this.length)
24155
24156 var val = this[offset]
24157 var mul = 1
24158 var i = 0
24159 while (++i < byteLength && (mul *= 0x100)) {
24160 val += this[offset + i] * mul
24161 }
24162
24163 return val
24164 }
24165
24166 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24167 offset = offset >>> 0
24168 byteLength = byteLength >>> 0
24169 if (!noAssert) {
24170 checkOffset(offset, byteLength, this.length)
24171 }
24172
24173 var val = this[offset + --byteLength]
24174 var mul = 1
24175 while (byteLength > 0 && (mul *= 0x100)) {
24176 val += this[offset + --byteLength] * mul
24177 }
24178
24179 return val
24180 }
24181
24182 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24183 offset = offset >>> 0
24184 if (!noAssert) checkOffset(offset, 1, this.length)
24185 return this[offset]
24186 }
24187
24188 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24189 offset = offset >>> 0
24190 if (!noAssert) checkOffset(offset, 2, this.length)
24191 return this[offset] | (this[offset + 1] << 8)
24192 }
24193
24194 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24195 offset = offset >>> 0
24196 if (!noAssert) checkOffset(offset, 2, this.length)
24197 return (this[offset] << 8) | this[offset + 1]
24198 }
24199
24200 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24201 offset = offset >>> 0
24202 if (!noAssert) checkOffset(offset, 4, this.length)
24203
24204 return ((this[offset]) |
24205 (this[offset + 1] << 8) |
24206 (this[offset + 2] << 16)) +
24207 (this[offset + 3] * 0x1000000)
24208 }
24209
24210 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24211 offset = offset >>> 0
24212 if (!noAssert) checkOffset(offset, 4, this.length)
24213
24214 return (this[offset] * 0x1000000) +
24215 ((this[offset + 1] << 16) |
24216 (this[offset + 2] << 8) |
24217 this[offset + 3])
24218 }
24219
24220 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24221 offset = offset >>> 0
24222 byteLength = byteLength >>> 0
24223 if (!noAssert) checkOffset(offset, byteLength, this.length)
24224
24225 var val = this[offset]
24226 var mul = 1
24227 var i = 0
24228 while (++i < byteLength && (mul *= 0x100)) {
24229 val += this[offset + i] * mul
24230 }
24231 mul *= 0x80
24232
24233 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24234
24235 return val
24236 }
24237
24238 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24239 offset = offset >>> 0
24240 byteLength = byteLength >>> 0
24241 if (!noAssert) checkOffset(offset, byteLength, this.length)
24242
24243 var i = byteLength
24244 var mul = 1
24245 var val = this[offset + --i]
24246 while (i > 0 && (mul *= 0x100)) {
24247 val += this[offset + --i] * mul
24248 }
24249 mul *= 0x80
24250
24251 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24252
24253 return val
24254 }
24255
24256 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24257 offset = offset >>> 0
24258 if (!noAssert) checkOffset(offset, 1, this.length)
24259 if (!(this[offset] & 0x80)) return (this[offset])
24260 return ((0xff - this[offset] + 1) * -1)
24261 }
24262
24263 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24264 offset = offset >>> 0
24265 if (!noAssert) checkOffset(offset, 2, this.length)
24266 var val = this[offset] | (this[offset + 1] << 8)
24267 return (val & 0x8000) ? val | 0xFFFF0000 : val
24268 }
24269
24270 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24271 offset = offset >>> 0
24272 if (!noAssert) checkOffset(offset, 2, this.length)
24273 var val = this[offset + 1] | (this[offset] << 8)
24274 return (val & 0x8000) ? val | 0xFFFF0000 : val
24275 }
24276
24277 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24278 offset = offset >>> 0
24279 if (!noAssert) checkOffset(offset, 4, this.length)
24280
24281 return (this[offset]) |
24282 (this[offset + 1] << 8) |
24283 (this[offset + 2] << 16) |
24284 (this[offset + 3] << 24)
24285 }
24286
24287 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24288 offset = offset >>> 0
24289 if (!noAssert) checkOffset(offset, 4, this.length)
24290
24291 return (this[offset] << 24) |
24292 (this[offset + 1] << 16) |
24293 (this[offset + 2] << 8) |
24294 (this[offset + 3])
24295 }
24296
24297 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24298 offset = offset >>> 0
24299 if (!noAssert) checkOffset(offset, 4, this.length)
24300 return ieee754.read(this, offset, true, 23, 4)
24301 }
24302
24303 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24304 offset = offset >>> 0
24305 if (!noAssert) checkOffset(offset, 4, this.length)
24306 return ieee754.read(this, offset, false, 23, 4)
24307 }
24308
24309 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24310 offset = offset >>> 0
24311 if (!noAssert) checkOffset(offset, 8, this.length)
24312 return ieee754.read(this, offset, true, 52, 8)
24313 }
24314
24315 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24316 offset = offset >>> 0
24317 if (!noAssert) checkOffset(offset, 8, this.length)
24318 return ieee754.read(this, offset, false, 52, 8)
24319 }
24320
24321 function checkInt (buf, value, offset, ext, max, min) {
24322 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24323 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24324 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24325 }
24326
24327 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24328 value = +value
24329 offset = offset >>> 0
24330 byteLength = byteLength >>> 0
24331 if (!noAssert) {
24332 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24333 checkInt(this, value, offset, byteLength, maxBytes, 0)
24334 }
24335
24336 var mul = 1
24337 var i = 0
24338 this[offset] = value & 0xFF
24339 while (++i < byteLength && (mul *= 0x100)) {
24340 this[offset + i] = (value / mul) & 0xFF
24341 }
24342
24343 return offset + byteLength
24344 }
24345
24346 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24347 value = +value
24348 offset = offset >>> 0
24349 byteLength = byteLength >>> 0
24350 if (!noAssert) {
24351 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24352 checkInt(this, value, offset, byteLength, maxBytes, 0)
24353 }
24354
24355 var i = byteLength - 1
24356 var mul = 1
24357 this[offset + i] = value & 0xFF
24358 while (--i >= 0 && (mul *= 0x100)) {
24359 this[offset + i] = (value / mul) & 0xFF
24360 }
24361
24362 return offset + byteLength
24363 }
24364
24365 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24366 value = +value
24367 offset = offset >>> 0
24368 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24369 this[offset] = (value & 0xff)
24370 return offset + 1
24371 }
24372
24373 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24374 value = +value
24375 offset = offset >>> 0
24376 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24377 this[offset] = (value & 0xff)
24378 this[offset + 1] = (value >>> 8)
24379 return offset + 2
24380 }
24381
24382 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24383 value = +value
24384 offset = offset >>> 0
24385 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24386 this[offset] = (value >>> 8)
24387 this[offset + 1] = (value & 0xff)
24388 return offset + 2
24389 }
24390
24391 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24392 value = +value
24393 offset = offset >>> 0
24394 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24395 this[offset + 3] = (value >>> 24)
24396 this[offset + 2] = (value >>> 16)
24397 this[offset + 1] = (value >>> 8)
24398 this[offset] = (value & 0xff)
24399 return offset + 4
24400 }
24401
24402 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24403 value = +value
24404 offset = offset >>> 0
24405 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24406 this[offset] = (value >>> 24)
24407 this[offset + 1] = (value >>> 16)
24408 this[offset + 2] = (value >>> 8)
24409 this[offset + 3] = (value & 0xff)
24410 return offset + 4
24411 }
24412
24413 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24414 value = +value
24415 offset = offset >>> 0
24416 if (!noAssert) {
24417 var limit = Math.pow(2, (8 * byteLength) - 1)
24418
24419 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24420 }
24421
24422 var i = 0
24423 var mul = 1
24424 var sub = 0
24425 this[offset] = value & 0xFF
24426 while (++i < byteLength && (mul *= 0x100)) {
24427 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24428 sub = 1
24429 }
24430 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24431 }
24432
24433 return offset + byteLength
24434 }
24435
24436 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24437 value = +value
24438 offset = offset >>> 0
24439 if (!noAssert) {
24440 var limit = Math.pow(2, (8 * byteLength) - 1)
24441
24442 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24443 }
24444
24445 var i = byteLength - 1
24446 var mul = 1
24447 var sub = 0
24448 this[offset + i] = value & 0xFF
24449 while (--i >= 0 && (mul *= 0x100)) {
24450 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24451 sub = 1
24452 }
24453 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24454 }
24455
24456 return offset + byteLength
24457 }
24458
24459 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24460 value = +value
24461 offset = offset >>> 0
24462 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24463 if (value < 0) value = 0xff + value + 1
24464 this[offset] = (value & 0xff)
24465 return offset + 1
24466 }
24467
24468 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24469 value = +value
24470 offset = offset >>> 0
24471 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24472 this[offset] = (value & 0xff)
24473 this[offset + 1] = (value >>> 8)
24474 return offset + 2
24475 }
24476
24477 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24478 value = +value
24479 offset = offset >>> 0
24480 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24481 this[offset] = (value >>> 8)
24482 this[offset + 1] = (value & 0xff)
24483 return offset + 2
24484 }
24485
24486 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24487 value = +value
24488 offset = offset >>> 0
24489 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24490 this[offset] = (value & 0xff)
24491 this[offset + 1] = (value >>> 8)
24492 this[offset + 2] = (value >>> 16)
24493 this[offset + 3] = (value >>> 24)
24494 return offset + 4
24495 }
24496
24497 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24498 value = +value
24499 offset = offset >>> 0
24500 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24501 if (value < 0) value = 0xffffffff + value + 1
24502 this[offset] = (value >>> 24)
24503 this[offset + 1] = (value >>> 16)
24504 this[offset + 2] = (value >>> 8)
24505 this[offset + 3] = (value & 0xff)
24506 return offset + 4
24507 }
24508
24509 function checkIEEE754 (buf, value, offset, ext, max, min) {
24510 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24511 if (offset < 0) throw new RangeError('Index out of range')
24512 }
24513
24514 function writeFloat (buf, value, offset, littleEndian, noAssert) {
24515 value = +value
24516 offset = offset >>> 0
24517 if (!noAssert) {
24518 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
24519 }
24520 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24521 return offset + 4
24522 }
24523
24524 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24525 return writeFloat(this, value, offset, true, noAssert)
24526 }
24527
24528 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24529 return writeFloat(this, value, offset, false, noAssert)
24530 }
24531
24532 function writeDouble (buf, value, offset, littleEndian, noAssert) {
24533 value = +value
24534 offset = offset >>> 0
24535 if (!noAssert) {
24536 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
24537 }
24538 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24539 return offset + 8
24540 }
24541
24542 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24543 return writeDouble(this, value, offset, true, noAssert)
24544 }
24545
24546 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24547 return writeDouble(this, value, offset, false, noAssert)
24548 }
24549
24550 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24551 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24552 if (!start) start = 0
24553 if (!end && end !== 0) end = this.length
24554 if (targetStart >= target.length) targetStart = target.length
24555 if (!targetStart) targetStart = 0
24556 if (end > 0 && end < start) end = start
24557
24558 // Copy 0 bytes; we're done
24559 if (end === start) return 0
24560 if (target.length === 0 || this.length === 0) return 0
24561
24562 // Fatal error conditions
24563 if (targetStart < 0) {
24564 throw new RangeError('targetStart out of bounds')
24565 }
24566 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24567 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24568
24569 // Are we oob?
24570 if (end > this.length) end = this.length
24571 if (target.length - targetStart < end - start) {
24572 end = target.length - targetStart + start
24573 }
24574
24575 var len = end - start
24576 var i
24577
24578 if (this === target && start < targetStart && targetStart < end) {
24579 // descending copy from end
24580 for (i = len - 1; i >= 0; --i) {
24581 target[i + targetStart] = this[i + start]
24582 }
24583 } else if (len < 1000) {
24584 // ascending copy from start
24585 for (i = 0; i < len; ++i) {
24586 target[i + targetStart] = this[i + start]
24587 }
24588 } else {
24589 Uint8Array.prototype.set.call(
24590 target,
24591 this.subarray(start, start + len),
24592 targetStart
24593 )
24594 }
24595
24596 return len
24597 }
24598
24599 // Usage:
24600 // buffer.fill(number[, offset[, end]])
24601 // buffer.fill(buffer[, offset[, end]])
24602 // buffer.fill(string[, offset[, end]][, encoding])
24603 Buffer.prototype.fill = function fill (val, start, end, encoding) {
24604 // Handle string cases:
24605 if (typeof val === 'string') {
24606 if (typeof start === 'string') {
24607 encoding = start
24608 start = 0
24609 end = this.length
24610 } else if (typeof end === 'string') {
24611 encoding = end
24612 end = this.length
24613 }
24614 if (val.length === 1) {
24615 var code = val.charCodeAt(0)
24616 if (code < 256) {
24617 val = code
24618 }
24619 }
24620 if (encoding !== undefined && typeof encoding !== 'string') {
24621 throw new TypeError('encoding must be a string')
24622 }
24623 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24624 throw new TypeError('Unknown encoding: ' + encoding)
24625 }
24626 } else if (typeof val === 'number') {
24627 val = val & 255
24628 }
24629
24630 // Invalid ranges are not set to a default, so can range check early.
24631 if (start < 0 || this.length < start || this.length < end) {
24632 throw new RangeError('Out of range index')
24633 }
24634
24635 if (end <= start) {
24636 return this
24637 }
24638
24639 start = start >>> 0
24640 end = end === undefined ? this.length : end >>> 0
24641
24642 if (!val) val = 0
24643
24644 var i
24645 if (typeof val === 'number') {
24646 for (i = start; i < end; ++i) {
24647 this[i] = val
24648 }
24649 } else {
24650 var bytes = Buffer.isBuffer(val)
24651 ? val
24652 : new Buffer(val, encoding)
24653 var len = bytes.length
24654 for (i = 0; i < end - start; ++i) {
24655 this[i + start] = bytes[i % len]
24656 }
24657 }
24658
24659 return this
24660 }
24661
24662 // HELPER FUNCTIONS
24663 // ================
24664
24665 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24666
24667 function base64clean (str) {
24668 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24669 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24670 // Node converts strings with length < 2 to ''
24671 if (str.length < 2) return ''
24672 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24673 while (str.length % 4 !== 0) {
24674 str = str + '='
24675 }
24676 return str
24677 }
24678
24679 function stringtrim (str) {
24680 if (str.trim) return str.trim()
24681 return str.replace(/^\s+|\s+$/g, '')
24682 }
24683
24684 function toHex (n) {
24685 if (n < 16) return '0' + n.toString(16)
24686 return n.toString(16)
24687 }
24688
24689 function utf8ToBytes (string, units) {
24690 units = units || Infinity
24691 var codePoint
24692 var length = string.length
24693 var leadSurrogate = null
24694 var bytes = []
24695
24696 for (var i = 0; i < length; ++i) {
24697 codePoint = string.charCodeAt(i)
24698
24699 // is surrogate component
24700 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24701 // last char was a lead
24702 if (!leadSurrogate) {
24703 // no lead yet
24704 if (codePoint > 0xDBFF) {
24705 // unexpected trail
24706 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24707 continue
24708 } else if (i + 1 === length) {
24709 // unpaired lead
24710 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24711 continue
24712 }
24713
24714 // valid lead
24715 leadSurrogate = codePoint
24716
24717 continue
24718 }
24719
24720 // 2 leads in a row
24721 if (codePoint < 0xDC00) {
24722 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24723 leadSurrogate = codePoint
24724 continue
24725 }
24726
24727 // valid surrogate pair
24728 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24729 } else if (leadSurrogate) {
24730 // valid bmp char, but last char was a lead
24731 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24732 }
24733
24734 leadSurrogate = null
24735
24736 // encode utf8
24737 if (codePoint < 0x80) {
24738 if ((units -= 1) < 0) break
24739 bytes.push(codePoint)
24740 } else if (codePoint < 0x800) {
24741 if ((units -= 2) < 0) break
24742 bytes.push(
24743 codePoint >> 0x6 | 0xC0,
24744 codePoint & 0x3F | 0x80
24745 )
24746 } else if (codePoint < 0x10000) {
24747 if ((units -= 3) < 0) break
24748 bytes.push(
24749 codePoint >> 0xC | 0xE0,
24750 codePoint >> 0x6 & 0x3F | 0x80,
24751 codePoint & 0x3F | 0x80
24752 )
24753 } else if (codePoint < 0x110000) {
24754 if ((units -= 4) < 0) break
24755 bytes.push(
24756 codePoint >> 0x12 | 0xF0,
24757 codePoint >> 0xC & 0x3F | 0x80,
24758 codePoint >> 0x6 & 0x3F | 0x80,
24759 codePoint & 0x3F | 0x80
24760 )
24761 } else {
24762 throw new Error('Invalid code point')
24763 }
24764 }
24765
24766 return bytes
24767 }
24768
24769 function asciiToBytes (str) {
24770 var byteArray = []
24771 for (var i = 0; i < str.length; ++i) {
24772 // Node's code seems to be doing this and not & 0x7F..
24773 byteArray.push(str.charCodeAt(i) & 0xFF)
24774 }
24775 return byteArray
24776 }
24777
24778 function utf16leToBytes (str, units) {
24779 var c, hi, lo
24780 var byteArray = []
24781 for (var i = 0; i < str.length; ++i) {
24782 if ((units -= 2) < 0) break
24783
24784 c = str.charCodeAt(i)
24785 hi = c >> 8
24786 lo = c % 256
24787 byteArray.push(lo)
24788 byteArray.push(hi)
24789 }
24790
24791 return byteArray
24792 }
24793
24794 function base64ToBytes (str) {
24795 return base64.toByteArray(base64clean(str))
24796 }
24797
24798 function blitBuffer (src, dst, offset, length) {
24799 for (var i = 0; i < length; ++i) {
24800 if ((i + offset >= dst.length) || (i >= src.length)) break
24801 dst[i + offset] = src[i]
24802 }
24803 return i
24804 }
24805
24806 function isnan (val) {
24807 return val !== val // eslint-disable-line no-self-compare
24808 }
24809
24810 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24811 (function (Buffer){
24812 // Copyright Joyent, Inc. and other Node contributors.
24813 //
24814 // Permission is hereby granted, free of charge, to any person obtaining a
24815 // copy of this software and associated documentation files (the
24816 // "Software"), to deal in the Software without restriction, including
24817 // without limitation the rights to use, copy, modify, merge, publish,
24818 // distribute, sublicense, and/or sell copies of the Software, and to permit
24819 // persons to whom the Software is furnished to do so, subject to the
24820 // following conditions:
24821 //
24822 // The above copyright notice and this permission notice shall be included
24823 // in all copies or substantial portions of the Software.
24824 //
24825 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24826 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24827 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24828 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24829 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24830 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24831 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24832
24833 // NOTE: These type checking functions intentionally don't use `instanceof`
24834 // because it is fragile and can be easily faked with `Object.create()`.
24835
24836 function isArray(arg) {
24837 if (Array.isArray) {
24838 return Array.isArray(arg);
24839 }
24840 return objectToString(arg) === '[object Array]';
24841 }
24842 exports.isArray = isArray;
24843
24844 function isBoolean(arg) {
24845 return typeof arg === 'boolean';
24846 }
24847 exports.isBoolean = isBoolean;
24848
24849 function isNull(arg) {
24850 return arg === null;
24851 }
24852 exports.isNull = isNull;
24853
24854 function isNullOrUndefined(arg) {
24855 return arg == null;
24856 }
24857 exports.isNullOrUndefined = isNullOrUndefined;
24858
24859 function isNumber(arg) {
24860 return typeof arg === 'number';
24861 }
24862 exports.isNumber = isNumber;
24863
24864 function isString(arg) {
24865 return typeof arg === 'string';
24866 }
24867 exports.isString = isString;
24868
24869 function isSymbol(arg) {
24870 return typeof arg === 'symbol';
24871 }
24872 exports.isSymbol = isSymbol;
24873
24874 function isUndefined(arg) {
24875 return arg === void 0;
24876 }
24877 exports.isUndefined = isUndefined;
24878
24879 function isRegExp(re) {
24880 return objectToString(re) === '[object RegExp]';
24881 }
24882 exports.isRegExp = isRegExp;
24883
24884 function isObject(arg) {
24885 return typeof arg === 'object' && arg !== null;
24886 }
24887 exports.isObject = isObject;
24888
24889 function isDate(d) {
24890 return objectToString(d) === '[object Date]';
24891 }
24892 exports.isDate = isDate;
24893
24894 function isError(e) {
24895 return (objectToString(e) === '[object Error]' || e instanceof Error);
24896 }
24897 exports.isError = isError;
24898
24899 function isFunction(arg) {
24900 return typeof arg === 'function';
24901 }
24902 exports.isFunction = isFunction;
24903
24904 function isPrimitive(arg) {
24905 return arg === null ||
24906 typeof arg === 'boolean' ||
24907 typeof arg === 'number' ||
24908 typeof arg === 'string' ||
24909 typeof arg === 'symbol' || // ES6 symbol
24910 typeof arg === 'undefined';
24911 }
24912 exports.isPrimitive = isPrimitive;
24913
24914 exports.isBuffer = Buffer.isBuffer;
24915
24916 function objectToString(o) {
24917 return Object.prototype.toString.call(o);
24918 }
24919
24920 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
24921 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
24922 // Copyright Joyent, Inc. and other Node contributors.
24923 //
24924 // Permission is hereby granted, free of charge, to any person obtaining a
24925 // copy of this software and associated documentation files (the
24926 // "Software"), to deal in the Software without restriction, including
24927 // without limitation the rights to use, copy, modify, merge, publish,
24928 // distribute, sublicense, and/or sell copies of the Software, and to permit
24929 // persons to whom the Software is furnished to do so, subject to the
24930 // following conditions:
24931 //
24932 // The above copyright notice and this permission notice shall be included
24933 // in all copies or substantial portions of the Software.
24934 //
24935 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24936 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24937 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24938 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24939 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24940 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24941 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24942
24943 function EventEmitter() {
24944 this._events = this._events || {};
24945 this._maxListeners = this._maxListeners || undefined;
24946 }
24947 module.exports = EventEmitter;
24948
24949 // Backwards-compat with node 0.10.x
24950 EventEmitter.EventEmitter = EventEmitter;
24951
24952 EventEmitter.prototype._events = undefined;
24953 EventEmitter.prototype._maxListeners = undefined;
24954
24955 // By default EventEmitters will print a warning if more than 10 listeners are
24956 // added to it. This is a useful default which helps finding memory leaks.
24957 EventEmitter.defaultMaxListeners = 10;
24958
24959 // Obviously not all Emitters should be limited to 10. This function allows
24960 // that to be increased. Set to zero for unlimited.
24961 EventEmitter.prototype.setMaxListeners = function(n) {
24962 if (!isNumber(n) || n < 0 || isNaN(n))
24963 throw TypeError('n must be a positive number');
24964 this._maxListeners = n;
24965 return this;
24966 };
24967
24968 EventEmitter.prototype.emit = function(type) {
24969 var er, handler, len, args, i, listeners;
24970
24971 if (!this._events)
24972 this._events = {};
24973
24974 // If there is no 'error' event listener then throw.
24975 if (type === 'error') {
24976 if (!this._events.error ||
24977 (isObject(this._events.error) && !this._events.error.length)) {
24978 er = arguments[1];
24979 if (er instanceof Error) {
24980 throw er; // Unhandled 'error' event
24981 } else {
24982 // At least give some kind of context to the user
24983 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
24984 err.context = er;
24985 throw err;
24986 }
24987 }
24988 }
24989
24990 handler = this._events[type];
24991
24992 if (isUndefined(handler))
24993 return false;
24994
24995 if (isFunction(handler)) {
24996 switch (arguments.length) {
24997 // fast cases
24998 case 1:
24999 handler.call(this);
25000 break;
25001 case 2:
25002 handler.call(this, arguments[1]);
25003 break;
25004 case 3:
25005 handler.call(this, arguments[1], arguments[2]);
25006 break;
25007 // slower
25008 default:
25009 args = Array.prototype.slice.call(arguments, 1);
25010 handler.apply(this, args);
25011 }
25012 } else if (isObject(handler)) {
25013 args = Array.prototype.slice.call(arguments, 1);
25014 listeners = handler.slice();
25015 len = listeners.length;
25016 for (i = 0; i < len; i++)
25017 listeners[i].apply(this, args);
25018 }
25019
25020 return true;
25021 };
25022
25023 EventEmitter.prototype.addListener = function(type, listener) {
25024 var m;
25025
25026 if (!isFunction(listener))
25027 throw TypeError('listener must be a function');
25028
25029 if (!this._events)
25030 this._events = {};
25031
25032 // To avoid recursion in the case that type === "newListener"! Before
25033 // adding it to the listeners, first emit "newListener".
25034 if (this._events.newListener)
25035 this.emit('newListener', type,
25036 isFunction(listener.listener) ?
25037 listener.listener : listener);
25038
25039 if (!this._events[type])
25040 // Optimize the case of one listener. Don't need the extra array object.
25041 this._events[type] = listener;
25042 else if (isObject(this._events[type]))
25043 // If we've already got an array, just append.
25044 this._events[type].push(listener);
25045 else
25046 // Adding the second element, need to change to array.
25047 this._events[type] = [this._events[type], listener];
25048
25049 // Check for listener leak
25050 if (isObject(this._events[type]) && !this._events[type].warned) {
25051 if (!isUndefined(this._maxListeners)) {
25052 m = this._maxListeners;
25053 } else {
25054 m = EventEmitter.defaultMaxListeners;
25055 }
25056
25057 if (m && m > 0 && this._events[type].length > m) {
25058 this._events[type].warned = true;
25059 console.error('(node) warning: possible EventEmitter memory ' +
25060 'leak detected. %d listeners added. ' +
25061 'Use emitter.setMaxListeners() to increase limit.',
25062 this._events[type].length);
25063 if (typeof console.trace === 'function') {
25064 // not supported in IE 10
25065 console.trace();
25066 }
25067 }
25068 }
25069
25070 return this;
25071 };
25072
25073 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
25074
25075 EventEmitter.prototype.once = function(type, listener) {
25076 if (!isFunction(listener))
25077 throw TypeError('listener must be a function');
25078
25079 var fired = false;
25080
25081 function g() {
25082 this.removeListener(type, g);
25083
25084 if (!fired) {
25085 fired = true;
25086 listener.apply(this, arguments);
25087 }
25088 }
25089
25090 g.listener = listener;
25091 this.on(type, g);
25092
25093 return this;
25094 };
25095
25096 // emits a 'removeListener' event iff the listener was removed
25097 EventEmitter.prototype.removeListener = function(type, listener) {
25098 var list, position, length, i;
25099
25100 if (!isFunction(listener))
25101 throw TypeError('listener must be a function');
25102
25103 if (!this._events || !this._events[type])
25104 return this;
25105
25106 list = this._events[type];
25107 length = list.length;
25108 position = -1;
25109
25110 if (list === listener ||
25111 (isFunction(list.listener) && list.listener === listener)) {
25112 delete this._events[type];
25113 if (this._events.removeListener)
25114 this.emit('removeListener', type, listener);
25115
25116 } else if (isObject(list)) {
25117 for (i = length; i-- > 0;) {
25118 if (list[i] === listener ||
25119 (list[i].listener && list[i].listener === listener)) {
25120 position = i;
25121 break;
25122 }
25123 }
25124
25125 if (position < 0)
25126 return this;
25127
25128 if (list.length === 1) {
25129 list.length = 0;
25130 delete this._events[type];
25131 } else {
25132 list.splice(position, 1);
25133 }
25134
25135 if (this._events.removeListener)
25136 this.emit('removeListener', type, listener);
25137 }
25138
25139 return this;
25140 };
25141
25142 EventEmitter.prototype.removeAllListeners = function(type) {
25143 var key, listeners;
25144
25145 if (!this._events)
25146 return this;
25147
25148 // not listening for removeListener, no need to emit
25149 if (!this._events.removeListener) {
25150 if (arguments.length === 0)
25151 this._events = {};
25152 else if (this._events[type])
25153 delete this._events[type];
25154 return this;
25155 }
25156
25157 // emit removeListener for all listeners on all events
25158 if (arguments.length === 0) {
25159 for (key in this._events) {
25160 if (key === 'removeListener') continue;
25161 this.removeAllListeners(key);
25162 }
25163 this.removeAllListeners('removeListener');
25164 this._events = {};
25165 return this;
25166 }
25167
25168 listeners = this._events[type];
25169
25170 if (isFunction(listeners)) {
25171 this.removeListener(type, listeners);
25172 } else if (listeners) {
25173 // LIFO order
25174 while (listeners.length)
25175 this.removeListener(type, listeners[listeners.length - 1]);
25176 }
25177 delete this._events[type];
25178
25179 return this;
25180 };
25181
25182 EventEmitter.prototype.listeners = function(type) {
25183 var ret;
25184 if (!this._events || !this._events[type])
25185 ret = [];
25186 else if (isFunction(this._events[type]))
25187 ret = [this._events[type]];
25188 else
25189 ret = this._events[type].slice();
25190 return ret;
25191 };
25192
25193 EventEmitter.prototype.listenerCount = function(type) {
25194 if (this._events) {
25195 var evlistener = this._events[type];
25196
25197 if (isFunction(evlistener))
25198 return 1;
25199 else if (evlistener)
25200 return evlistener.length;
25201 }
25202 return 0;
25203 };
25204
25205 EventEmitter.listenerCount = function(emitter, type) {
25206 return emitter.listenerCount(type);
25207 };
25208
25209 function isFunction(arg) {
25210 return typeof arg === 'function';
25211 }
25212
25213 function isNumber(arg) {
25214 return typeof arg === 'number';
25215 }
25216
25217 function isObject(arg) {
25218 return typeof arg === 'object' && arg !== null;
25219 }
25220
25221 function isUndefined(arg) {
25222 return arg === void 0;
25223 }
25224
25225 },{}],8:[function(require,module,exports){
25226 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25227 var e, m
25228 var eLen = nBytes * 8 - mLen - 1
25229 var eMax = (1 << eLen) - 1
25230 var eBias = eMax >> 1
25231 var nBits = -7
25232 var i = isLE ? (nBytes - 1) : 0
25233 var d = isLE ? -1 : 1
25234 var s = buffer[offset + i]
25235
25236 i += d
25237
25238 e = s & ((1 << (-nBits)) - 1)
25239 s >>= (-nBits)
25240 nBits += eLen
25241 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25242
25243 m = e & ((1 << (-nBits)) - 1)
25244 e >>= (-nBits)
25245 nBits += mLen
25246 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25247
25248 if (e === 0) {
25249 e = 1 - eBias
25250 } else if (e === eMax) {
25251 return m ? NaN : ((s ? -1 : 1) * Infinity)
25252 } else {
25253 m = m + Math.pow(2, mLen)
25254 e = e - eBias
25255 }
25256 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
25257 }
25258
25259 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25260 var e, m, c
25261 var eLen = nBytes * 8 - mLen - 1
25262 var eMax = (1 << eLen) - 1
25263 var eBias = eMax >> 1
25264 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25265 var i = isLE ? 0 : (nBytes - 1)
25266 var d = isLE ? 1 : -1
25267 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
25268
25269 value = Math.abs(value)
25270
25271 if (isNaN(value) || value === Infinity) {
25272 m = isNaN(value) ? 1 : 0
25273 e = eMax
25274 } else {
25275 e = Math.floor(Math.log(value) / Math.LN2)
25276 if (value * (c = Math.pow(2, -e)) < 1) {
25277 e--
25278 c *= 2
25279 }
25280 if (e + eBias >= 1) {
25281 value += rt / c
25282 } else {
25283 value += rt * Math.pow(2, 1 - eBias)
25284 }
25285 if (value * c >= 2) {
25286 e++
25287 c /= 2
25288 }
25289
25290 if (e + eBias >= eMax) {
25291 m = 0
25292 e = eMax
25293 } else if (e + eBias >= 1) {
25294 m = (value * c - 1) * Math.pow(2, mLen)
25295 e = e + eBias
25296 } else {
25297 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25298 e = 0
25299 }
25300 }
25301
25302 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
25303
25304 e = (e << mLen) | m
25305 eLen += mLen
25306 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
25307
25308 buffer[offset + i - d] |= s * 128
25309 }
25310
25311 },{}],9:[function(require,module,exports){
25312 if (typeof Object.create === 'function') {
25313 // implementation from standard node.js 'util' module
25314 module.exports = function inherits(ctor, superCtor) {
25315 ctor.super_ = superCtor
25316 ctor.prototype = Object.create(superCtor.prototype, {
25317 constructor: {
25318 value: ctor,
25319 enumerable: false,
25320 writable: true,
25321 configurable: true
25322 }
25323 });
25324 };
25325 } else {
25326 // old school shim for old browsers
25327 module.exports = function inherits(ctor, superCtor) {
25328 ctor.super_ = superCtor
25329 var TempCtor = function () {}
25330 TempCtor.prototype = superCtor.prototype
25331 ctor.prototype = new TempCtor()
25332 ctor.prototype.constructor = ctor
25333 }
25334 }
25335
25336 },{}],10:[function(require,module,exports){
25337 /*!
25338 * Determine if an object is a Buffer
25339 *
25340 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25341 * @license MIT
25342 */
25343
25344 // The _isBuffer check is for Safari 5-7 support, because it's missing
25345 // Object.prototype.constructor. Remove this eventually
25346 module.exports = function (obj) {
25347 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
25348 }
25349
25350 function isBuffer (obj) {
25351 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25352 }
25353
25354 // For Node v0.10 support. Remove this eventually.
25355 function isSlowBuffer (obj) {
25356 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25357 }
25358
25359 },{}],11:[function(require,module,exports){
25360 var toString = {}.toString;
25361
25362 module.exports = Array.isArray || function (arr) {
25363 return toString.call(arr) == '[object Array]';
25364 };
25365
25366 },{}],12:[function(require,module,exports){
25367 (function (process){
25368 'use strict';
25369
25370 if (!process.version ||
25371 process.version.indexOf('v0.') === 0 ||
25372 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25373 module.exports = nextTick;
25374 } else {
25375 module.exports = process.nextTick;
25376 }
25377
25378 function nextTick(fn, arg1, arg2, arg3) {
25379 if (typeof fn !== 'function') {
25380 throw new TypeError('"callback" argument must be a function');
25381 }
25382 var len = arguments.length;
25383 var args, i;
25384 switch (len) {
25385 case 0:
25386 case 1:
25387 return process.nextTick(fn);
25388 case 2:
25389 return process.nextTick(function afterTickOne() {
25390 fn.call(null, arg1);
25391 });
25392 case 3:
25393 return process.nextTick(function afterTickTwo() {
25394 fn.call(null, arg1, arg2);
25395 });
25396 case 4:
25397 return process.nextTick(function afterTickThree() {
25398 fn.call(null, arg1, arg2, arg3);
25399 });
25400 default:
25401 args = new Array(len - 1);
25402 i = 0;
25403 while (i < args.length) {
25404 args[i++] = arguments[i];
25405 }
25406 return process.nextTick(function afterTick() {
25407 fn.apply(null, args);
25408 });
25409 }
25410 }
25411
25412 }).call(this,require('_process'))
25413 },{"_process":13}],13:[function(require,module,exports){
25414 // shim for using process in browser
25415 var process = module.exports = {};
25416
25417 // cached from whatever global is present so that test runners that stub it
25418 // don't break things. But we need to wrap it in a try catch in case it is
25419 // wrapped in strict mode code which doesn't define any globals. It's inside a
25420 // function because try/catches deoptimize in certain engines.
25421
25422 var cachedSetTimeout;
25423 var cachedClearTimeout;
25424
25425 function defaultSetTimout() {
25426 throw new Error('setTimeout has not been defined');
25427 }
25428 function defaultClearTimeout () {
25429 throw new Error('clearTimeout has not been defined');
25430 }
25431 (function () {
25432 try {
25433 if (typeof setTimeout === 'function') {
25434 cachedSetTimeout = setTimeout;
25435 } else {
25436 cachedSetTimeout = defaultSetTimout;
25437 }
25438 } catch (e) {
25439 cachedSetTimeout = defaultSetTimout;
25440 }
25441 try {
25442 if (typeof clearTimeout === 'function') {
25443 cachedClearTimeout = clearTimeout;
25444 } else {
25445 cachedClearTimeout = defaultClearTimeout;
25446 }
25447 } catch (e) {
25448 cachedClearTimeout = defaultClearTimeout;
25449 }
25450 } ())
25451 function runTimeout(fun) {
25452 if (cachedSetTimeout === setTimeout) {
25453 //normal enviroments in sane situations
25454 return setTimeout(fun, 0);
25455 }
25456 // if setTimeout wasn't available but was latter defined
25457 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25458 cachedSetTimeout = setTimeout;
25459 return setTimeout(fun, 0);
25460 }
25461 try {
25462 // when when somebody has screwed with setTimeout but no I.E. maddness
25463 return cachedSetTimeout(fun, 0);
25464 } catch(e){
25465 try {
25466 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25467 return cachedSetTimeout.call(null, fun, 0);
25468 } catch(e){
25469 // 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
25470 return cachedSetTimeout.call(this, fun, 0);
25471 }
25472 }
25473
25474
25475 }
25476 function runClearTimeout(marker) {
25477 if (cachedClearTimeout === clearTimeout) {
25478 //normal enviroments in sane situations
25479 return clearTimeout(marker);
25480 }
25481 // if clearTimeout wasn't available but was latter defined
25482 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25483 cachedClearTimeout = clearTimeout;
25484 return clearTimeout(marker);
25485 }
25486 try {
25487 // when when somebody has screwed with setTimeout but no I.E. maddness
25488 return cachedClearTimeout(marker);
25489 } catch (e){
25490 try {
25491 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25492 return cachedClearTimeout.call(null, marker);
25493 } catch (e){
25494 // 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.
25495 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25496 return cachedClearTimeout.call(this, marker);
25497 }
25498 }
25499
25500
25501
25502 }
25503 var queue = [];
25504 var draining = false;
25505 var currentQueue;
25506 var queueIndex = -1;
25507
25508 function cleanUpNextTick() {
25509 if (!draining || !currentQueue) {
25510 return;
25511 }
25512 draining = false;
25513 if (currentQueue.length) {
25514 queue = currentQueue.concat(queue);
25515 } else {
25516 queueIndex = -1;
25517 }
25518 if (queue.length) {
25519 drainQueue();
25520 }
25521 }
25522
25523 function drainQueue() {
25524 if (draining) {
25525 return;
25526 }
25527 var timeout = runTimeout(cleanUpNextTick);
25528 draining = true;
25529
25530 var len = queue.length;
25531 while(len) {
25532 currentQueue = queue;
25533 queue = [];
25534 while (++queueIndex < len) {
25535 if (currentQueue) {
25536 currentQueue[queueIndex].run();
25537 }
25538 }
25539 queueIndex = -1;
25540 len = queue.length;
25541 }
25542 currentQueue = null;
25543 draining = false;
25544 runClearTimeout(timeout);
25545 }
25546
25547 process.nextTick = function (fun) {
25548 var args = new Array(arguments.length - 1);
25549 if (arguments.length > 1) {
25550 for (var i = 1; i < arguments.length; i++) {
25551 args[i - 1] = arguments[i];
25552 }
25553 }
25554 queue.push(new Item(fun, args));
25555 if (queue.length === 1 && !draining) {
25556 runTimeout(drainQueue);
25557 }
25558 };
25559
25560 // v8 likes predictible objects
25561 function Item(fun, array) {
25562 this.fun = fun;
25563 this.array = array;
25564 }
25565 Item.prototype.run = function () {
25566 this.fun.apply(null, this.array);
25567 };
25568 process.title = 'browser';
25569 process.browser = true;
25570 process.env = {};
25571 process.argv = [];
25572 process.version = ''; // empty string to avoid regexp issues
25573 process.versions = {};
25574
25575 function noop() {}
25576
25577 process.on = noop;
25578 process.addListener = noop;
25579 process.once = noop;
25580 process.off = noop;
25581 process.removeListener = noop;
25582 process.removeAllListeners = noop;
25583 process.emit = noop;
25584
25585 process.binding = function (name) {
25586 throw new Error('process.binding is not supported');
25587 };
25588
25589 process.cwd = function () { return '/' };
25590 process.chdir = function (dir) {
25591 throw new Error('process.chdir is not supported');
25592 };
25593 process.umask = function() { return 0; };
25594
25595 },{}],14:[function(require,module,exports){
25596 module.exports = require("./lib/_stream_duplex.js")
25597
25598 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25599 // a duplex stream is just a stream that is both readable and writable.
25600 // Since JS doesn't have multiple prototypal inheritance, this class
25601 // prototypally inherits from Readable, and then parasitically from
25602 // Writable.
25603
25604 'use strict';
25605
25606 /*<replacement>*/
25607
25608 var objectKeys = Object.keys || function (obj) {
25609 var keys = [];
25610 for (var key in obj) {
25611 keys.push(key);
25612 }return keys;
25613 };
25614 /*</replacement>*/
25615
25616 module.exports = Duplex;
25617
25618 /*<replacement>*/
25619 var processNextTick = require('process-nextick-args');
25620 /*</replacement>*/
25621
25622 /*<replacement>*/
25623 var util = require('core-util-is');
25624 util.inherits = require('inherits');
25625 /*</replacement>*/
25626
25627 var Readable = require('./_stream_readable');
25628 var Writable = require('./_stream_writable');
25629
25630 util.inherits(Duplex, Readable);
25631
25632 var keys = objectKeys(Writable.prototype);
25633 for (var v = 0; v < keys.length; v++) {
25634 var method = keys[v];
25635 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
25636 }
25637
25638 function Duplex(options) {
25639 if (!(this instanceof Duplex)) return new Duplex(options);
25640
25641 Readable.call(this, options);
25642 Writable.call(this, options);
25643
25644 if (options && options.readable === false) this.readable = false;
25645
25646 if (options && options.writable === false) this.writable = false;
25647
25648 this.allowHalfOpen = true;
25649 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
25650
25651 this.once('end', onend);
25652 }
25653
25654 // the no-half-open enforcer
25655 function onend() {
25656 // if we allow half-open state, or if the writable side ended,
25657 // then we're ok.
25658 if (this.allowHalfOpen || this._writableState.ended) return;
25659
25660 // no more data can be written.
25661 // But allow more writes to happen in this tick.
25662 processNextTick(onEndNT, this);
25663 }
25664
25665 function onEndNT(self) {
25666 self.end();
25667 }
25668
25669 function forEach(xs, f) {
25670 for (var i = 0, l = xs.length; i < l; i++) {
25671 f(xs[i], i);
25672 }
25673 }
25674 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25675 // a passthrough stream.
25676 // basically just the most minimal sort of Transform stream.
25677 // Every written chunk gets output as-is.
25678
25679 'use strict';
25680
25681 module.exports = PassThrough;
25682
25683 var Transform = require('./_stream_transform');
25684
25685 /*<replacement>*/
25686 var util = require('core-util-is');
25687 util.inherits = require('inherits');
25688 /*</replacement>*/
25689
25690 util.inherits(PassThrough, Transform);
25691
25692 function PassThrough(options) {
25693 if (!(this instanceof PassThrough)) return new PassThrough(options);
25694
25695 Transform.call(this, options);
25696 }
25697
25698 PassThrough.prototype._transform = function (chunk, encoding, cb) {
25699 cb(null, chunk);
25700 };
25701 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25702 (function (process){
25703 'use strict';
25704
25705 module.exports = Readable;
25706
25707 /*<replacement>*/
25708 var processNextTick = require('process-nextick-args');
25709 /*</replacement>*/
25710
25711 /*<replacement>*/
25712 var isArray = require('isarray');
25713 /*</replacement>*/
25714
25715 /*<replacement>*/
25716 var Duplex;
25717 /*</replacement>*/
25718
25719 Readable.ReadableState = ReadableState;
25720
25721 /*<replacement>*/
25722 var EE = require('events').EventEmitter;
25723
25724 var EElistenerCount = function (emitter, type) {
25725 return emitter.listeners(type).length;
25726 };
25727 /*</replacement>*/
25728
25729 /*<replacement>*/
25730 var Stream;
25731 (function () {
25732 try {
25733 Stream = require('st' + 'ream');
25734 } catch (_) {} finally {
25735 if (!Stream) Stream = require('events').EventEmitter;
25736 }
25737 })();
25738 /*</replacement>*/
25739
25740 var Buffer = require('buffer').Buffer;
25741 /*<replacement>*/
25742 var bufferShim = require('buffer-shims');
25743 /*</replacement>*/
25744
25745 /*<replacement>*/
25746 var util = require('core-util-is');
25747 util.inherits = require('inherits');
25748 /*</replacement>*/
25749
25750 /*<replacement>*/
25751 var debugUtil = require('util');
25752 var debug = void 0;
25753 if (debugUtil && debugUtil.debuglog) {
25754 debug = debugUtil.debuglog('stream');
25755 } else {
25756 debug = function () {};
25757 }
25758 /*</replacement>*/
25759
25760 var BufferList = require('./internal/streams/BufferList');
25761 var StringDecoder;
25762
25763 util.inherits(Readable, Stream);
25764
25765 function prependListener(emitter, event, fn) {
25766 // Sadly this is not cacheable as some libraries bundle their own
25767 // event emitter implementation with them.
25768 if (typeof emitter.prependListener === 'function') {
25769 return emitter.prependListener(event, fn);
25770 } else {
25771 // This is a hack to make sure that our error handler is attached before any
25772 // userland ones. NEVER DO THIS. This is here only because this code needs
25773 // to continue to work with older versions of Node.js that do not include
25774 // the prependListener() method. The goal is to eventually remove this hack.
25775 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]];
25776 }
25777 }
25778
25779 function ReadableState(options, stream) {
25780 Duplex = Duplex || require('./_stream_duplex');
25781
25782 options = options || {};
25783
25784 // object stream flag. Used to make read(n) ignore n and to
25785 // make all the buffer merging and length checks go away
25786 this.objectMode = !!options.objectMode;
25787
25788 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
25789
25790 // the point at which it stops calling _read() to fill the buffer
25791 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25792 var hwm = options.highWaterMark;
25793 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25794 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
25795
25796 // cast to ints.
25797 this.highWaterMark = ~ ~this.highWaterMark;
25798
25799 // A linked list is used to store data chunks instead of an array because the
25800 // linked list can remove elements from the beginning faster than
25801 // array.shift()
25802 this.buffer = new BufferList();
25803 this.length = 0;
25804 this.pipes = null;
25805 this.pipesCount = 0;
25806 this.flowing = null;
25807 this.ended = false;
25808 this.endEmitted = false;
25809 this.reading = false;
25810
25811 // a flag to be able to tell if the onwrite cb is called immediately,
25812 // or on a later tick. We set this to true at first, because any
25813 // actions that shouldn't happen until "later" should generally also
25814 // not happen before the first write call.
25815 this.sync = true;
25816
25817 // whenever we return null, then we set a flag to say
25818 // that we're awaiting a 'readable' event emission.
25819 this.needReadable = false;
25820 this.emittedReadable = false;
25821 this.readableListening = false;
25822 this.resumeScheduled = false;
25823
25824 // Crypto is kind of old and crusty. Historically, its default string
25825 // encoding is 'binary' so we have to make this configurable.
25826 // Everything else in the universe uses 'utf8', though.
25827 this.defaultEncoding = options.defaultEncoding || 'utf8';
25828
25829 // when piping, we only care about 'readable' events that happen
25830 // after read()ing all the bytes and not getting any pushback.
25831 this.ranOut = false;
25832
25833 // the number of writers that are awaiting a drain event in .pipe()s
25834 this.awaitDrain = 0;
25835
25836 // if true, a maybeReadMore has been scheduled
25837 this.readingMore = false;
25838
25839 this.decoder = null;
25840 this.encoding = null;
25841 if (options.encoding) {
25842 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25843 this.decoder = new StringDecoder(options.encoding);
25844 this.encoding = options.encoding;
25845 }
25846 }
25847
25848 function Readable(options) {
25849 Duplex = Duplex || require('./_stream_duplex');
25850
25851 if (!(this instanceof Readable)) return new Readable(options);
25852
25853 this._readableState = new ReadableState(options, this);
25854
25855 // legacy
25856 this.readable = true;
25857
25858 if (options && typeof options.read === 'function') this._read = options.read;
25859
25860 Stream.call(this);
25861 }
25862
25863 // Manually shove something into the read() buffer.
25864 // This returns true if the highWaterMark has not been hit yet,
25865 // similar to how Writable.write() returns true if you should
25866 // write() some more.
25867 Readable.prototype.push = function (chunk, encoding) {
25868 var state = this._readableState;
25869
25870 if (!state.objectMode && typeof chunk === 'string') {
25871 encoding = encoding || state.defaultEncoding;
25872 if (encoding !== state.encoding) {
25873 chunk = bufferShim.from(chunk, encoding);
25874 encoding = '';
25875 }
25876 }
25877
25878 return readableAddChunk(this, state, chunk, encoding, false);
25879 };
25880
25881 // Unshift should *always* be something directly out of read()
25882 Readable.prototype.unshift = function (chunk) {
25883 var state = this._readableState;
25884 return readableAddChunk(this, state, chunk, '', true);
25885 };
25886
25887 Readable.prototype.isPaused = function () {
25888 return this._readableState.flowing === false;
25889 };
25890
25891 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25892 var er = chunkInvalid(state, chunk);
25893 if (er) {
25894 stream.emit('error', er);
25895 } else if (chunk === null) {
25896 state.reading = false;
25897 onEofChunk(stream, state);
25898 } else if (state.objectMode || chunk && chunk.length > 0) {
25899 if (state.ended && !addToFront) {
25900 var e = new Error('stream.push() after EOF');
25901 stream.emit('error', e);
25902 } else if (state.endEmitted && addToFront) {
25903 var _e = new Error('stream.unshift() after end event');
25904 stream.emit('error', _e);
25905 } else {
25906 var skipAdd;
25907 if (state.decoder && !addToFront && !encoding) {
25908 chunk = state.decoder.write(chunk);
25909 skipAdd = !state.objectMode && chunk.length === 0;
25910 }
25911
25912 if (!addToFront) state.reading = false;
25913
25914 // Don't add to the buffer if we've decoded to an empty string chunk and
25915 // we're not in object mode
25916 if (!skipAdd) {
25917 // if we want the data now, just emit it.
25918 if (state.flowing && state.length === 0 && !state.sync) {
25919 stream.emit('data', chunk);
25920 stream.read(0);
25921 } else {
25922 // update the buffer info.
25923 state.length += state.objectMode ? 1 : chunk.length;
25924 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
25925
25926 if (state.needReadable) emitReadable(stream);
25927 }
25928 }
25929
25930 maybeReadMore(stream, state);
25931 }
25932 } else if (!addToFront) {
25933 state.reading = false;
25934 }
25935
25936 return needMoreData(state);
25937 }
25938
25939 // if it's past the high water mark, we can push in some more.
25940 // Also, if we have no data yet, we can stand some
25941 // more bytes. This is to work around cases where hwm=0,
25942 // such as the repl. Also, if the push() triggered a
25943 // readable event, and the user called read(largeNumber) such that
25944 // needReadable was set, then we ought to push more, so that another
25945 // 'readable' event will be triggered.
25946 function needMoreData(state) {
25947 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
25948 }
25949
25950 // backwards compatibility.
25951 Readable.prototype.setEncoding = function (enc) {
25952 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25953 this._readableState.decoder = new StringDecoder(enc);
25954 this._readableState.encoding = enc;
25955 return this;
25956 };
25957
25958 // Don't raise the hwm > 8MB
25959 var MAX_HWM = 0x800000;
25960 function computeNewHighWaterMark(n) {
25961 if (n >= MAX_HWM) {
25962 n = MAX_HWM;
25963 } else {
25964 // Get the next highest power of 2 to prevent increasing hwm excessively in
25965 // tiny amounts
25966 n--;
25967 n |= n >>> 1;
25968 n |= n >>> 2;
25969 n |= n >>> 4;
25970 n |= n >>> 8;
25971 n |= n >>> 16;
25972 n++;
25973 }
25974 return n;
25975 }
25976
25977 // This function is designed to be inlinable, so please take care when making
25978 // changes to the function body.
25979 function howMuchToRead(n, state) {
25980 if (n <= 0 || state.length === 0 && state.ended) return 0;
25981 if (state.objectMode) return 1;
25982 if (n !== n) {
25983 // Only flow one buffer at a time
25984 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
25985 }
25986 // If we're asking for more than the current hwm, then raise the hwm.
25987 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
25988 if (n <= state.length) return n;
25989 // Don't have enough
25990 if (!state.ended) {
25991 state.needReadable = true;
25992 return 0;
25993 }
25994 return state.length;
25995 }
25996
25997 // you can override either this method, or the async _read(n) below.
25998 Readable.prototype.read = function (n) {
25999 debug('read', n);
26000 n = parseInt(n, 10);
26001 var state = this._readableState;
26002 var nOrig = n;
26003
26004 if (n !== 0) state.emittedReadable = false;
26005
26006 // if we're doing read(0) to trigger a readable event, but we
26007 // already have a bunch of data in the buffer, then just trigger
26008 // the 'readable' event and move on.
26009 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
26010 debug('read: emitReadable', state.length, state.ended);
26011 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
26012 return null;
26013 }
26014
26015 n = howMuchToRead(n, state);
26016
26017 // if we've ended, and we're now clear, then finish it up.
26018 if (n === 0 && state.ended) {
26019 if (state.length === 0) endReadable(this);
26020 return null;
26021 }
26022
26023 // All the actual chunk generation logic needs to be
26024 // *below* the call to _read. The reason is that in certain
26025 // synthetic stream cases, such as passthrough streams, _read
26026 // may be a completely synchronous operation which may change
26027 // the state of the read buffer, providing enough data when
26028 // before there was *not* enough.
26029 //
26030 // So, the steps are:
26031 // 1. Figure out what the state of things will be after we do
26032 // a read from the buffer.
26033 //
26034 // 2. If that resulting state will trigger a _read, then call _read.
26035 // Note that this may be asynchronous, or synchronous. Yes, it is
26036 // deeply ugly to write APIs this way, but that still doesn't mean
26037 // that the Readable class should behave improperly, as streams are
26038 // designed to be sync/async agnostic.
26039 // Take note if the _read call is sync or async (ie, if the read call
26040 // has returned yet), so that we know whether or not it's safe to emit
26041 // 'readable' etc.
26042 //
26043 // 3. Actually pull the requested chunks out of the buffer and return.
26044
26045 // if we need a readable event, then we need to do some reading.
26046 var doRead = state.needReadable;
26047 debug('need readable', doRead);
26048
26049 // if we currently have less than the highWaterMark, then also read some
26050 if (state.length === 0 || state.length - n < state.highWaterMark) {
26051 doRead = true;
26052 debug('length less than watermark', doRead);
26053 }
26054
26055 // however, if we've ended, then there's no point, and if we're already
26056 // reading, then it's unnecessary.
26057 if (state.ended || state.reading) {
26058 doRead = false;
26059 debug('reading or ended', doRead);
26060 } else if (doRead) {
26061 debug('do read');
26062 state.reading = true;
26063 state.sync = true;
26064 // if the length is currently zero, then we *need* a readable event.
26065 if (state.length === 0) state.needReadable = true;
26066 // call internal read method
26067 this._read(state.highWaterMark);
26068 state.sync = false;
26069 // If _read pushed data synchronously, then `reading` will be false,
26070 // and we need to re-evaluate how much data we can return to the user.
26071 if (!state.reading) n = howMuchToRead(nOrig, state);
26072 }
26073
26074 var ret;
26075 if (n > 0) ret = fromList(n, state);else ret = null;
26076
26077 if (ret === null) {
26078 state.needReadable = true;
26079 n = 0;
26080 } else {
26081 state.length -= n;
26082 }
26083
26084 if (state.length === 0) {
26085 // If we have nothing in the buffer, then we want to know
26086 // as soon as we *do* get something into the buffer.
26087 if (!state.ended) state.needReadable = true;
26088
26089 // If we tried to read() past the EOF, then emit end on the next tick.
26090 if (nOrig !== n && state.ended) endReadable(this);
26091 }
26092
26093 if (ret !== null) this.emit('data', ret);
26094
26095 return ret;
26096 };
26097
26098 function chunkInvalid(state, chunk) {
26099 var er = null;
26100 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26101 er = new TypeError('Invalid non-string/buffer chunk');
26102 }
26103 return er;
26104 }
26105
26106 function onEofChunk(stream, state) {
26107 if (state.ended) return;
26108 if (state.decoder) {
26109 var chunk = state.decoder.end();
26110 if (chunk && chunk.length) {
26111 state.buffer.push(chunk);
26112 state.length += state.objectMode ? 1 : chunk.length;
26113 }
26114 }
26115 state.ended = true;
26116
26117 // emit 'readable' now to make sure it gets picked up.
26118 emitReadable(stream);
26119 }
26120
26121 // Don't emit readable right away in sync mode, because this can trigger
26122 // another read() call => stack overflow. This way, it might trigger
26123 // a nextTick recursion warning, but that's not so bad.
26124 function emitReadable(stream) {
26125 var state = stream._readableState;
26126 state.needReadable = false;
26127 if (!state.emittedReadable) {
26128 debug('emitReadable', state.flowing);
26129 state.emittedReadable = true;
26130 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26131 }
26132 }
26133
26134 function emitReadable_(stream) {
26135 debug('emit readable');
26136 stream.emit('readable');
26137 flow(stream);
26138 }
26139
26140 // at this point, the user has presumably seen the 'readable' event,
26141 // and called read() to consume some data. that may have triggered
26142 // in turn another _read(n) call, in which case reading = true if
26143 // it's in progress.
26144 // However, if we're not ended, or reading, and the length < hwm,
26145 // then go ahead and try to read some more preemptively.
26146 function maybeReadMore(stream, state) {
26147 if (!state.readingMore) {
26148 state.readingMore = true;
26149 processNextTick(maybeReadMore_, stream, state);
26150 }
26151 }
26152
26153 function maybeReadMore_(stream, state) {
26154 var len = state.length;
26155 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26156 debug('maybeReadMore read 0');
26157 stream.read(0);
26158 if (len === state.length)
26159 // didn't get any data, stop spinning.
26160 break;else len = state.length;
26161 }
26162 state.readingMore = false;
26163 }
26164
26165 // abstract method. to be overridden in specific implementation classes.
26166 // call cb(er, data) where data is <= n in length.
26167 // for virtual (non-string, non-buffer) streams, "length" is somewhat
26168 // arbitrary, and perhaps not very meaningful.
26169 Readable.prototype._read = function (n) {
26170 this.emit('error', new Error('_read() is not implemented'));
26171 };
26172
26173 Readable.prototype.pipe = function (dest, pipeOpts) {
26174 var src = this;
26175 var state = this._readableState;
26176
26177 switch (state.pipesCount) {
26178 case 0:
26179 state.pipes = dest;
26180 break;
26181 case 1:
26182 state.pipes = [state.pipes, dest];
26183 break;
26184 default:
26185 state.pipes.push(dest);
26186 break;
26187 }
26188 state.pipesCount += 1;
26189 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
26190
26191 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
26192
26193 var endFn = doEnd ? onend : cleanup;
26194 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
26195
26196 dest.on('unpipe', onunpipe);
26197 function onunpipe(readable) {
26198 debug('onunpipe');
26199 if (readable === src) {
26200 cleanup();
26201 }
26202 }
26203
26204 function onend() {
26205 debug('onend');
26206 dest.end();
26207 }
26208
26209 // when the dest drains, it reduces the awaitDrain counter
26210 // on the source. This would be more elegant with a .once()
26211 // handler in flow(), but adding and removing repeatedly is
26212 // too slow.
26213 var ondrain = pipeOnDrain(src);
26214 dest.on('drain', ondrain);
26215
26216 var cleanedUp = false;
26217 function cleanup() {
26218 debug('cleanup');
26219 // cleanup event handlers once the pipe is broken
26220 dest.removeListener('close', onclose);
26221 dest.removeListener('finish', onfinish);
26222 dest.removeListener('drain', ondrain);
26223 dest.removeListener('error', onerror);
26224 dest.removeListener('unpipe', onunpipe);
26225 src.removeListener('end', onend);
26226 src.removeListener('end', cleanup);
26227 src.removeListener('data', ondata);
26228
26229 cleanedUp = true;
26230
26231 // if the reader is waiting for a drain event from this
26232 // specific writer, then it would cause it to never start
26233 // flowing again.
26234 // So, if this is awaiting a drain, then we just call it now.
26235 // If we don't know, then assume that we are waiting for one.
26236 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26237 }
26238
26239 // If the user pushes more data while we're writing to dest then we'll end up
26240 // in ondata again. However, we only want to increase awaitDrain once because
26241 // dest will only emit one 'drain' event for the multiple writes.
26242 // => Introduce a guard on increasing awaitDrain.
26243 var increasedAwaitDrain = false;
26244 src.on('data', ondata);
26245 function ondata(chunk) {
26246 debug('ondata');
26247 increasedAwaitDrain = false;
26248 var ret = dest.write(chunk);
26249 if (false === ret && !increasedAwaitDrain) {
26250 // If the user unpiped during `dest.write()`, it is possible
26251 // to get stuck in a permanently paused state if that write
26252 // also returned false.
26253 // => Check whether `dest` is still a piping destination.
26254 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26255 debug('false write response, pause', src._readableState.awaitDrain);
26256 src._readableState.awaitDrain++;
26257 increasedAwaitDrain = true;
26258 }
26259 src.pause();
26260 }
26261 }
26262
26263 // if the dest has an error, then stop piping into it.
26264 // however, don't suppress the throwing behavior for this.
26265 function onerror(er) {
26266 debug('onerror', er);
26267 unpipe();
26268 dest.removeListener('error', onerror);
26269 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26270 }
26271
26272 // Make sure our error handler is attached before userland ones.
26273 prependListener(dest, 'error', onerror);
26274
26275 // Both close and finish should trigger unpipe, but only once.
26276 function onclose() {
26277 dest.removeListener('finish', onfinish);
26278 unpipe();
26279 }
26280 dest.once('close', onclose);
26281 function onfinish() {
26282 debug('onfinish');
26283 dest.removeListener('close', onclose);
26284 unpipe();
26285 }
26286 dest.once('finish', onfinish);
26287
26288 function unpipe() {
26289 debug('unpipe');
26290 src.unpipe(dest);
26291 }
26292
26293 // tell the dest that it's being piped to
26294 dest.emit('pipe', src);
26295
26296 // start the flow if it hasn't been started already.
26297 if (!state.flowing) {
26298 debug('pipe resume');
26299 src.resume();
26300 }
26301
26302 return dest;
26303 };
26304
26305 function pipeOnDrain(src) {
26306 return function () {
26307 var state = src._readableState;
26308 debug('pipeOnDrain', state.awaitDrain);
26309 if (state.awaitDrain) state.awaitDrain--;
26310 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26311 state.flowing = true;
26312 flow(src);
26313 }
26314 };
26315 }
26316
26317 Readable.prototype.unpipe = function (dest) {
26318 var state = this._readableState;
26319
26320 // if we're not piping anywhere, then do nothing.
26321 if (state.pipesCount === 0) return this;
26322
26323 // just one destination. most common case.
26324 if (state.pipesCount === 1) {
26325 // passed in one, but it's not the right one.
26326 if (dest && dest !== state.pipes) return this;
26327
26328 if (!dest) dest = state.pipes;
26329
26330 // got a match.
26331 state.pipes = null;
26332 state.pipesCount = 0;
26333 state.flowing = false;
26334 if (dest) dest.emit('unpipe', this);
26335 return this;
26336 }
26337
26338 // slow case. multiple pipe destinations.
26339
26340 if (!dest) {
26341 // remove all.
26342 var dests = state.pipes;
26343 var len = state.pipesCount;
26344 state.pipes = null;
26345 state.pipesCount = 0;
26346 state.flowing = false;
26347
26348 for (var i = 0; i < len; i++) {
26349 dests[i].emit('unpipe', this);
26350 }return this;
26351 }
26352
26353 // try to find the right one.
26354 var index = indexOf(state.pipes, dest);
26355 if (index === -1) return this;
26356
26357 state.pipes.splice(index, 1);
26358 state.pipesCount -= 1;
26359 if (state.pipesCount === 1) state.pipes = state.pipes[0];
26360
26361 dest.emit('unpipe', this);
26362
26363 return this;
26364 };
26365
26366 // set up data events if they are asked for
26367 // Ensure readable listeners eventually get something
26368 Readable.prototype.on = function (ev, fn) {
26369 var res = Stream.prototype.on.call(this, ev, fn);
26370
26371 if (ev === 'data') {
26372 // Start flowing on next tick if stream isn't explicitly paused
26373 if (this._readableState.flowing !== false) this.resume();
26374 } else if (ev === 'readable') {
26375 var state = this._readableState;
26376 if (!state.endEmitted && !state.readableListening) {
26377 state.readableListening = state.needReadable = true;
26378 state.emittedReadable = false;
26379 if (!state.reading) {
26380 processNextTick(nReadingNextTick, this);
26381 } else if (state.length) {
26382 emitReadable(this, state);
26383 }
26384 }
26385 }
26386
26387 return res;
26388 };
26389 Readable.prototype.addListener = Readable.prototype.on;
26390
26391 function nReadingNextTick(self) {
26392 debug('readable nexttick read 0');
26393 self.read(0);
26394 }
26395
26396 // pause() and resume() are remnants of the legacy readable stream API
26397 // If the user uses them, then switch into old mode.
26398 Readable.prototype.resume = function () {
26399 var state = this._readableState;
26400 if (!state.flowing) {
26401 debug('resume');
26402 state.flowing = true;
26403 resume(this, state);
26404 }
26405 return this;
26406 };
26407
26408 function resume(stream, state) {
26409 if (!state.resumeScheduled) {
26410 state.resumeScheduled = true;
26411 processNextTick(resume_, stream, state);
26412 }
26413 }
26414
26415 function resume_(stream, state) {
26416 if (!state.reading) {
26417 debug('resume read 0');
26418 stream.read(0);
26419 }
26420
26421 state.resumeScheduled = false;
26422 state.awaitDrain = 0;
26423 stream.emit('resume');
26424 flow(stream);
26425 if (state.flowing && !state.reading) stream.read(0);
26426 }
26427
26428 Readable.prototype.pause = function () {
26429 debug('call pause flowing=%j', this._readableState.flowing);
26430 if (false !== this._readableState.flowing) {
26431 debug('pause');
26432 this._readableState.flowing = false;
26433 this.emit('pause');
26434 }
26435 return this;
26436 };
26437
26438 function flow(stream) {
26439 var state = stream._readableState;
26440 debug('flow', state.flowing);
26441 while (state.flowing && stream.read() !== null) {}
26442 }
26443
26444 // wrap an old-style stream as the async data source.
26445 // This is *not* part of the readable stream interface.
26446 // It is an ugly unfortunate mess of history.
26447 Readable.prototype.wrap = function (stream) {
26448 var state = this._readableState;
26449 var paused = false;
26450
26451 var self = this;
26452 stream.on('end', function () {
26453 debug('wrapped end');
26454 if (state.decoder && !state.ended) {
26455 var chunk = state.decoder.end();
26456 if (chunk && chunk.length) self.push(chunk);
26457 }
26458
26459 self.push(null);
26460 });
26461
26462 stream.on('data', function (chunk) {
26463 debug('wrapped data');
26464 if (state.decoder) chunk = state.decoder.write(chunk);
26465
26466 // don't skip over falsy values in objectMode
26467 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
26468
26469 var ret = self.push(chunk);
26470 if (!ret) {
26471 paused = true;
26472 stream.pause();
26473 }
26474 });
26475
26476 // proxy all the other methods.
26477 // important when wrapping filters and duplexes.
26478 for (var i in stream) {
26479 if (this[i] === undefined && typeof stream[i] === 'function') {
26480 this[i] = function (method) {
26481 return function () {
26482 return stream[method].apply(stream, arguments);
26483 };
26484 }(i);
26485 }
26486 }
26487
26488 // proxy certain important events.
26489 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26490 forEach(events, function (ev) {
26491 stream.on(ev, self.emit.bind(self, ev));
26492 });
26493
26494 // when we try to consume some more bytes, simply unpause the
26495 // underlying stream.
26496 self._read = function (n) {
26497 debug('wrapped _read', n);
26498 if (paused) {
26499 paused = false;
26500 stream.resume();
26501 }
26502 };
26503
26504 return self;
26505 };
26506
26507 // exposed for testing purposes only.
26508 Readable._fromList = fromList;
26509
26510 // Pluck off n bytes from an array of buffers.
26511 // Length is the combined lengths of all the buffers in the list.
26512 // This function is designed to be inlinable, so please take care when making
26513 // changes to the function body.
26514 function fromList(n, state) {
26515 // nothing buffered
26516 if (state.length === 0) return null;
26517
26518 var ret;
26519 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26520 // read it all, truncate the list
26521 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);
26522 state.buffer.clear();
26523 } else {
26524 // read part of list
26525 ret = fromListPartial(n, state.buffer, state.decoder);
26526 }
26527
26528 return ret;
26529 }
26530
26531 // Extracts only enough buffered data to satisfy the amount requested.
26532 // This function is designed to be inlinable, so please take care when making
26533 // changes to the function body.
26534 function fromListPartial(n, list, hasStrings) {
26535 var ret;
26536 if (n < list.head.data.length) {
26537 // slice is the same for buffers and strings
26538 ret = list.head.data.slice(0, n);
26539 list.head.data = list.head.data.slice(n);
26540 } else if (n === list.head.data.length) {
26541 // first chunk is a perfect match
26542 ret = list.shift();
26543 } else {
26544 // result spans more than one buffer
26545 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26546 }
26547 return ret;
26548 }
26549
26550 // Copies a specified amount of characters from the list of buffered data
26551 // chunks.
26552 // This function is designed to be inlinable, so please take care when making
26553 // changes to the function body.
26554 function copyFromBufferString(n, list) {
26555 var p = list.head;
26556 var c = 1;
26557 var ret = p.data;
26558 n -= ret.length;
26559 while (p = p.next) {
26560 var str = p.data;
26561 var nb = n > str.length ? str.length : n;
26562 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26563 n -= nb;
26564 if (n === 0) {
26565 if (nb === str.length) {
26566 ++c;
26567 if (p.next) list.head = p.next;else list.head = list.tail = null;
26568 } else {
26569 list.head = p;
26570 p.data = str.slice(nb);
26571 }
26572 break;
26573 }
26574 ++c;
26575 }
26576 list.length -= c;
26577 return ret;
26578 }
26579
26580 // Copies a specified amount of bytes from the list of buffered data chunks.
26581 // This function is designed to be inlinable, so please take care when making
26582 // changes to the function body.
26583 function copyFromBuffer(n, list) {
26584 var ret = bufferShim.allocUnsafe(n);
26585 var p = list.head;
26586 var c = 1;
26587 p.data.copy(ret);
26588 n -= p.data.length;
26589 while (p = p.next) {
26590 var buf = p.data;
26591 var nb = n > buf.length ? buf.length : n;
26592 buf.copy(ret, ret.length - n, 0, nb);
26593 n -= nb;
26594 if (n === 0) {
26595 if (nb === buf.length) {
26596 ++c;
26597 if (p.next) list.head = p.next;else list.head = list.tail = null;
26598 } else {
26599 list.head = p;
26600 p.data = buf.slice(nb);
26601 }
26602 break;
26603 }
26604 ++c;
26605 }
26606 list.length -= c;
26607 return ret;
26608 }
26609
26610 function endReadable(stream) {
26611 var state = stream._readableState;
26612
26613 // If we get here before consuming all the bytes, then that is a
26614 // bug in node. Should never happen.
26615 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
26616
26617 if (!state.endEmitted) {
26618 state.ended = true;
26619 processNextTick(endReadableNT, state, stream);
26620 }
26621 }
26622
26623 function endReadableNT(state, stream) {
26624 // Check that we didn't get one last unshift.
26625 if (!state.endEmitted && state.length === 0) {
26626 state.endEmitted = true;
26627 stream.readable = false;
26628 stream.emit('end');
26629 }
26630 }
26631
26632 function forEach(xs, f) {
26633 for (var i = 0, l = xs.length; i < l; i++) {
26634 f(xs[i], i);
26635 }
26636 }
26637
26638 function indexOf(xs, x) {
26639 for (var i = 0, l = xs.length; i < l; i++) {
26640 if (xs[i] === x) return i;
26641 }
26642 return -1;
26643 }
26644 }).call(this,require('_process'))
26645 },{"./_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){
26646 // a transform stream is a readable/writable stream where you do
26647 // something with the data. Sometimes it's called a "filter",
26648 // but that's not a great name for it, since that implies a thing where
26649 // some bits pass through, and others are simply ignored. (That would
26650 // be a valid example of a transform, of course.)
26651 //
26652 // While the output is causally related to the input, it's not a
26653 // necessarily symmetric or synchronous transformation. For example,
26654 // a zlib stream might take multiple plain-text writes(), and then
26655 // emit a single compressed chunk some time in the future.
26656 //
26657 // Here's how this works:
26658 //
26659 // The Transform stream has all the aspects of the readable and writable
26660 // stream classes. When you write(chunk), that calls _write(chunk,cb)
26661 // internally, and returns false if there's a lot of pending writes
26662 // buffered up. When you call read(), that calls _read(n) until
26663 // there's enough pending readable data buffered up.
26664 //
26665 // In a transform stream, the written data is placed in a buffer. When
26666 // _read(n) is called, it transforms the queued up data, calling the
26667 // buffered _write cb's as it consumes chunks. If consuming a single
26668 // written chunk would result in multiple output chunks, then the first
26669 // outputted bit calls the readcb, and subsequent chunks just go into
26670 // the read buffer, and will cause it to emit 'readable' if necessary.
26671 //
26672 // This way, back-pressure is actually determined by the reading side,
26673 // since _read has to be called to start processing a new chunk. However,
26674 // a pathological inflate type of transform can cause excessive buffering
26675 // here. For example, imagine a stream where every byte of input is
26676 // interpreted as an integer from 0-255, and then results in that many
26677 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26678 // 1kb of data being output. In this case, you could write a very small
26679 // amount of input, and end up with a very large amount of output. In
26680 // such a pathological inflating mechanism, there'd be no way to tell
26681 // the system to stop doing the transform. A single 4MB write could
26682 // cause the system to run out of memory.
26683 //
26684 // However, even in such a pathological case, only a single written chunk
26685 // would be consumed, and then the rest would wait (un-transformed) until
26686 // the results of the previous transformed chunk were consumed.
26687
26688 'use strict';
26689
26690 module.exports = Transform;
26691
26692 var Duplex = require('./_stream_duplex');
26693
26694 /*<replacement>*/
26695 var util = require('core-util-is');
26696 util.inherits = require('inherits');
26697 /*</replacement>*/
26698
26699 util.inherits(Transform, Duplex);
26700
26701 function TransformState(stream) {
26702 this.afterTransform = function (er, data) {
26703 return afterTransform(stream, er, data);
26704 };
26705
26706 this.needTransform = false;
26707 this.transforming = false;
26708 this.writecb = null;
26709 this.writechunk = null;
26710 this.writeencoding = null;
26711 }
26712
26713 function afterTransform(stream, er, data) {
26714 var ts = stream._transformState;
26715 ts.transforming = false;
26716
26717 var cb = ts.writecb;
26718
26719 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
26720
26721 ts.writechunk = null;
26722 ts.writecb = null;
26723
26724 if (data !== null && data !== undefined) stream.push(data);
26725
26726 cb(er);
26727
26728 var rs = stream._readableState;
26729 rs.reading = false;
26730 if (rs.needReadable || rs.length < rs.highWaterMark) {
26731 stream._read(rs.highWaterMark);
26732 }
26733 }
26734
26735 function Transform(options) {
26736 if (!(this instanceof Transform)) return new Transform(options);
26737
26738 Duplex.call(this, options);
26739
26740 this._transformState = new TransformState(this);
26741
26742 var stream = this;
26743
26744 // start out asking for a readable event once data is transformed.
26745 this._readableState.needReadable = true;
26746
26747 // we have implemented the _read method, and done the other things
26748 // that Readable wants before the first _read call, so unset the
26749 // sync guard flag.
26750 this._readableState.sync = false;
26751
26752 if (options) {
26753 if (typeof options.transform === 'function') this._transform = options.transform;
26754
26755 if (typeof options.flush === 'function') this._flush = options.flush;
26756 }
26757
26758 // When the writable side finishes, then flush out anything remaining.
26759 this.once('prefinish', function () {
26760 if (typeof this._flush === 'function') this._flush(function (er, data) {
26761 done(stream, er, data);
26762 });else done(stream);
26763 });
26764 }
26765
26766 Transform.prototype.push = function (chunk, encoding) {
26767 this._transformState.needTransform = false;
26768 return Duplex.prototype.push.call(this, chunk, encoding);
26769 };
26770
26771 // This is the part where you do stuff!
26772 // override this function in implementation classes.
26773 // 'chunk' is an input chunk.
26774 //
26775 // Call `push(newChunk)` to pass along transformed output
26776 // to the readable side. You may call 'push' zero or more times.
26777 //
26778 // Call `cb(err)` when you are done with this chunk. If you pass
26779 // an error, then that'll put the hurt on the whole operation. If you
26780 // never call cb(), then you'll never get another chunk.
26781 Transform.prototype._transform = function (chunk, encoding, cb) {
26782 throw new Error('_transform() is not implemented');
26783 };
26784
26785 Transform.prototype._write = function (chunk, encoding, cb) {
26786 var ts = this._transformState;
26787 ts.writecb = cb;
26788 ts.writechunk = chunk;
26789 ts.writeencoding = encoding;
26790 if (!ts.transforming) {
26791 var rs = this._readableState;
26792 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26793 }
26794 };
26795
26796 // Doesn't matter what the args are here.
26797 // _transform does all the work.
26798 // That we got here means that the readable side wants more data.
26799 Transform.prototype._read = function (n) {
26800 var ts = this._transformState;
26801
26802 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26803 ts.transforming = true;
26804 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26805 } else {
26806 // mark that we need a transform, so that any data that comes in
26807 // will get processed, now that we've asked for it.
26808 ts.needTransform = true;
26809 }
26810 };
26811
26812 function done(stream, er, data) {
26813 if (er) return stream.emit('error', er);
26814
26815 if (data !== null && data !== undefined) stream.push(data);
26816
26817 // if there's nothing in the write buffer, then that means
26818 // that nothing more will ever be provided
26819 var ws = stream._writableState;
26820 var ts = stream._transformState;
26821
26822 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
26823
26824 if (ts.transforming) throw new Error('Calling transform done when still transforming');
26825
26826 return stream.push(null);
26827 }
26828 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
26829 (function (process){
26830 // A bit simpler than readable streams.
26831 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
26832 // the drain event emission and buffering.
26833
26834 'use strict';
26835
26836 module.exports = Writable;
26837
26838 /*<replacement>*/
26839 var processNextTick = require('process-nextick-args');
26840 /*</replacement>*/
26841
26842 /*<replacement>*/
26843 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
26844 /*</replacement>*/
26845
26846 /*<replacement>*/
26847 var Duplex;
26848 /*</replacement>*/
26849
26850 Writable.WritableState = WritableState;
26851
26852 /*<replacement>*/
26853 var util = require('core-util-is');
26854 util.inherits = require('inherits');
26855 /*</replacement>*/
26856
26857 /*<replacement>*/
26858 var internalUtil = {
26859 deprecate: require('util-deprecate')
26860 };
26861 /*</replacement>*/
26862
26863 /*<replacement>*/
26864 var Stream;
26865 (function () {
26866 try {
26867 Stream = require('st' + 'ream');
26868 } catch (_) {} finally {
26869 if (!Stream) Stream = require('events').EventEmitter;
26870 }
26871 })();
26872 /*</replacement>*/
26873
26874 var Buffer = require('buffer').Buffer;
26875 /*<replacement>*/
26876 var bufferShim = require('buffer-shims');
26877 /*</replacement>*/
26878
26879 util.inherits(Writable, Stream);
26880
26881 function nop() {}
26882
26883 function WriteReq(chunk, encoding, cb) {
26884 this.chunk = chunk;
26885 this.encoding = encoding;
26886 this.callback = cb;
26887 this.next = null;
26888 }
26889
26890 function WritableState(options, stream) {
26891 Duplex = Duplex || require('./_stream_duplex');
26892
26893 options = options || {};
26894
26895 // object stream flag to indicate whether or not this stream
26896 // contains buffers or objects.
26897 this.objectMode = !!options.objectMode;
26898
26899 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26900
26901 // the point at which write() starts returning false
26902 // Note: 0 is a valid value, means that we always return false if
26903 // the entire buffer is not flushed immediately on write()
26904 var hwm = options.highWaterMark;
26905 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26906 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
26907
26908 // cast to ints.
26909 this.highWaterMark = ~ ~this.highWaterMark;
26910
26911 // drain event flag.
26912 this.needDrain = false;
26913 // at the start of calling end()
26914 this.ending = false;
26915 // when end() has been called, and returned
26916 this.ended = false;
26917 // when 'finish' is emitted
26918 this.finished = false;
26919
26920 // should we decode strings into buffers before passing to _write?
26921 // this is here so that some node-core streams can optimize string
26922 // handling at a lower level.
26923 var noDecode = options.decodeStrings === false;
26924 this.decodeStrings = !noDecode;
26925
26926 // Crypto is kind of old and crusty. Historically, its default string
26927 // encoding is 'binary' so we have to make this configurable.
26928 // Everything else in the universe uses 'utf8', though.
26929 this.defaultEncoding = options.defaultEncoding || 'utf8';
26930
26931 // not an actual buffer we keep track of, but a measurement
26932 // of how much we're waiting to get pushed to some underlying
26933 // socket or file.
26934 this.length = 0;
26935
26936 // a flag to see when we're in the middle of a write.
26937 this.writing = false;
26938
26939 // when true all writes will be buffered until .uncork() call
26940 this.corked = 0;
26941
26942 // a flag to be able to tell if the onwrite cb is called immediately,
26943 // or on a later tick. We set this to true at first, because any
26944 // actions that shouldn't happen until "later" should generally also
26945 // not happen before the first write call.
26946 this.sync = true;
26947
26948 // a flag to know if we're processing previously buffered items, which
26949 // may call the _write() callback in the same tick, so that we don't
26950 // end up in an overlapped onwrite situation.
26951 this.bufferProcessing = false;
26952
26953 // the callback that's passed to _write(chunk,cb)
26954 this.onwrite = function (er) {
26955 onwrite(stream, er);
26956 };
26957
26958 // the callback that the user supplies to write(chunk,encoding,cb)
26959 this.writecb = null;
26960
26961 // the amount that is being written when _write is called.
26962 this.writelen = 0;
26963
26964 this.bufferedRequest = null;
26965 this.lastBufferedRequest = null;
26966
26967 // number of pending user-supplied write callbacks
26968 // this must be 0 before 'finish' can be emitted
26969 this.pendingcb = 0;
26970
26971 // emit prefinish if the only thing we're waiting for is _write cbs
26972 // This is relevant for synchronous Transform streams
26973 this.prefinished = false;
26974
26975 // True if the error was already emitted and should not be thrown again
26976 this.errorEmitted = false;
26977
26978 // count buffered requests
26979 this.bufferedRequestCount = 0;
26980
26981 // allocate the first CorkedRequest, there is always
26982 // one allocated and free to use, and we maintain at most two
26983 this.corkedRequestsFree = new CorkedRequest(this);
26984 }
26985
26986 WritableState.prototype.getBuffer = function getBuffer() {
26987 var current = this.bufferedRequest;
26988 var out = [];
26989 while (current) {
26990 out.push(current);
26991 current = current.next;
26992 }
26993 return out;
26994 };
26995
26996 (function () {
26997 try {
26998 Object.defineProperty(WritableState.prototype, 'buffer', {
26999 get: internalUtil.deprecate(function () {
27000 return this.getBuffer();
27001 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
27002 });
27003 } catch (_) {}
27004 })();
27005
27006 // Test _writableState for inheritance to account for Duplex streams,
27007 // whose prototype chain only points to Readable.
27008 var realHasInstance;
27009 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
27010 realHasInstance = Function.prototype[Symbol.hasInstance];
27011 Object.defineProperty(Writable, Symbol.hasInstance, {
27012 value: function (object) {
27013 if (realHasInstance.call(this, object)) return true;
27014
27015 return object && object._writableState instanceof WritableState;
27016 }
27017 });
27018 } else {
27019 realHasInstance = function (object) {
27020 return object instanceof this;
27021 };
27022 }
27023
27024 function Writable(options) {
27025 Duplex = Duplex || require('./_stream_duplex');
27026
27027 // Writable ctor is applied to Duplexes, too.
27028 // `realHasInstance` is necessary because using plain `instanceof`
27029 // would return false, as no `_writableState` property is attached.
27030
27031 // Trying to use the custom `instanceof` for Writable here will also break the
27032 // Node.js LazyTransform implementation, which has a non-trivial getter for
27033 // `_writableState` that would lead to infinite recursion.
27034 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
27035 return new Writable(options);
27036 }
27037
27038 this._writableState = new WritableState(options, this);
27039
27040 // legacy.
27041 this.writable = true;
27042
27043 if (options) {
27044 if (typeof options.write === 'function') this._write = options.write;
27045
27046 if (typeof options.writev === 'function') this._writev = options.writev;
27047 }
27048
27049 Stream.call(this);
27050 }
27051
27052 // Otherwise people can pipe Writable streams, which is just wrong.
27053 Writable.prototype.pipe = function () {
27054 this.emit('error', new Error('Cannot pipe, not readable'));
27055 };
27056
27057 function writeAfterEnd(stream, cb) {
27058 var er = new Error('write after end');
27059 // TODO: defer error events consistently everywhere, not just the cb
27060 stream.emit('error', er);
27061 processNextTick(cb, er);
27062 }
27063
27064 // If we get something that is not a buffer, string, null, or undefined,
27065 // and we're not in objectMode, then that's an error.
27066 // Otherwise stream chunks are all considered to be of length=1, and the
27067 // watermarks determine how many objects to keep in the buffer, rather than
27068 // how many bytes or characters.
27069 function validChunk(stream, state, chunk, cb) {
27070 var valid = true;
27071 var er = false;
27072 // Always throw error if a null is written
27073 // if we are not in object mode then throw
27074 // if it is not a buffer, string, or undefined.
27075 if (chunk === null) {
27076 er = new TypeError('May not write null values to stream');
27077 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27078 er = new TypeError('Invalid non-string/buffer chunk');
27079 }
27080 if (er) {
27081 stream.emit('error', er);
27082 processNextTick(cb, er);
27083 valid = false;
27084 }
27085 return valid;
27086 }
27087
27088 Writable.prototype.write = function (chunk, encoding, cb) {
27089 var state = this._writableState;
27090 var ret = false;
27091
27092 if (typeof encoding === 'function') {
27093 cb = encoding;
27094 encoding = null;
27095 }
27096
27097 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
27098
27099 if (typeof cb !== 'function') cb = nop;
27100
27101 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27102 state.pendingcb++;
27103 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27104 }
27105
27106 return ret;
27107 };
27108
27109 Writable.prototype.cork = function () {
27110 var state = this._writableState;
27111
27112 state.corked++;
27113 };
27114
27115 Writable.prototype.uncork = function () {
27116 var state = this._writableState;
27117
27118 if (state.corked) {
27119 state.corked--;
27120
27121 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27122 }
27123 };
27124
27125 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27126 // node::ParseEncoding() requires lower case.
27127 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27128 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);
27129 this._writableState.defaultEncoding = encoding;
27130 return this;
27131 };
27132
27133 function decodeChunk(state, chunk, encoding) {
27134 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27135 chunk = bufferShim.from(chunk, encoding);
27136 }
27137 return chunk;
27138 }
27139
27140 // if we're already writing something, then just put this
27141 // in the queue, and wait our turn. Otherwise, call _write
27142 // If we return false, then we need a drain event, so set that flag.
27143 function writeOrBuffer(stream, state, chunk, encoding, cb) {
27144 chunk = decodeChunk(state, chunk, encoding);
27145
27146 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27147 var len = state.objectMode ? 1 : chunk.length;
27148
27149 state.length += len;
27150
27151 var ret = state.length < state.highWaterMark;
27152 // we must ensure that previous needDrain will not be reset to false.
27153 if (!ret) state.needDrain = true;
27154
27155 if (state.writing || state.corked) {
27156 var last = state.lastBufferedRequest;
27157 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27158 if (last) {
27159 last.next = state.lastBufferedRequest;
27160 } else {
27161 state.bufferedRequest = state.lastBufferedRequest;
27162 }
27163 state.bufferedRequestCount += 1;
27164 } else {
27165 doWrite(stream, state, false, len, chunk, encoding, cb);
27166 }
27167
27168 return ret;
27169 }
27170
27171 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27172 state.writelen = len;
27173 state.writecb = cb;
27174 state.writing = true;
27175 state.sync = true;
27176 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27177 state.sync = false;
27178 }
27179
27180 function onwriteError(stream, state, sync, er, cb) {
27181 --state.pendingcb;
27182 if (sync) processNextTick(cb, er);else cb(er);
27183
27184 stream._writableState.errorEmitted = true;
27185 stream.emit('error', er);
27186 }
27187
27188 function onwriteStateUpdate(state) {
27189 state.writing = false;
27190 state.writecb = null;
27191 state.length -= state.writelen;
27192 state.writelen = 0;
27193 }
27194
27195 function onwrite(stream, er) {
27196 var state = stream._writableState;
27197 var sync = state.sync;
27198 var cb = state.writecb;
27199
27200 onwriteStateUpdate(state);
27201
27202 if (er) onwriteError(stream, state, sync, er, cb);else {
27203 // Check if we're actually ready to finish, but don't emit yet
27204 var finished = needFinish(state);
27205
27206 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27207 clearBuffer(stream, state);
27208 }
27209
27210 if (sync) {
27211 /*<replacement>*/
27212 asyncWrite(afterWrite, stream, state, finished, cb);
27213 /*</replacement>*/
27214 } else {
27215 afterWrite(stream, state, finished, cb);
27216 }
27217 }
27218 }
27219
27220 function afterWrite(stream, state, finished, cb) {
27221 if (!finished) onwriteDrain(stream, state);
27222 state.pendingcb--;
27223 cb();
27224 finishMaybe(stream, state);
27225 }
27226
27227 // Must force callback to be called on nextTick, so that we don't
27228 // emit 'drain' before the write() consumer gets the 'false' return
27229 // value, and has a chance to attach a 'drain' listener.
27230 function onwriteDrain(stream, state) {
27231 if (state.length === 0 && state.needDrain) {
27232 state.needDrain = false;
27233 stream.emit('drain');
27234 }
27235 }
27236
27237 // if there's something in the buffer waiting, then process it
27238 function clearBuffer(stream, state) {
27239 state.bufferProcessing = true;
27240 var entry = state.bufferedRequest;
27241
27242 if (stream._writev && entry && entry.next) {
27243 // Fast case, write everything using _writev()
27244 var l = state.bufferedRequestCount;
27245 var buffer = new Array(l);
27246 var holder = state.corkedRequestsFree;
27247 holder.entry = entry;
27248
27249 var count = 0;
27250 while (entry) {
27251 buffer[count] = entry;
27252 entry = entry.next;
27253 count += 1;
27254 }
27255
27256 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
27257
27258 // doWrite is almost always async, defer these to save a bit of time
27259 // as the hot path ends with doWrite
27260 state.pendingcb++;
27261 state.lastBufferedRequest = null;
27262 if (holder.next) {
27263 state.corkedRequestsFree = holder.next;
27264 holder.next = null;
27265 } else {
27266 state.corkedRequestsFree = new CorkedRequest(state);
27267 }
27268 } else {
27269 // Slow case, write chunks one-by-one
27270 while (entry) {
27271 var chunk = entry.chunk;
27272 var encoding = entry.encoding;
27273 var cb = entry.callback;
27274 var len = state.objectMode ? 1 : chunk.length;
27275
27276 doWrite(stream, state, false, len, chunk, encoding, cb);
27277 entry = entry.next;
27278 // if we didn't call the onwrite immediately, then
27279 // it means that we need to wait until it does.
27280 // also, that means that the chunk and cb are currently
27281 // being processed, so move the buffer counter past them.
27282 if (state.writing) {
27283 break;
27284 }
27285 }
27286
27287 if (entry === null) state.lastBufferedRequest = null;
27288 }
27289
27290 state.bufferedRequestCount = 0;
27291 state.bufferedRequest = entry;
27292 state.bufferProcessing = false;
27293 }
27294
27295 Writable.prototype._write = function (chunk, encoding, cb) {
27296 cb(new Error('_write() is not implemented'));
27297 };
27298
27299 Writable.prototype._writev = null;
27300
27301 Writable.prototype.end = function (chunk, encoding, cb) {
27302 var state = this._writableState;
27303
27304 if (typeof chunk === 'function') {
27305 cb = chunk;
27306 chunk = null;
27307 encoding = null;
27308 } else if (typeof encoding === 'function') {
27309 cb = encoding;
27310 encoding = null;
27311 }
27312
27313 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
27314
27315 // .end() fully uncorks
27316 if (state.corked) {
27317 state.corked = 1;
27318 this.uncork();
27319 }
27320
27321 // ignore unnecessary end() calls.
27322 if (!state.ending && !state.finished) endWritable(this, state, cb);
27323 };
27324
27325 function needFinish(state) {
27326 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27327 }
27328
27329 function prefinish(stream, state) {
27330 if (!state.prefinished) {
27331 state.prefinished = true;
27332 stream.emit('prefinish');
27333 }
27334 }
27335
27336 function finishMaybe(stream, state) {
27337 var need = needFinish(state);
27338 if (need) {
27339 if (state.pendingcb === 0) {
27340 prefinish(stream, state);
27341 state.finished = true;
27342 stream.emit('finish');
27343 } else {
27344 prefinish(stream, state);
27345 }
27346 }
27347 return need;
27348 }
27349
27350 function endWritable(stream, state, cb) {
27351 state.ending = true;
27352 finishMaybe(stream, state);
27353 if (cb) {
27354 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
27355 }
27356 state.ended = true;
27357 stream.writable = false;
27358 }
27359
27360 // It seems a linked list but it is not
27361 // there will be only 2 of these for each stream
27362 function CorkedRequest(state) {
27363 var _this = this;
27364
27365 this.next = null;
27366 this.entry = null;
27367
27368 this.finish = function (err) {
27369 var entry = _this.entry;
27370 _this.entry = null;
27371 while (entry) {
27372 var cb = entry.callback;
27373 state.pendingcb--;
27374 cb(err);
27375 entry = entry.next;
27376 }
27377 if (state.corkedRequestsFree) {
27378 state.corkedRequestsFree.next = _this;
27379 } else {
27380 state.corkedRequestsFree = _this;
27381 }
27382 };
27383 }
27384 }).call(this,require('_process'))
27385 },{"./_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){
27386 'use strict';
27387
27388 var Buffer = require('buffer').Buffer;
27389 /*<replacement>*/
27390 var bufferShim = require('buffer-shims');
27391 /*</replacement>*/
27392
27393 module.exports = BufferList;
27394
27395 function BufferList() {
27396 this.head = null;
27397 this.tail = null;
27398 this.length = 0;
27399 }
27400
27401 BufferList.prototype.push = function (v) {
27402 var entry = { data: v, next: null };
27403 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27404 this.tail = entry;
27405 ++this.length;
27406 };
27407
27408 BufferList.prototype.unshift = function (v) {
27409 var entry = { data: v, next: this.head };
27410 if (this.length === 0) this.tail = entry;
27411 this.head = entry;
27412 ++this.length;
27413 };
27414
27415 BufferList.prototype.shift = function () {
27416 if (this.length === 0) return;
27417 var ret = this.head.data;
27418 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27419 --this.length;
27420 return ret;
27421 };
27422
27423 BufferList.prototype.clear = function () {
27424 this.head = this.tail = null;
27425 this.length = 0;
27426 };
27427
27428 BufferList.prototype.join = function (s) {
27429 if (this.length === 0) return '';
27430 var p = this.head;
27431 var ret = '' + p.data;
27432 while (p = p.next) {
27433 ret += s + p.data;
27434 }return ret;
27435 };
27436
27437 BufferList.prototype.concat = function (n) {
27438 if (this.length === 0) return bufferShim.alloc(0);
27439 if (this.length === 1) return this.head.data;
27440 var ret = bufferShim.allocUnsafe(n >>> 0);
27441 var p = this.head;
27442 var i = 0;
27443 while (p) {
27444 p.data.copy(ret, i);
27445 i += p.data.length;
27446 p = p.next;
27447 }
27448 return ret;
27449 };
27450 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27451 module.exports = require("./lib/_stream_passthrough.js")
27452
27453 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27454 (function (process){
27455 var Stream = (function (){
27456 try {
27457 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27458 } catch(_){}
27459 }());
27460 exports = module.exports = require('./lib/_stream_readable.js');
27461 exports.Stream = Stream || exports;
27462 exports.Readable = exports;
27463 exports.Writable = require('./lib/_stream_writable.js');
27464 exports.Duplex = require('./lib/_stream_duplex.js');
27465 exports.Transform = require('./lib/_stream_transform.js');
27466 exports.PassThrough = require('./lib/_stream_passthrough.js');
27467
27468 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27469 module.exports = Stream;
27470 }
27471
27472 }).call(this,require('_process'))
27473 },{"./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){
27474 module.exports = require("./lib/_stream_transform.js")
27475
27476 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27477 module.exports = require("./lib/_stream_writable.js")
27478
27479 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27480 // Copyright Joyent, Inc. and other Node contributors.
27481 //
27482 // Permission is hereby granted, free of charge, to any person obtaining a
27483 // copy of this software and associated documentation files (the
27484 // "Software"), to deal in the Software without restriction, including
27485 // without limitation the rights to use, copy, modify, merge, publish,
27486 // distribute, sublicense, and/or sell copies of the Software, and to permit
27487 // persons to whom the Software is furnished to do so, subject to the
27488 // following conditions:
27489 //
27490 // The above copyright notice and this permission notice shall be included
27491 // in all copies or substantial portions of the Software.
27492 //
27493 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27494 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27495 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27496 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27497 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27498 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27499 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27500
27501 module.exports = Stream;
27502
27503 var EE = require('events').EventEmitter;
27504 var inherits = require('inherits');
27505
27506 inherits(Stream, EE);
27507 Stream.Readable = require('readable-stream/readable.js');
27508 Stream.Writable = require('readable-stream/writable.js');
27509 Stream.Duplex = require('readable-stream/duplex.js');
27510 Stream.Transform = require('readable-stream/transform.js');
27511 Stream.PassThrough = require('readable-stream/passthrough.js');
27512
27513 // Backwards-compat with node 0.4.x
27514 Stream.Stream = Stream;
27515
27516
27517
27518 // old-style streams. Note that the pipe method (the only relevant
27519 // part of this class) is overridden in the Readable class.
27520
27521 function Stream() {
27522 EE.call(this);
27523 }
27524
27525 Stream.prototype.pipe = function(dest, options) {
27526 var source = this;
27527
27528 function ondata(chunk) {
27529 if (dest.writable) {
27530 if (false === dest.write(chunk) && source.pause) {
27531 source.pause();
27532 }
27533 }
27534 }
27535
27536 source.on('data', ondata);
27537
27538 function ondrain() {
27539 if (source.readable && source.resume) {
27540 source.resume();
27541 }
27542 }
27543
27544 dest.on('drain', ondrain);
27545
27546 // If the 'end' option is not supplied, dest.end() will be called when
27547 // source gets the 'end' or 'close' events. Only dest.end() once.
27548 if (!dest._isStdio && (!options || options.end !== false)) {
27549 source.on('end', onend);
27550 source.on('close', onclose);
27551 }
27552
27553 var didOnEnd = false;
27554 function onend() {
27555 if (didOnEnd) return;
27556 didOnEnd = true;
27557
27558 dest.end();
27559 }
27560
27561
27562 function onclose() {
27563 if (didOnEnd) return;
27564 didOnEnd = true;
27565
27566 if (typeof dest.destroy === 'function') dest.destroy();
27567 }
27568
27569 // don't leave dangling pipes when there are errors.
27570 function onerror(er) {
27571 cleanup();
27572 if (EE.listenerCount(this, 'error') === 0) {
27573 throw er; // Unhandled stream error in pipe.
27574 }
27575 }
27576
27577 source.on('error', onerror);
27578 dest.on('error', onerror);
27579
27580 // remove all the event listeners that were added.
27581 function cleanup() {
27582 source.removeListener('data', ondata);
27583 dest.removeListener('drain', ondrain);
27584
27585 source.removeListener('end', onend);
27586 source.removeListener('close', onclose);
27587
27588 source.removeListener('error', onerror);
27589 dest.removeListener('error', onerror);
27590
27591 source.removeListener('end', cleanup);
27592 source.removeListener('close', cleanup);
27593
27594 dest.removeListener('close', cleanup);
27595 }
27596
27597 source.on('end', cleanup);
27598 source.on('close', cleanup);
27599
27600 dest.on('close', cleanup);
27601
27602 dest.emit('pipe', source);
27603
27604 // Allow for unix-like usage: A.pipe(B).pipe(C)
27605 return dest;
27606 };
27607
27608 },{"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){
27609 // Copyright Joyent, Inc. and other Node contributors.
27610 //
27611 // Permission is hereby granted, free of charge, to any person obtaining a
27612 // copy of this software and associated documentation files (the
27613 // "Software"), to deal in the Software without restriction, including
27614 // without limitation the rights to use, copy, modify, merge, publish,
27615 // distribute, sublicense, and/or sell copies of the Software, and to permit
27616 // persons to whom the Software is furnished to do so, subject to the
27617 // following conditions:
27618 //
27619 // The above copyright notice and this permission notice shall be included
27620 // in all copies or substantial portions of the Software.
27621 //
27622 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27623 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27624 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27625 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27626 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27627 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27628 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27629
27630 var Buffer = require('buffer').Buffer;
27631
27632 var isBufferEncoding = Buffer.isEncoding
27633 || function(encoding) {
27634 switch (encoding && encoding.toLowerCase()) {
27635 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;
27636 default: return false;
27637 }
27638 }
27639
27640
27641 function assertEncoding(encoding) {
27642 if (encoding && !isBufferEncoding(encoding)) {
27643 throw new Error('Unknown encoding: ' + encoding);
27644 }
27645 }
27646
27647 // StringDecoder provides an interface for efficiently splitting a series of
27648 // buffers into a series of JS strings without breaking apart multi-byte
27649 // characters. CESU-8 is handled as part of the UTF-8 encoding.
27650 //
27651 // @TODO Handling all encodings inside a single object makes it very difficult
27652 // to reason about this code, so it should be split up in the future.
27653 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27654 // points as used by CESU-8.
27655 var StringDecoder = exports.StringDecoder = function(encoding) {
27656 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27657 assertEncoding(encoding);
27658 switch (this.encoding) {
27659 case 'utf8':
27660 // CESU-8 represents each of Surrogate Pair by 3-bytes
27661 this.surrogateSize = 3;
27662 break;
27663 case 'ucs2':
27664 case 'utf16le':
27665 // UTF-16 represents each of Surrogate Pair by 2-bytes
27666 this.surrogateSize = 2;
27667 this.detectIncompleteChar = utf16DetectIncompleteChar;
27668 break;
27669 case 'base64':
27670 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27671 this.surrogateSize = 3;
27672 this.detectIncompleteChar = base64DetectIncompleteChar;
27673 break;
27674 default:
27675 this.write = passThroughWrite;
27676 return;
27677 }
27678
27679 // Enough space to store all bytes of a single character. UTF-8 needs 4
27680 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27681 this.charBuffer = new Buffer(6);
27682 // Number of bytes received for the current incomplete multi-byte character.
27683 this.charReceived = 0;
27684 // Number of bytes expected for the current incomplete multi-byte character.
27685 this.charLength = 0;
27686 };
27687
27688
27689 // write decodes the given buffer and returns it as JS string that is
27690 // guaranteed to not contain any partial multi-byte characters. Any partial
27691 // character found at the end of the buffer is buffered up, and will be
27692 // returned when calling write again with the remaining bytes.
27693 //
27694 // Note: Converting a Buffer containing an orphan surrogate to a String
27695 // currently works, but converting a String to a Buffer (via `new Buffer`, or
27696 // Buffer#write) will replace incomplete surrogates with the unicode
27697 // replacement character. See https://codereview.chromium.org/121173009/ .
27698 StringDecoder.prototype.write = function(buffer) {
27699 var charStr = '';
27700 // if our last write ended with an incomplete multibyte character
27701 while (this.charLength) {
27702 // determine how many remaining bytes this buffer has to offer for this char
27703 var available = (buffer.length >= this.charLength - this.charReceived) ?
27704 this.charLength - this.charReceived :
27705 buffer.length;
27706
27707 // add the new bytes to the char buffer
27708 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27709 this.charReceived += available;
27710
27711 if (this.charReceived < this.charLength) {
27712 // still not enough chars in this buffer? wait for more ...
27713 return '';
27714 }
27715
27716 // remove bytes belonging to the current character from the buffer
27717 buffer = buffer.slice(available, buffer.length);
27718
27719 // get the character that was split
27720 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27721
27722 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27723 var charCode = charStr.charCodeAt(charStr.length - 1);
27724 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27725 this.charLength += this.surrogateSize;
27726 charStr = '';
27727 continue;
27728 }
27729 this.charReceived = this.charLength = 0;
27730
27731 // if there are no more bytes in this buffer, just emit our char
27732 if (buffer.length === 0) {
27733 return charStr;
27734 }
27735 break;
27736 }
27737
27738 // determine and set charLength / charReceived
27739 this.detectIncompleteChar(buffer);
27740
27741 var end = buffer.length;
27742 if (this.charLength) {
27743 // buffer the incomplete character bytes we got
27744 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27745 end -= this.charReceived;
27746 }
27747
27748 charStr += buffer.toString(this.encoding, 0, end);
27749
27750 var end = charStr.length - 1;
27751 var charCode = charStr.charCodeAt(end);
27752 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27753 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27754 var size = this.surrogateSize;
27755 this.charLength += size;
27756 this.charReceived += size;
27757 this.charBuffer.copy(this.charBuffer, size, 0, size);
27758 buffer.copy(this.charBuffer, 0, 0, size);
27759 return charStr.substring(0, end);
27760 }
27761
27762 // or just emit the charStr
27763 return charStr;
27764 };
27765
27766 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
27767 // the end of the given buffer. If so, it sets this.charLength to the byte
27768 // length that character, and sets this.charReceived to the number of bytes
27769 // that are available for this character.
27770 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27771 // determine how many bytes we have to check at the end of this buffer
27772 var i = (buffer.length >= 3) ? 3 : buffer.length;
27773
27774 // Figure out if one of the last i bytes of our buffer announces an
27775 // incomplete char.
27776 for (; i > 0; i--) {
27777 var c = buffer[buffer.length - i];
27778
27779 // See http://en.wikipedia.org/wiki/UTF-8#Description
27780
27781 // 110XXXXX
27782 if (i == 1 && c >> 5 == 0x06) {
27783 this.charLength = 2;
27784 break;
27785 }
27786
27787 // 1110XXXX
27788 if (i <= 2 && c >> 4 == 0x0E) {
27789 this.charLength = 3;
27790 break;
27791 }
27792
27793 // 11110XXX
27794 if (i <= 3 && c >> 3 == 0x1E) {
27795 this.charLength = 4;
27796 break;
27797 }
27798 }
27799 this.charReceived = i;
27800 };
27801
27802 StringDecoder.prototype.end = function(buffer) {
27803 var res = '';
27804 if (buffer && buffer.length)
27805 res = this.write(buffer);
27806
27807 if (this.charReceived) {
27808 var cr = this.charReceived;
27809 var buf = this.charBuffer;
27810 var enc = this.encoding;
27811 res += buf.slice(0, cr).toString(enc);
27812 }
27813
27814 return res;
27815 };
27816
27817 function passThroughWrite(buffer) {
27818 return buffer.toString(this.encoding);
27819 }
27820
27821 function utf16DetectIncompleteChar(buffer) {
27822 this.charReceived = buffer.length % 2;
27823 this.charLength = this.charReceived ? 2 : 0;
27824 }
27825
27826 function base64DetectIncompleteChar(buffer) {
27827 this.charReceived = buffer.length % 3;
27828 this.charLength = this.charReceived ? 3 : 0;
27829 }
27830
27831 },{"buffer":5}],27:[function(require,module,exports){
27832 (function (global){
27833
27834 /**
27835 * Module exports.
27836 */
27837
27838 module.exports = deprecate;
27839
27840 /**
27841 * Mark that a method should not be used.
27842 * Returns a modified function which warns once by default.
27843 *
27844 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27845 *
27846 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27847 * will throw an Error when invoked.
27848 *
27849 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27850 * will invoke `console.trace()` instead of `console.error()`.
27851 *
27852 * @param {Function} fn - the function to deprecate
27853 * @param {String} msg - the string to print to the console when `fn` is invoked
27854 * @returns {Function} a new "deprecated" version of `fn`
27855 * @api public
27856 */
27857
27858 function deprecate (fn, msg) {
27859 if (config('noDeprecation')) {
27860 return fn;
27861 }
27862
27863 var warned = false;
27864 function deprecated() {
27865 if (!warned) {
27866 if (config('throwDeprecation')) {
27867 throw new Error(msg);
27868 } else if (config('traceDeprecation')) {
27869 console.trace(msg);
27870 } else {
27871 console.warn(msg);
27872 }
27873 warned = true;
27874 }
27875 return fn.apply(this, arguments);
27876 }
27877
27878 return deprecated;
27879 }
27880
27881 /**
27882 * Checks `localStorage` for boolean values for the given `name`.
27883 *
27884 * @param {String} name
27885 * @returns {Boolean}
27886 * @api private
27887 */
27888
27889 function config (name) {
27890 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27891 try {
27892 if (!global.localStorage) return false;
27893 } catch (_) {
27894 return false;
27895 }
27896 var val = global.localStorage[name];
27897 if (null == val) return false;
27898 return String(val).toLowerCase() === 'true';
27899 }
27900
27901 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27902 },{}],28:[function(require,module,exports){
27903 arguments[4][9][0].apply(exports,arguments)
27904 },{"dup":9}],29:[function(require,module,exports){
27905 module.exports = function isBuffer(arg) {
27906 return arg && typeof arg === 'object'
27907 && typeof arg.copy === 'function'
27908 && typeof arg.fill === 'function'
27909 && typeof arg.readUInt8 === 'function';
27910 }
27911 },{}],30:[function(require,module,exports){
27912 (function (process,global){
27913 // Copyright Joyent, Inc. and other Node contributors.
27914 //
27915 // Permission is hereby granted, free of charge, to any person obtaining a
27916 // copy of this software and associated documentation files (the
27917 // "Software"), to deal in the Software without restriction, including
27918 // without limitation the rights to use, copy, modify, merge, publish,
27919 // distribute, sublicense, and/or sell copies of the Software, and to permit
27920 // persons to whom the Software is furnished to do so, subject to the
27921 // following conditions:
27922 //
27923 // The above copyright notice and this permission notice shall be included
27924 // in all copies or substantial portions of the Software.
27925 //
27926 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27927 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27928 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27929 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27930 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27931 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27932 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27933
27934 var formatRegExp = /%[sdj%]/g;
27935 exports.format = function(f) {
27936 if (!isString(f)) {
27937 var objects = [];
27938 for (var i = 0; i < arguments.length; i++) {
27939 objects.push(inspect(arguments[i]));
27940 }
27941 return objects.join(' ');
27942 }
27943
27944 var i = 1;
27945 var args = arguments;
27946 var len = args.length;
27947 var str = String(f).replace(formatRegExp, function(x) {
27948 if (x === '%%') return '%';
27949 if (i >= len) return x;
27950 switch (x) {
27951 case '%s': return String(args[i++]);
27952 case '%d': return Number(args[i++]);
27953 case '%j':
27954 try {
27955 return JSON.stringify(args[i++]);
27956 } catch (_) {
27957 return '[Circular]';
27958 }
27959 default:
27960 return x;
27961 }
27962 });
27963 for (var x = args[i]; i < len; x = args[++i]) {
27964 if (isNull(x) || !isObject(x)) {
27965 str += ' ' + x;
27966 } else {
27967 str += ' ' + inspect(x);
27968 }
27969 }
27970 return str;
27971 };
27972
27973
27974 // Mark that a method should not be used.
27975 // Returns a modified function which warns once by default.
27976 // If --no-deprecation is set, then it is a no-op.
27977 exports.deprecate = function(fn, msg) {
27978 // Allow for deprecating things in the process of starting up.
27979 if (isUndefined(global.process)) {
27980 return function() {
27981 return exports.deprecate(fn, msg).apply(this, arguments);
27982 };
27983 }
27984
27985 if (process.noDeprecation === true) {
27986 return fn;
27987 }
27988
27989 var warned = false;
27990 function deprecated() {
27991 if (!warned) {
27992 if (process.throwDeprecation) {
27993 throw new Error(msg);
27994 } else if (process.traceDeprecation) {
27995 console.trace(msg);
27996 } else {
27997 console.error(msg);
27998 }
27999 warned = true;
28000 }
28001 return fn.apply(this, arguments);
28002 }
28003
28004 return deprecated;
28005 };
28006
28007
28008 var debugs = {};
28009 var debugEnviron;
28010 exports.debuglog = function(set) {
28011 if (isUndefined(debugEnviron))
28012 debugEnviron = process.env.NODE_DEBUG || '';
28013 set = set.toUpperCase();
28014 if (!debugs[set]) {
28015 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
28016 var pid = process.pid;
28017 debugs[set] = function() {
28018 var msg = exports.format.apply(exports, arguments);
28019 console.error('%s %d: %s', set, pid, msg);
28020 };
28021 } else {
28022 debugs[set] = function() {};
28023 }
28024 }
28025 return debugs[set];
28026 };
28027
28028
28029 /**
28030 * Echos the value of a value. Trys to print the value out
28031 * in the best way possible given the different types.
28032 *
28033 * @param {Object} obj The object to print out.
28034 * @param {Object} opts Optional options object that alters the output.
28035 */
28036 /* legacy: obj, showHidden, depth, colors*/
28037 function inspect(obj, opts) {
28038 // default options
28039 var ctx = {
28040 seen: [],
28041 stylize: stylizeNoColor
28042 };
28043 // legacy...
28044 if (arguments.length >= 3) ctx.depth = arguments[2];
28045 if (arguments.length >= 4) ctx.colors = arguments[3];
28046 if (isBoolean(opts)) {
28047 // legacy...
28048 ctx.showHidden = opts;
28049 } else if (opts) {
28050 // got an "options" object
28051 exports._extend(ctx, opts);
28052 }
28053 // set default options
28054 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28055 if (isUndefined(ctx.depth)) ctx.depth = 2;
28056 if (isUndefined(ctx.colors)) ctx.colors = false;
28057 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28058 if (ctx.colors) ctx.stylize = stylizeWithColor;
28059 return formatValue(ctx, obj, ctx.depth);
28060 }
28061 exports.inspect = inspect;
28062
28063
28064 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28065 inspect.colors = {
28066 'bold' : [1, 22],
28067 'italic' : [3, 23],
28068 'underline' : [4, 24],
28069 'inverse' : [7, 27],
28070 'white' : [37, 39],
28071 'grey' : [90, 39],
28072 'black' : [30, 39],
28073 'blue' : [34, 39],
28074 'cyan' : [36, 39],
28075 'green' : [32, 39],
28076 'magenta' : [35, 39],
28077 'red' : [31, 39],
28078 'yellow' : [33, 39]
28079 };
28080
28081 // Don't use 'blue' not visible on cmd.exe
28082 inspect.styles = {
28083 'special': 'cyan',
28084 'number': 'yellow',
28085 'boolean': 'yellow',
28086 'undefined': 'grey',
28087 'null': 'bold',
28088 'string': 'green',
28089 'date': 'magenta',
28090 // "name": intentionally not styling
28091 'regexp': 'red'
28092 };
28093
28094
28095 function stylizeWithColor(str, styleType) {
28096 var style = inspect.styles[styleType];
28097
28098 if (style) {
28099 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28100 '\u001b[' + inspect.colors[style][1] + 'm';
28101 } else {
28102 return str;
28103 }
28104 }
28105
28106
28107 function stylizeNoColor(str, styleType) {
28108 return str;
28109 }
28110
28111
28112 function arrayToHash(array) {
28113 var hash = {};
28114
28115 array.forEach(function(val, idx) {
28116 hash[val] = true;
28117 });
28118
28119 return hash;
28120 }
28121
28122
28123 function formatValue(ctx, value, recurseTimes) {
28124 // Provide a hook for user-specified inspect functions.
28125 // Check that value is an object with an inspect function on it
28126 if (ctx.customInspect &&
28127 value &&
28128 isFunction(value.inspect) &&
28129 // Filter out the util module, it's inspect function is special
28130 value.inspect !== exports.inspect &&
28131 // Also filter out any prototype objects using the circular check.
28132 !(value.constructor && value.constructor.prototype === value)) {
28133 var ret = value.inspect(recurseTimes, ctx);
28134 if (!isString(ret)) {
28135 ret = formatValue(ctx, ret, recurseTimes);
28136 }
28137 return ret;
28138 }
28139
28140 // Primitive types cannot have properties
28141 var primitive = formatPrimitive(ctx, value);
28142 if (primitive) {
28143 return primitive;
28144 }
28145
28146 // Look up the keys of the object.
28147 var keys = Object.keys(value);
28148 var visibleKeys = arrayToHash(keys);
28149
28150 if (ctx.showHidden) {
28151 keys = Object.getOwnPropertyNames(value);
28152 }
28153
28154 // IE doesn't make error fields non-enumerable
28155 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28156 if (isError(value)
28157 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28158 return formatError(value);
28159 }
28160
28161 // Some type of object without properties can be shortcutted.
28162 if (keys.length === 0) {
28163 if (isFunction(value)) {
28164 var name = value.name ? ': ' + value.name : '';
28165 return ctx.stylize('[Function' + name + ']', 'special');
28166 }
28167 if (isRegExp(value)) {
28168 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28169 }
28170 if (isDate(value)) {
28171 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28172 }
28173 if (isError(value)) {
28174 return formatError(value);
28175 }
28176 }
28177
28178 var base = '', array = false, braces = ['{', '}'];
28179
28180 // Make Array say that they are Array
28181 if (isArray(value)) {
28182 array = true;
28183 braces = ['[', ']'];
28184 }
28185
28186 // Make functions say that they are functions
28187 if (isFunction(value)) {
28188 var n = value.name ? ': ' + value.name : '';
28189 base = ' [Function' + n + ']';
28190 }
28191
28192 // Make RegExps say that they are RegExps
28193 if (isRegExp(value)) {
28194 base = ' ' + RegExp.prototype.toString.call(value);
28195 }
28196
28197 // Make dates with properties first say the date
28198 if (isDate(value)) {
28199 base = ' ' + Date.prototype.toUTCString.call(value);
28200 }
28201
28202 // Make error with message first say the error
28203 if (isError(value)) {
28204 base = ' ' + formatError(value);
28205 }
28206
28207 if (keys.length === 0 && (!array || value.length == 0)) {
28208 return braces[0] + base + braces[1];
28209 }
28210
28211 if (recurseTimes < 0) {
28212 if (isRegExp(value)) {
28213 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28214 } else {
28215 return ctx.stylize('[Object]', 'special');
28216 }
28217 }
28218
28219 ctx.seen.push(value);
28220
28221 var output;
28222 if (array) {
28223 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28224 } else {
28225 output = keys.map(function(key) {
28226 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28227 });
28228 }
28229
28230 ctx.seen.pop();
28231
28232 return reduceToSingleString(output, base, braces);
28233 }
28234
28235
28236 function formatPrimitive(ctx, value) {
28237 if (isUndefined(value))
28238 return ctx.stylize('undefined', 'undefined');
28239 if (isString(value)) {
28240 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28241 .replace(/'/g, "\\'")
28242 .replace(/\\"/g, '"') + '\'';
28243 return ctx.stylize(simple, 'string');
28244 }
28245 if (isNumber(value))
28246 return ctx.stylize('' + value, 'number');
28247 if (isBoolean(value))
28248 return ctx.stylize('' + value, 'boolean');
28249 // For some reason typeof null is "object", so special case here.
28250 if (isNull(value))
28251 return ctx.stylize('null', 'null');
28252 }
28253
28254
28255 function formatError(value) {
28256 return '[' + Error.prototype.toString.call(value) + ']';
28257 }
28258
28259
28260 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28261 var output = [];
28262 for (var i = 0, l = value.length; i < l; ++i) {
28263 if (hasOwnProperty(value, String(i))) {
28264 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28265 String(i), true));
28266 } else {
28267 output.push('');
28268 }
28269 }
28270 keys.forEach(function(key) {
28271 if (!key.match(/^\d+$/)) {
28272 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28273 key, true));
28274 }
28275 });
28276 return output;
28277 }
28278
28279
28280 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28281 var name, str, desc;
28282 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28283 if (desc.get) {
28284 if (desc.set) {
28285 str = ctx.stylize('[Getter/Setter]', 'special');
28286 } else {
28287 str = ctx.stylize('[Getter]', 'special');
28288 }
28289 } else {
28290 if (desc.set) {
28291 str = ctx.stylize('[Setter]', 'special');
28292 }
28293 }
28294 if (!hasOwnProperty(visibleKeys, key)) {
28295 name = '[' + key + ']';
28296 }
28297 if (!str) {
28298 if (ctx.seen.indexOf(desc.value) < 0) {
28299 if (isNull(recurseTimes)) {
28300 str = formatValue(ctx, desc.value, null);
28301 } else {
28302 str = formatValue(ctx, desc.value, recurseTimes - 1);
28303 }
28304 if (str.indexOf('\n') > -1) {
28305 if (array) {
28306 str = str.split('\n').map(function(line) {
28307 return ' ' + line;
28308 }).join('\n').substr(2);
28309 } else {
28310 str = '\n' + str.split('\n').map(function(line) {
28311 return ' ' + line;
28312 }).join('\n');
28313 }
28314 }
28315 } else {
28316 str = ctx.stylize('[Circular]', 'special');
28317 }
28318 }
28319 if (isUndefined(name)) {
28320 if (array && key.match(/^\d+$/)) {
28321 return str;
28322 }
28323 name = JSON.stringify('' + key);
28324 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28325 name = name.substr(1, name.length - 2);
28326 name = ctx.stylize(name, 'name');
28327 } else {
28328 name = name.replace(/'/g, "\\'")
28329 .replace(/\\"/g, '"')
28330 .replace(/(^"|"$)/g, "'");
28331 name = ctx.stylize(name, 'string');
28332 }
28333 }
28334
28335 return name + ': ' + str;
28336 }
28337
28338
28339 function reduceToSingleString(output, base, braces) {
28340 var numLinesEst = 0;
28341 var length = output.reduce(function(prev, cur) {
28342 numLinesEst++;
28343 if (cur.indexOf('\n') >= 0) numLinesEst++;
28344 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28345 }, 0);
28346
28347 if (length > 60) {
28348 return braces[0] +
28349 (base === '' ? '' : base + '\n ') +
28350 ' ' +
28351 output.join(',\n ') +
28352 ' ' +
28353 braces[1];
28354 }
28355
28356 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28357 }
28358
28359
28360 // NOTE: These type checking functions intentionally don't use `instanceof`
28361 // because it is fragile and can be easily faked with `Object.create()`.
28362 function isArray(ar) {
28363 return Array.isArray(ar);
28364 }
28365 exports.isArray = isArray;
28366
28367 function isBoolean(arg) {
28368 return typeof arg === 'boolean';
28369 }
28370 exports.isBoolean = isBoolean;
28371
28372 function isNull(arg) {
28373 return arg === null;
28374 }
28375 exports.isNull = isNull;
28376
28377 function isNullOrUndefined(arg) {
28378 return arg == null;
28379 }
28380 exports.isNullOrUndefined = isNullOrUndefined;
28381
28382 function isNumber(arg) {
28383 return typeof arg === 'number';
28384 }
28385 exports.isNumber = isNumber;
28386
28387 function isString(arg) {
28388 return typeof arg === 'string';
28389 }
28390 exports.isString = isString;
28391
28392 function isSymbol(arg) {
28393 return typeof arg === 'symbol';
28394 }
28395 exports.isSymbol = isSymbol;
28396
28397 function isUndefined(arg) {
28398 return arg === void 0;
28399 }
28400 exports.isUndefined = isUndefined;
28401
28402 function isRegExp(re) {
28403 return isObject(re) && objectToString(re) === '[object RegExp]';
28404 }
28405 exports.isRegExp = isRegExp;
28406
28407 function isObject(arg) {
28408 return typeof arg === 'object' && arg !== null;
28409 }
28410 exports.isObject = isObject;
28411
28412 function isDate(d) {
28413 return isObject(d) && objectToString(d) === '[object Date]';
28414 }
28415 exports.isDate = isDate;
28416
28417 function isError(e) {
28418 return isObject(e) &&
28419 (objectToString(e) === '[object Error]' || e instanceof Error);
28420 }
28421 exports.isError = isError;
28422
28423 function isFunction(arg) {
28424 return typeof arg === 'function';
28425 }
28426 exports.isFunction = isFunction;
28427
28428 function isPrimitive(arg) {
28429 return arg === null ||
28430 typeof arg === 'boolean' ||
28431 typeof arg === 'number' ||
28432 typeof arg === 'string' ||
28433 typeof arg === 'symbol' || // ES6 symbol
28434 typeof arg === 'undefined';
28435 }
28436 exports.isPrimitive = isPrimitive;
28437
28438 exports.isBuffer = require('./support/isBuffer');
28439
28440 function objectToString(o) {
28441 return Object.prototype.toString.call(o);
28442 }
28443
28444
28445 function pad(n) {
28446 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28447 }
28448
28449
28450 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28451 'Oct', 'Nov', 'Dec'];
28452
28453 // 26 Feb 16:19:34
28454 function timestamp() {
28455 var d = new Date();
28456 var time = [pad(d.getHours()),
28457 pad(d.getMinutes()),
28458 pad(d.getSeconds())].join(':');
28459 return [d.getDate(), months[d.getMonth()], time].join(' ');
28460 }
28461
28462
28463 // log is just a thin wrapper to console.log that prepends a timestamp
28464 exports.log = function() {
28465 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
28466 };
28467
28468
28469 /**
28470 * Inherit the prototype methods from one constructor into another.
28471 *
28472 * The Function.prototype.inherits from lang.js rewritten as a standalone
28473 * function (not on Function.prototype). NOTE: If this file is to be loaded
28474 * during bootstrapping this function needs to be rewritten using some native
28475 * functions as prototype setup using normal JavaScript does not work as
28476 * expected during bootstrapping (see mirror.js in r114903).
28477 *
28478 * @param {function} ctor Constructor function which needs to inherit the
28479 * prototype.
28480 * @param {function} superCtor Constructor function to inherit prototype from.
28481 */
28482 exports.inherits = require('inherits');
28483
28484 exports._extend = function(origin, add) {
28485 // Don't do anything if add isn't an object
28486 if (!add || !isObject(add)) return origin;
28487
28488 var keys = Object.keys(add);
28489 var i = keys.length;
28490 while (i--) {
28491 origin[keys[i]] = add[keys[i]];
28492 }
28493 return origin;
28494 };
28495
28496 function hasOwnProperty(obj, prop) {
28497 return Object.prototype.hasOwnProperty.call(obj, prop);
28498 }
28499
28500 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28501 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28502 (function (Buffer){
28503 const createKeccakHash = require('keccak')
28504 const secp256k1 = require('secp256k1')
28505 const assert = require('assert')
28506 const rlp = require('rlp')
28507 const BN = require('bn.js')
28508 const createHash = require('create-hash')
28509 Object.assign(exports, require('ethjs-util'))
28510
28511 /**
28512 * the max integer that this VM can handle (a ```BN```)
28513 * @var {BN} MAX_INTEGER
28514 */
28515 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
28516
28517 /**
28518 * 2^256 (a ```BN```)
28519 * @var {BN} TWO_POW256
28520 */
28521 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
28522
28523 /**
28524 * SHA3-256 hash of null (a ```String```)
28525 * @var {String} SHA3_NULL_S
28526 */
28527 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
28528
28529 /**
28530 * SHA3-256 hash of null (a ```Buffer```)
28531 * @var {Buffer} SHA3_NULL
28532 */
28533 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
28534
28535 /**
28536 * SHA3-256 of an RLP of an empty array (a ```String```)
28537 * @var {String} SHA3_RLP_ARRAY_S
28538 */
28539 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
28540
28541 /**
28542 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28543 * @var {Buffer} SHA3_RLP_ARRAY
28544 */
28545 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
28546
28547 /**
28548 * SHA3-256 hash of the RLP of null (a ```String```)
28549 * @var {String} SHA3_RLP_S
28550 */
28551 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
28552
28553 /**
28554 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28555 * @var {Buffer} SHA3_RLP
28556 */
28557 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
28558
28559 /**
28560 * [`BN`](https://github.com/indutny/bn.js)
28561 * @var {Function}
28562 */
28563 exports.BN = BN
28564
28565 /**
28566 * [`rlp`](https://github.com/ethereumjs/rlp)
28567 * @var {Function}
28568 */
28569 exports.rlp = rlp
28570
28571 /**
28572 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28573 * @var {Object}
28574 */
28575 exports.secp256k1 = secp256k1
28576
28577 /**
28578 * Returns a buffer filled with 0s
28579 * @method zeros
28580 * @param {Number} bytes the number of bytes the buffer should be
28581 * @return {Buffer}
28582 */
28583 exports.zeros = function (bytes) {
28584 return Buffer.allocUnsafe(bytes).fill(0)
28585 }
28586
28587 /**
28588 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28589 * Or it truncates the beginning if it exceeds.
28590 * @method lsetLength
28591 * @param {Buffer|Array} msg the value to pad
28592 * @param {Number} length the number of bytes the output should be
28593 * @param {Boolean} [right=false] whether to start padding form the left or right
28594 * @return {Buffer|Array}
28595 */
28596 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28597 var buf = exports.zeros(length)
28598 msg = exports.toBuffer(msg)
28599 if (right) {
28600 if (msg.length < length) {
28601 msg.copy(buf)
28602 return buf
28603 }
28604 return msg.slice(0, length)
28605 } else {
28606 if (msg.length < length) {
28607 msg.copy(buf, length - msg.length)
28608 return buf
28609 }
28610 return msg.slice(-length)
28611 }
28612 }
28613
28614 /**
28615 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28616 * Or it truncates the beginning if it exceeds.
28617 * @param {Buffer|Array} msg the value to pad
28618 * @param {Number} length the number of bytes the output should be
28619 * @return {Buffer|Array}
28620 */
28621 exports.setLengthRight = function (msg, length) {
28622 return exports.setLength(msg, length, true)
28623 }
28624
28625 /**
28626 * Trims leading zeros from a `Buffer` or an `Array`
28627 * @param {Buffer|Array|String} a
28628 * @return {Buffer|Array|String}
28629 */
28630 exports.unpad = exports.stripZeros = function (a) {
28631 a = exports.stripHexPrefix(a)
28632 var first = a[0]
28633 while (a.length > 0 && first.toString() === '0') {
28634 a = a.slice(1)
28635 first = a[0]
28636 }
28637 return a
28638 }
28639 /**
28640 * 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.
28641 * @param {*} v the value
28642 */
28643 exports.toBuffer = function (v) {
28644 if (!Buffer.isBuffer(v)) {
28645 if (Array.isArray(v)) {
28646 v = Buffer.from(v)
28647 } else if (typeof v === 'string') {
28648 if (exports.isHexPrefixed(v)) {
28649 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28650 } else {
28651 v = Buffer.from(v)
28652 }
28653 } else if (typeof v === 'number') {
28654 v = exports.intToBuffer(v)
28655 } else if (v === null || v === undefined) {
28656 v = Buffer.allocUnsafe(0)
28657 } else if (v.toArray) {
28658 // converts a BN to a Buffer
28659 v = Buffer.from(v.toArray())
28660 } else {
28661 throw new Error('invalid type')
28662 }
28663 }
28664 return v
28665 }
28666
28667 /**
28668 * Converts a `Buffer` to a `Number`
28669 * @param {Buffer} buf
28670 * @return {Number}
28671 * @throws If the input number exceeds 53 bits.
28672 */
28673 exports.bufferToInt = function (buf) {
28674 return new BN(exports.toBuffer(buf)).toNumber()
28675 }
28676
28677 /**
28678 * Converts a `Buffer` into a hex `String`
28679 * @param {Buffer} buf
28680 * @return {String}
28681 */
28682 exports.bufferToHex = function (buf) {
28683 buf = exports.toBuffer(buf)
28684 return '0x' + buf.toString('hex')
28685 }
28686
28687 /**
28688 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28689 * @param {Buffer} num
28690 * @return {BN}
28691 */
28692 exports.fromSigned = function (num) {
28693 return new BN(num).fromTwos(256)
28694 }
28695
28696 /**
28697 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28698 * @param {BN} num
28699 * @return {Buffer}
28700 */
28701 exports.toUnsigned = function (num) {
28702 return Buffer.from(num.toTwos(256).toArray())
28703 }
28704
28705 /**
28706 * Creates SHA-3 hash of the input
28707 * @param {Buffer|Array|String|Number} a the input data
28708 * @param {Number} [bits=256] the SHA width
28709 * @return {Buffer}
28710 */
28711 exports.sha3 = function (a, bits) {
28712 a = exports.toBuffer(a)
28713 if (!bits) bits = 256
28714
28715 return createKeccakHash('keccak' + bits).update(a).digest()
28716 }
28717
28718 /**
28719 * Creates SHA256 hash of the input
28720 * @param {Buffer|Array|String|Number} a the input data
28721 * @return {Buffer}
28722 */
28723 exports.sha256 = function (a) {
28724 a = exports.toBuffer(a)
28725 return createHash('sha256').update(a).digest()
28726 }
28727
28728 /**
28729 * Creates RIPEMD160 hash of the input
28730 * @param {Buffer|Array|String|Number} a the input data
28731 * @param {Boolean} padded whether it should be padded to 256 bits or not
28732 * @return {Buffer}
28733 */
28734 exports.ripemd160 = function (a, padded) {
28735 a = exports.toBuffer(a)
28736 var hash = createHash('rmd160').update(a).digest()
28737 if (padded === true) {
28738 return exports.setLength(hash, 32)
28739 } else {
28740 return hash
28741 }
28742 }
28743
28744 /**
28745 * Creates SHA-3 hash of the RLP encoded version of the input
28746 * @param {Buffer|Array|String|Number} a the input data
28747 * @return {Buffer}
28748 */
28749 exports.rlphash = function (a) {
28750 return exports.sha3(rlp.encode(a))
28751 }
28752
28753 /**
28754 * Checks if the private key satisfies the rules of the curve secp256k1.
28755 * @param {Buffer} privateKey
28756 * @return {Boolean}
28757 */
28758 exports.isValidPrivate = function (privateKey) {
28759 return secp256k1.privateKeyVerify(privateKey)
28760 }
28761
28762 /**
28763 * Checks if the public key satisfies the rules of the curve secp256k1
28764 * and the requirements of Ethereum.
28765 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28766 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28767 * @return {Boolean}
28768 */
28769 exports.isValidPublic = function (publicKey, sanitize) {
28770 if (publicKey.length === 64) {
28771 // Convert to SEC1 for secp256k1
28772 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28773 }
28774
28775 if (!sanitize) {
28776 return false
28777 }
28778
28779 return secp256k1.publicKeyVerify(publicKey)
28780 }
28781
28782 /**
28783 * Returns the ethereum address of a given public key.
28784 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28785 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28786 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28787 * @return {Buffer}
28788 */
28789 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28790 pubKey = exports.toBuffer(pubKey)
28791 if (sanitize && (pubKey.length !== 64)) {
28792 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
28793 }
28794 assert(pubKey.length === 64)
28795 // Only take the lower 160bits of the hash
28796 return exports.sha3(pubKey).slice(-20)
28797 }
28798
28799 /**
28800 * Returns the ethereum public key of a given private key
28801 * @param {Buffer} privateKey A private key must be 256 bits wide
28802 * @return {Buffer}
28803 */
28804 var privateToPublic = exports.privateToPublic = function (privateKey) {
28805 privateKey = exports.toBuffer(privateKey)
28806 // skip the type flag and use the X, Y points
28807 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28808 }
28809
28810 /**
28811 * Converts a public key to the Ethereum format.
28812 * @param {Buffer} publicKey
28813 * @return {Buffer}
28814 */
28815 exports.importPublic = function (publicKey) {
28816 publicKey = exports.toBuffer(publicKey)
28817 if (publicKey.length !== 64) {
28818 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
28819 }
28820 return publicKey
28821 }
28822
28823 /**
28824 * ECDSA sign
28825 * @param {Buffer} msgHash
28826 * @param {Buffer} privateKey
28827 * @return {Object}
28828 */
28829 exports.ecsign = function (msgHash, privateKey) {
28830 var sig = secp256k1.sign(msgHash, privateKey)
28831
28832 var ret = {}
28833 ret.r = sig.signature.slice(0, 32)
28834 ret.s = sig.signature.slice(32, 64)
28835 ret.v = sig.recovery + 27
28836 return ret
28837 }
28838
28839 /**
28840 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28841 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28842 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28843 * used to produce the signature.
28844 * @param message
28845 * @returns {Buffer} hash
28846 */
28847 exports.hashPersonalMessage = function (message) {
28848 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28849 return exports.sha3(Buffer.concat([prefix, message]))
28850 }
28851
28852 /**
28853 * ECDSA public key recovery from signature
28854 * @param {Buffer} msgHash
28855 * @param {Number} v
28856 * @param {Buffer} r
28857 * @param {Buffer} s
28858 * @return {Buffer} publicKey
28859 */
28860 exports.ecrecover = function (msgHash, v, r, s) {
28861 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28862 var recovery = v - 27
28863 if (recovery !== 0 && recovery !== 1) {
28864 throw new Error('Invalid signature v value')
28865 }
28866 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28867 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
28868 }
28869
28870 /**
28871 * Convert signature parameters into the format of `eth_sign` RPC method
28872 * @param {Number} v
28873 * @param {Buffer} r
28874 * @param {Buffer} s
28875 * @return {String} sig
28876 */
28877 exports.toRpcSig = function (v, r, s) {
28878 // NOTE: with potential introduction of chainId this might need to be updated
28879 if (v !== 27 && v !== 28) {
28880 throw new Error('Invalid recovery id')
28881 }
28882
28883 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28884 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28885 return exports.bufferToHex(Buffer.concat([
28886 exports.setLengthLeft(r, 32),
28887 exports.setLengthLeft(s, 32),
28888 exports.toBuffer(v - 27)
28889 ]))
28890 }
28891
28892 /**
28893 * Convert signature format of the `eth_sign` RPC method to signature parameters
28894 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28895 * @param {String} sig
28896 * @return {Object}
28897 */
28898 exports.fromRpcSig = function (sig) {
28899 sig = exports.toBuffer(sig)
28900
28901 // NOTE: with potential introduction of chainId this might need to be updated
28902 if (sig.length !== 65) {
28903 throw new Error('Invalid signature length')
28904 }
28905
28906 var v = sig[64]
28907 // support both versions of `eth_sign` responses
28908 if (v < 27) {
28909 v += 27
28910 }
28911
28912 return {
28913 v: v,
28914 r: sig.slice(0, 32),
28915 s: sig.slice(32, 64)
28916 }
28917 }
28918
28919 /**
28920 * Returns the ethereum address of a given private key
28921 * @param {Buffer} privateKey A private key must be 256 bits wide
28922 * @return {Buffer}
28923 */
28924 exports.privateToAddress = function (privateKey) {
28925 return exports.publicToAddress(privateToPublic(privateKey))
28926 }
28927
28928 /**
28929 * Checks if the address is a valid. Accepts checksummed addresses too
28930 * @param {String} address
28931 * @return {Boolean}
28932 */
28933 exports.isValidAddress = function (address) {
28934 return /^0x[0-9a-fA-F]{40}$/i.test(address)
28935 }
28936
28937 /**
28938 * Returns a checksummed address
28939 * @param {String} address
28940 * @return {String}
28941 */
28942 exports.toChecksumAddress = function (address) {
28943 address = exports.stripHexPrefix(address).toLowerCase()
28944 var hash = exports.sha3(address).toString('hex')
28945 var ret = '0x'
28946
28947 for (var i = 0; i < address.length; i++) {
28948 if (parseInt(hash[i], 16) >= 8) {
28949 ret += address[i].toUpperCase()
28950 } else {
28951 ret += address[i]
28952 }
28953 }
28954
28955 return ret
28956 }
28957
28958 /**
28959 * Checks if the address is a valid checksummed address
28960 * @param {Buffer} address
28961 * @return {Boolean}
28962 */
28963 exports.isValidChecksumAddress = function (address) {
28964 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
28965 }
28966
28967 /**
28968 * Generates an address of a newly created contract
28969 * @param {Buffer} from the address which is creating this new address
28970 * @param {Buffer} nonce the nonce of the from account
28971 * @return {Buffer}
28972 */
28973 exports.generateAddress = function (from, nonce) {
28974 from = exports.toBuffer(from)
28975 nonce = new BN(nonce)
28976
28977 if (nonce.isZero()) {
28978 // in RLP we want to encode null in the case of zero nonce
28979 // read the RLP documentation for an answer if you dare
28980 nonce = null
28981 } else {
28982 nonce = Buffer.from(nonce.toArray())
28983 }
28984
28985 // Only take the lower 160bits of the hash
28986 return exports.rlphash([from, nonce]).slice(-20)
28987 }
28988
28989 /**
28990 * Returns true if the supplied address belongs to a precompiled account
28991 * @param {Buffer|String} address
28992 * @return {Boolean}
28993 */
28994 exports.isPrecompiled = function (address) {
28995 var a = exports.unpad(address)
28996 return a.length === 1 && a[0] > 0 && a[0] < 5
28997 }
28998
28999 /**
29000 * Adds "0x" to a given `String` if it does not already start with "0x"
29001 * @param {String} str
29002 * @return {String}
29003 */
29004 exports.addHexPrefix = function (str) {
29005 if (typeof str !== 'string') {
29006 return str
29007 }
29008
29009 return exports.isHexPrefixed(str) ? str : '0x' + str
29010 }
29011
29012 /**
29013 * Validate ECDSA signature
29014 * @method isValidSignature
29015 * @param {Buffer} v
29016 * @param {Buffer} r
29017 * @param {Buffer} s
29018 * @param {Boolean} [homestead=true]
29019 * @return {Boolean}
29020 */
29021
29022 exports.isValidSignature = function (v, r, s, homestead) {
29023 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
29024 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
29025
29026 if (r.length !== 32 || s.length !== 32) {
29027 return false
29028 }
29029
29030 if (v !== 27 && v !== 28) {
29031 return false
29032 }
29033
29034 r = new BN(r)
29035 s = new BN(s)
29036
29037 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
29038 return false
29039 }
29040
29041 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
29042 return false
29043 }
29044
29045 return true
29046 }
29047
29048 /**
29049 * Converts a `Buffer` or `Array` to JSON
29050 * @param {Buffer|Array} ba
29051 * @return {Array|String|null}
29052 */
29053 exports.baToJSON = function (ba) {
29054 if (Buffer.isBuffer(ba)) {
29055 return '0x' + ba.toString('hex')
29056 } else if (ba instanceof Array) {
29057 var array = []
29058 for (var i = 0; i < ba.length; i++) {
29059 array.push(exports.baToJSON(ba[i]))
29060 }
29061 return array
29062 }
29063 }
29064
29065 /**
29066 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29067 * @param {Object} self the `Object` to define properties on
29068 * @param {Array} fields an array fields to define. Fields can contain:
29069 * * `name` - the name of the properties
29070 * * `length` - the number of bytes the field can have
29071 * * `allowLess` - if the field can be less than the length
29072 * * `allowEmpty`
29073 * @param {*} data data to be validated against the definitions
29074 */
29075 exports.defineProperties = function (self, fields, data) {
29076 self.raw = []
29077 self._fields = []
29078
29079 // attach the `toJSON`
29080 self.toJSON = function (label) {
29081 if (label) {
29082 var obj = {}
29083 self._fields.forEach(function (field) {
29084 obj[field] = '0x' + self[field].toString('hex')
29085 })
29086 return obj
29087 }
29088 return exports.baToJSON(this.raw)
29089 }
29090
29091 self.serialize = function serialize () {
29092 return rlp.encode(self.raw)
29093 }
29094
29095 fields.forEach(function (field, i) {
29096 self._fields.push(field.name)
29097 function getter () {
29098 return self.raw[i]
29099 }
29100 function setter (v) {
29101 v = exports.toBuffer(v)
29102
29103 if (v.toString('hex') === '00' && !field.allowZero) {
29104 v = Buffer.allocUnsafe(0)
29105 }
29106
29107 if (field.allowLess && field.length) {
29108 v = exports.stripZeros(v)
29109 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29110 } else if (!(field.allowZero && v.length === 0) && field.length) {
29111 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29112 }
29113
29114 self.raw[i] = v
29115 }
29116
29117 Object.defineProperty(self, field.name, {
29118 enumerable: true,
29119 configurable: true,
29120 get: getter,
29121 set: setter
29122 })
29123
29124 if (field.default) {
29125 self[field.name] = field.default
29126 }
29127
29128 // attach alias
29129 if (field.alias) {
29130 Object.defineProperty(self, field.alias, {
29131 enumerable: false,
29132 configurable: true,
29133 set: setter,
29134 get: getter
29135 })
29136 }
29137 })
29138
29139 // if the constuctor is passed data
29140 if (data) {
29141 if (typeof data === 'string') {
29142 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29143 }
29144
29145 if (Buffer.isBuffer(data)) {
29146 data = rlp.decode(data)
29147 }
29148
29149 if (Array.isArray(data)) {
29150 if (data.length > self._fields.length) {
29151 throw (new Error('wrong number of fields in data'))
29152 }
29153
29154 // make sure all the items are buffers
29155 data.forEach(function (d, i) {
29156 self[self._fields[i]] = exports.toBuffer(d)
29157 })
29158 } else if (typeof data === 'object') {
29159 const keys = Object.keys(data)
29160 fields.forEach(function (field) {
29161 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29162 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29163 })
29164 } else {
29165 throw new Error('invalid data')
29166 }
29167 }
29168 }
29169
29170 }).call(this,require("buffer").Buffer)
29171 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29172 (function (Buffer){
29173 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29174 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29175 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
29176
29177 function check (buffer) {
29178 if (buffer.length < 8) return false
29179 if (buffer.length > 72) return false
29180 if (buffer[0] !== 0x30) return false
29181 if (buffer[1] !== buffer.length - 2) return false
29182 if (buffer[2] !== 0x02) return false
29183
29184 var lenR = buffer[3]
29185 if (lenR === 0) return false
29186 if (5 + lenR >= buffer.length) return false
29187 if (buffer[4 + lenR] !== 0x02) return false
29188
29189 var lenS = buffer[5 + lenR]
29190 if (lenS === 0) return false
29191 if ((6 + lenR + lenS) !== buffer.length) return false
29192
29193 if (buffer[4] & 0x80) return false
29194 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29195
29196 if (buffer[lenR + 6] & 0x80) return false
29197 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29198 return true
29199 }
29200
29201 function decode (buffer) {
29202 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29203 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29204 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29205 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29206 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29207
29208 var lenR = buffer[3]
29209 if (lenR === 0) throw new Error('R length is zero')
29210 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29211 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29212
29213 var lenS = buffer[5 + lenR]
29214 if (lenS === 0) throw new Error('S length is zero')
29215 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29216
29217 if (buffer[4] & 0x80) throw new Error('R value is negative')
29218 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29219
29220 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29221 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29222
29223 // non-BIP66 - extract R, S values
29224 return {
29225 r: buffer.slice(4, 4 + lenR),
29226 s: buffer.slice(6 + lenR)
29227 }
29228 }
29229
29230 /*
29231 * Expects r and s to be positive DER integers.
29232 *
29233 * The DER format uses the most significant bit as a sign bit (& 0x80).
29234 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29235 *
29236 * Examples:
29237 *
29238 * 0 => 0x00
29239 * 1 => 0x01
29240 * -1 => 0xff
29241 * 127 => 0x7f
29242 * -127 => 0x81
29243 * 128 => 0x0080
29244 * -128 => 0x80
29245 * 255 => 0x00ff
29246 * -255 => 0xff01
29247 * 16300 => 0x3fac
29248 * -16300 => 0xc054
29249 * 62300 => 0x00f35c
29250 * -62300 => 0xff0ca4
29251 */
29252 function encode (r, s) {
29253 var lenR = r.length
29254 var lenS = s.length
29255 if (lenR === 0) throw new Error('R length is zero')
29256 if (lenS === 0) throw new Error('S length is zero')
29257 if (lenR > 33) throw new Error('R length is too long')
29258 if (lenS > 33) throw new Error('S length is too long')
29259 if (r[0] & 0x80) throw new Error('R value is negative')
29260 if (s[0] & 0x80) throw new Error('S value is negative')
29261 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29262 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29263
29264 var signature = new Buffer(6 + lenR + lenS)
29265
29266 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29267 signature[0] = 0x30
29268 signature[1] = signature.length - 2
29269 signature[2] = 0x02
29270 signature[3] = r.length
29271 r.copy(signature, 4)
29272 signature[4 + lenR] = 0x02
29273 signature[5 + lenR] = s.length
29274 s.copy(signature, 6 + lenR)
29275
29276 return signature
29277 }
29278
29279 module.exports = {
29280 check: check,
29281 decode: decode,
29282 encode: encode
29283 }
29284
29285 }).call(this,require("buffer").Buffer)
29286 },{"buffer":5}],33:[function(require,module,exports){
29287 (function (module, exports) {
29288 'use strict';
29289
29290 // Utils
29291 function assert (val, msg) {
29292 if (!val) throw new Error(msg || 'Assertion failed');
29293 }
29294
29295 // Could use `inherits` module, but don't want to move from single file
29296 // architecture yet.
29297 function inherits (ctor, superCtor) {
29298 ctor.super_ = superCtor;
29299 var TempCtor = function () {};
29300 TempCtor.prototype = superCtor.prototype;
29301 ctor.prototype = new TempCtor();
29302 ctor.prototype.constructor = ctor;
29303 }
29304
29305 // BN
29306
29307 function BN (number, base, endian) {
29308 if (BN.isBN(number)) {
29309 return number;
29310 }
29311
29312 this.negative = 0;
29313 this.words = null;
29314 this.length = 0;
29315
29316 // Reduction context
29317 this.red = null;
29318
29319 if (number !== null) {
29320 if (base === 'le' || base === 'be') {
29321 endian = base;
29322 base = 10;
29323 }
29324
29325 this._init(number || 0, base || 10, endian || 'be');
29326 }
29327 }
29328 if (typeof module === 'object') {
29329 module.exports = BN;
29330 } else {
29331 exports.BN = BN;
29332 }
29333
29334 BN.BN = BN;
29335 BN.wordSize = 26;
29336
29337 var Buffer;
29338 try {
29339 Buffer = require('buf' + 'fer').Buffer;
29340 } catch (e) {
29341 }
29342
29343 BN.isBN = function isBN (num) {
29344 if (num instanceof BN) {
29345 return true;
29346 }
29347
29348 return num !== null && typeof num === 'object' &&
29349 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29350 };
29351
29352 BN.max = function max (left, right) {
29353 if (left.cmp(right) > 0) return left;
29354 return right;
29355 };
29356
29357 BN.min = function min (left, right) {
29358 if (left.cmp(right) < 0) return left;
29359 return right;
29360 };
29361
29362 BN.prototype._init = function init (number, base, endian) {
29363 if (typeof number === 'number') {
29364 return this._initNumber(number, base, endian);
29365 }
29366
29367 if (typeof number === 'object') {
29368 return this._initArray(number, base, endian);
29369 }
29370
29371 if (base === 'hex') {
29372 base = 16;
29373 }
29374 assert(base === (base | 0) && base >= 2 && base <= 36);
29375
29376 number = number.toString().replace(/\s+/g, '');
29377 var start = 0;
29378 if (number[0] === '-') {
29379 start++;
29380 }
29381
29382 if (base === 16) {
29383 this._parseHex(number, start);
29384 } else {
29385 this._parseBase(number, base, start);
29386 }
29387
29388 if (number[0] === '-') {
29389 this.negative = 1;
29390 }
29391
29392 this.strip();
29393
29394 if (endian !== 'le') return;
29395
29396 this._initArray(this.toArray(), base, endian);
29397 };
29398
29399 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29400 if (number < 0) {
29401 this.negative = 1;
29402 number = -number;
29403 }
29404 if (number < 0x4000000) {
29405 this.words = [ number & 0x3ffffff ];
29406 this.length = 1;
29407 } else if (number < 0x10000000000000) {
29408 this.words = [
29409 number & 0x3ffffff,
29410 (number / 0x4000000) & 0x3ffffff
29411 ];
29412 this.length = 2;
29413 } else {
29414 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29415 this.words = [
29416 number & 0x3ffffff,
29417 (number / 0x4000000) & 0x3ffffff,
29418 1
29419 ];
29420 this.length = 3;
29421 }
29422
29423 if (endian !== 'le') return;
29424
29425 // Reverse the bytes
29426 this._initArray(this.toArray(), base, endian);
29427 };
29428
29429 BN.prototype._initArray = function _initArray (number, base, endian) {
29430 // Perhaps a Uint8Array
29431 assert(typeof number.length === 'number');
29432 if (number.length <= 0) {
29433 this.words = [ 0 ];
29434 this.length = 1;
29435 return this;
29436 }
29437
29438 this.length = Math.ceil(number.length / 3);
29439 this.words = new Array(this.length);
29440 for (var i = 0; i < this.length; i++) {
29441 this.words[i] = 0;
29442 }
29443
29444 var j, w;
29445 var off = 0;
29446 if (endian === 'be') {
29447 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29448 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29449 this.words[j] |= (w << off) & 0x3ffffff;
29450 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29451 off += 24;
29452 if (off >= 26) {
29453 off -= 26;
29454 j++;
29455 }
29456 }
29457 } else if (endian === 'le') {
29458 for (i = 0, j = 0; i < number.length; i += 3) {
29459 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29460 this.words[j] |= (w << off) & 0x3ffffff;
29461 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29462 off += 24;
29463 if (off >= 26) {
29464 off -= 26;
29465 j++;
29466 }
29467 }
29468 }
29469 return this.strip();
29470 };
29471
29472 function parseHex (str, start, end) {
29473 var r = 0;
29474 var len = Math.min(str.length, end);
29475 for (var i = start; i < len; i++) {
29476 var c = str.charCodeAt(i) - 48;
29477
29478 r <<= 4;
29479
29480 // 'a' - 'f'
29481 if (c >= 49 && c <= 54) {
29482 r |= c - 49 + 0xa;
29483
29484 // 'A' - 'F'
29485 } else if (c >= 17 && c <= 22) {
29486 r |= c - 17 + 0xa;
29487
29488 // '0' - '9'
29489 } else {
29490 r |= c & 0xf;
29491 }
29492 }
29493 return r;
29494 }
29495
29496 BN.prototype._parseHex = function _parseHex (number, start) {
29497 // Create possibly bigger array to ensure that it fits the number
29498 this.length = Math.ceil((number.length - start) / 6);
29499 this.words = new Array(this.length);
29500 for (var i = 0; i < this.length; i++) {
29501 this.words[i] = 0;
29502 }
29503
29504 var j, w;
29505 // Scan 24-bit chunks and add them to the number
29506 var off = 0;
29507 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29508 w = parseHex(number, i, i + 6);
29509 this.words[j] |= (w << off) & 0x3ffffff;
29510 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29511 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29512 off += 24;
29513 if (off >= 26) {
29514 off -= 26;
29515 j++;
29516 }
29517 }
29518 if (i + 6 !== start) {
29519 w = parseHex(number, start, i + 6);
29520 this.words[j] |= (w << off) & 0x3ffffff;
29521 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29522 }
29523 this.strip();
29524 };
29525
29526 function parseBase (str, start, end, mul) {
29527 var r = 0;
29528 var len = Math.min(str.length, end);
29529 for (var i = start; i < len; i++) {
29530 var c = str.charCodeAt(i) - 48;
29531
29532 r *= mul;
29533
29534 // 'a'
29535 if (c >= 49) {
29536 r += c - 49 + 0xa;
29537
29538 // 'A'
29539 } else if (c >= 17) {
29540 r += c - 17 + 0xa;
29541
29542 // '0' - '9'
29543 } else {
29544 r += c;
29545 }
29546 }
29547 return r;
29548 }
29549
29550 BN.prototype._parseBase = function _parseBase (number, base, start) {
29551 // Initialize as zero
29552 this.words = [ 0 ];
29553 this.length = 1;
29554
29555 // Find length of limb in base
29556 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29557 limbLen++;
29558 }
29559 limbLen--;
29560 limbPow = (limbPow / base) | 0;
29561
29562 var total = number.length - start;
29563 var mod = total % limbLen;
29564 var end = Math.min(total, total - mod) + start;
29565
29566 var word = 0;
29567 for (var i = start; i < end; i += limbLen) {
29568 word = parseBase(number, i, i + limbLen, base);
29569
29570 this.imuln(limbPow);
29571 if (this.words[0] + word < 0x4000000) {
29572 this.words[0] += word;
29573 } else {
29574 this._iaddn(word);
29575 }
29576 }
29577
29578 if (mod !== 0) {
29579 var pow = 1;
29580 word = parseBase(number, i, number.length, base);
29581
29582 for (i = 0; i < mod; i++) {
29583 pow *= base;
29584 }
29585
29586 this.imuln(pow);
29587 if (this.words[0] + word < 0x4000000) {
29588 this.words[0] += word;
29589 } else {
29590 this._iaddn(word);
29591 }
29592 }
29593 };
29594
29595 BN.prototype.copy = function copy (dest) {
29596 dest.words = new Array(this.length);
29597 for (var i = 0; i < this.length; i++) {
29598 dest.words[i] = this.words[i];
29599 }
29600 dest.length = this.length;
29601 dest.negative = this.negative;
29602 dest.red = this.red;
29603 };
29604
29605 BN.prototype.clone = function clone () {
29606 var r = new BN(null);
29607 this.copy(r);
29608 return r;
29609 };
29610
29611 BN.prototype._expand = function _expand (size) {
29612 while (this.length < size) {
29613 this.words[this.length++] = 0;
29614 }
29615 return this;
29616 };
29617
29618 // Remove leading `0` from `this`
29619 BN.prototype.strip = function strip () {
29620 while (this.length > 1 && this.words[this.length - 1] === 0) {
29621 this.length--;
29622 }
29623 return this._normSign();
29624 };
29625
29626 BN.prototype._normSign = function _normSign () {
29627 // -0 = 0
29628 if (this.length === 1 && this.words[0] === 0) {
29629 this.negative = 0;
29630 }
29631 return this;
29632 };
29633
29634 BN.prototype.inspect = function inspect () {
29635 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29636 };
29637
29638 /*
29639
29640 var zeros = [];
29641 var groupSizes = [];
29642 var groupBases = [];
29643
29644 var s = '';
29645 var i = -1;
29646 while (++i < BN.wordSize) {
29647 zeros[i] = s;
29648 s += '0';
29649 }
29650 groupSizes[0] = 0;
29651 groupSizes[1] = 0;
29652 groupBases[0] = 0;
29653 groupBases[1] = 0;
29654 var base = 2 - 1;
29655 while (++base < 36 + 1) {
29656 var groupSize = 0;
29657 var groupBase = 1;
29658 while (groupBase < (1 << BN.wordSize) / base) {
29659 groupBase *= base;
29660 groupSize += 1;
29661 }
29662 groupSizes[base] = groupSize;
29663 groupBases[base] = groupBase;
29664 }
29665
29666 */
29667
29668 var zeros = [
29669 '',
29670 '0',
29671 '00',
29672 '000',
29673 '0000',
29674 '00000',
29675 '000000',
29676 '0000000',
29677 '00000000',
29678 '000000000',
29679 '0000000000',
29680 '00000000000',
29681 '000000000000',
29682 '0000000000000',
29683 '00000000000000',
29684 '000000000000000',
29685 '0000000000000000',
29686 '00000000000000000',
29687 '000000000000000000',
29688 '0000000000000000000',
29689 '00000000000000000000',
29690 '000000000000000000000',
29691 '0000000000000000000000',
29692 '00000000000000000000000',
29693 '000000000000000000000000',
29694 '0000000000000000000000000'
29695 ];
29696
29697 var groupSizes = [
29698 0, 0,
29699 25, 16, 12, 11, 10, 9, 8,
29700 8, 7, 7, 7, 7, 6, 6,
29701 6, 6, 6, 6, 6, 5, 5,
29702 5, 5, 5, 5, 5, 5, 5,
29703 5, 5, 5, 5, 5, 5, 5
29704 ];
29705
29706 var groupBases = [
29707 0, 0,
29708 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29709 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29710 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29711 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29712 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29713 ];
29714
29715 BN.prototype.toString = function toString (base, padding) {
29716 base = base || 10;
29717 padding = padding | 0 || 1;
29718
29719 var out;
29720 if (base === 16 || base === 'hex') {
29721 out = '';
29722 var off = 0;
29723 var carry = 0;
29724 for (var i = 0; i < this.length; i++) {
29725 var w = this.words[i];
29726 var word = (((w << off) | carry) & 0xffffff).toString(16);
29727 carry = (w >>> (24 - off)) & 0xffffff;
29728 if (carry !== 0 || i !== this.length - 1) {
29729 out = zeros[6 - word.length] + word + out;
29730 } else {
29731 out = word + out;
29732 }
29733 off += 2;
29734 if (off >= 26) {
29735 off -= 26;
29736 i--;
29737 }
29738 }
29739 if (carry !== 0) {
29740 out = carry.toString(16) + out;
29741 }
29742 while (out.length % padding !== 0) {
29743 out = '0' + out;
29744 }
29745 if (this.negative !== 0) {
29746 out = '-' + out;
29747 }
29748 return out;
29749 }
29750
29751 if (base === (base | 0) && base >= 2 && base <= 36) {
29752 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29753 var groupSize = groupSizes[base];
29754 // var groupBase = Math.pow(base, groupSize);
29755 var groupBase = groupBases[base];
29756 out = '';
29757 var c = this.clone();
29758 c.negative = 0;
29759 while (!c.isZero()) {
29760 var r = c.modn(groupBase).toString(base);
29761 c = c.idivn(groupBase);
29762
29763 if (!c.isZero()) {
29764 out = zeros[groupSize - r.length] + r + out;
29765 } else {
29766 out = r + out;
29767 }
29768 }
29769 if (this.isZero()) {
29770 out = '0' + out;
29771 }
29772 while (out.length % padding !== 0) {
29773 out = '0' + out;
29774 }
29775 if (this.negative !== 0) {
29776 out = '-' + out;
29777 }
29778 return out;
29779 }
29780
29781 assert(false, 'Base should be between 2 and 36');
29782 };
29783
29784 BN.prototype.toNumber = function toNumber () {
29785 var ret = this.words[0];
29786 if (this.length === 2) {
29787 ret += this.words[1] * 0x4000000;
29788 } else if (this.length === 3 && this.words[2] === 0x01) {
29789 // NOTE: at this stage it is known that the top bit is set
29790 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29791 } else if (this.length > 2) {
29792 assert(false, 'Number can only safely store up to 53 bits');
29793 }
29794 return (this.negative !== 0) ? -ret : ret;
29795 };
29796
29797 BN.prototype.toJSON = function toJSON () {
29798 return this.toString(16);
29799 };
29800
29801 BN.prototype.toBuffer = function toBuffer (endian, length) {
29802 assert(typeof Buffer !== 'undefined');
29803 return this.toArrayLike(Buffer, endian, length);
29804 };
29805
29806 BN.prototype.toArray = function toArray (endian, length) {
29807 return this.toArrayLike(Array, endian, length);
29808 };
29809
29810 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29811 var byteLength = this.byteLength();
29812 var reqLength = length || Math.max(1, byteLength);
29813 assert(byteLength <= reqLength, 'byte array longer than desired length');
29814 assert(reqLength > 0, 'Requested array length <= 0');
29815
29816 this.strip();
29817 var littleEndian = endian === 'le';
29818 var res = new ArrayType(reqLength);
29819
29820 var b, i;
29821 var q = this.clone();
29822 if (!littleEndian) {
29823 // Assume big-endian
29824 for (i = 0; i < reqLength - byteLength; i++) {
29825 res[i] = 0;
29826 }
29827
29828 for (i = 0; !q.isZero(); i++) {
29829 b = q.andln(0xff);
29830 q.iushrn(8);
29831
29832 res[reqLength - i - 1] = b;
29833 }
29834 } else {
29835 for (i = 0; !q.isZero(); i++) {
29836 b = q.andln(0xff);
29837 q.iushrn(8);
29838
29839 res[i] = b;
29840 }
29841
29842 for (; i < reqLength; i++) {
29843 res[i] = 0;
29844 }
29845 }
29846
29847 return res;
29848 };
29849
29850 if (Math.clz32) {
29851 BN.prototype._countBits = function _countBits (w) {
29852 return 32 - Math.clz32(w);
29853 };
29854 } else {
29855 BN.prototype._countBits = function _countBits (w) {
29856 var t = w;
29857 var r = 0;
29858 if (t >= 0x1000) {
29859 r += 13;
29860 t >>>= 13;
29861 }
29862 if (t >= 0x40) {
29863 r += 7;
29864 t >>>= 7;
29865 }
29866 if (t >= 0x8) {
29867 r += 4;
29868 t >>>= 4;
29869 }
29870 if (t >= 0x02) {
29871 r += 2;
29872 t >>>= 2;
29873 }
29874 return r + t;
29875 };
29876 }
29877
29878 BN.prototype._zeroBits = function _zeroBits (w) {
29879 // Short-cut
29880 if (w === 0) return 26;
29881
29882 var t = w;
29883 var r = 0;
29884 if ((t & 0x1fff) === 0) {
29885 r += 13;
29886 t >>>= 13;
29887 }
29888 if ((t & 0x7f) === 0) {
29889 r += 7;
29890 t >>>= 7;
29891 }
29892 if ((t & 0xf) === 0) {
29893 r += 4;
29894 t >>>= 4;
29895 }
29896 if ((t & 0x3) === 0) {
29897 r += 2;
29898 t >>>= 2;
29899 }
29900 if ((t & 0x1) === 0) {
29901 r++;
29902 }
29903 return r;
29904 };
29905
29906 // Return number of used bits in a BN
29907 BN.prototype.bitLength = function bitLength () {
29908 var w = this.words[this.length - 1];
29909 var hi = this._countBits(w);
29910 return (this.length - 1) * 26 + hi;
29911 };
29912
29913 function toBitArray (num) {
29914 var w = new Array(num.bitLength());
29915
29916 for (var bit = 0; bit < w.length; bit++) {
29917 var off = (bit / 26) | 0;
29918 var wbit = bit % 26;
29919
29920 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
29921 }
29922
29923 return w;
29924 }
29925
29926 // Number of trailing zero bits
29927 BN.prototype.zeroBits = function zeroBits () {
29928 if (this.isZero()) return 0;
29929
29930 var r = 0;
29931 for (var i = 0; i < this.length; i++) {
29932 var b = this._zeroBits(this.words[i]);
29933 r += b;
29934 if (b !== 26) break;
29935 }
29936 return r;
29937 };
29938
29939 BN.prototype.byteLength = function byteLength () {
29940 return Math.ceil(this.bitLength() / 8);
29941 };
29942
29943 BN.prototype.toTwos = function toTwos (width) {
29944 if (this.negative !== 0) {
29945 return this.abs().inotn(width).iaddn(1);
29946 }
29947 return this.clone();
29948 };
29949
29950 BN.prototype.fromTwos = function fromTwos (width) {
29951 if (this.testn(width - 1)) {
29952 return this.notn(width).iaddn(1).ineg();
29953 }
29954 return this.clone();
29955 };
29956
29957 BN.prototype.isNeg = function isNeg () {
29958 return this.negative !== 0;
29959 };
29960
29961 // Return negative clone of `this`
29962 BN.prototype.neg = function neg () {
29963 return this.clone().ineg();
29964 };
29965
29966 BN.prototype.ineg = function ineg () {
29967 if (!this.isZero()) {
29968 this.negative ^= 1;
29969 }
29970
29971 return this;
29972 };
29973
29974 // Or `num` with `this` in-place
29975 BN.prototype.iuor = function iuor (num) {
29976 while (this.length < num.length) {
29977 this.words[this.length++] = 0;
29978 }
29979
29980 for (var i = 0; i < num.length; i++) {
29981 this.words[i] = this.words[i] | num.words[i];
29982 }
29983
29984 return this.strip();
29985 };
29986
29987 BN.prototype.ior = function ior (num) {
29988 assert((this.negative | num.negative) === 0);
29989 return this.iuor(num);
29990 };
29991
29992 // Or `num` with `this`
29993 BN.prototype.or = function or (num) {
29994 if (this.length > num.length) return this.clone().ior(num);
29995 return num.clone().ior(this);
29996 };
29997
29998 BN.prototype.uor = function uor (num) {
29999 if (this.length > num.length) return this.clone().iuor(num);
30000 return num.clone().iuor(this);
30001 };
30002
30003 // And `num` with `this` in-place
30004 BN.prototype.iuand = function iuand (num) {
30005 // b = min-length(num, this)
30006 var b;
30007 if (this.length > num.length) {
30008 b = num;
30009 } else {
30010 b = this;
30011 }
30012
30013 for (var i = 0; i < b.length; i++) {
30014 this.words[i] = this.words[i] & num.words[i];
30015 }
30016
30017 this.length = b.length;
30018
30019 return this.strip();
30020 };
30021
30022 BN.prototype.iand = function iand (num) {
30023 assert((this.negative | num.negative) === 0);
30024 return this.iuand(num);
30025 };
30026
30027 // And `num` with `this`
30028 BN.prototype.and = function and (num) {
30029 if (this.length > num.length) return this.clone().iand(num);
30030 return num.clone().iand(this);
30031 };
30032
30033 BN.prototype.uand = function uand (num) {
30034 if (this.length > num.length) return this.clone().iuand(num);
30035 return num.clone().iuand(this);
30036 };
30037
30038 // Xor `num` with `this` in-place
30039 BN.prototype.iuxor = function iuxor (num) {
30040 // a.length > b.length
30041 var a;
30042 var b;
30043 if (this.length > num.length) {
30044 a = this;
30045 b = num;
30046 } else {
30047 a = num;
30048 b = this;
30049 }
30050
30051 for (var i = 0; i < b.length; i++) {
30052 this.words[i] = a.words[i] ^ b.words[i];
30053 }
30054
30055 if (this !== a) {
30056 for (; i < a.length; i++) {
30057 this.words[i] = a.words[i];
30058 }
30059 }
30060
30061 this.length = a.length;
30062
30063 return this.strip();
30064 };
30065
30066 BN.prototype.ixor = function ixor (num) {
30067 assert((this.negative | num.negative) === 0);
30068 return this.iuxor(num);
30069 };
30070
30071 // Xor `num` with `this`
30072 BN.prototype.xor = function xor (num) {
30073 if (this.length > num.length) return this.clone().ixor(num);
30074 return num.clone().ixor(this);
30075 };
30076
30077 BN.prototype.uxor = function uxor (num) {
30078 if (this.length > num.length) return this.clone().iuxor(num);
30079 return num.clone().iuxor(this);
30080 };
30081
30082 // Not ``this`` with ``width`` bitwidth
30083 BN.prototype.inotn = function inotn (width) {
30084 assert(typeof width === 'number' && width >= 0);
30085
30086 var bytesNeeded = Math.ceil(width / 26) | 0;
30087 var bitsLeft = width % 26;
30088
30089 // Extend the buffer with leading zeroes
30090 this._expand(bytesNeeded);
30091
30092 if (bitsLeft > 0) {
30093 bytesNeeded--;
30094 }
30095
30096 // Handle complete words
30097 for (var i = 0; i < bytesNeeded; i++) {
30098 this.words[i] = ~this.words[i] & 0x3ffffff;
30099 }
30100
30101 // Handle the residue
30102 if (bitsLeft > 0) {
30103 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
30104 }
30105
30106 // And remove leading zeroes
30107 return this.strip();
30108 };
30109
30110 BN.prototype.notn = function notn (width) {
30111 return this.clone().inotn(width);
30112 };
30113
30114 // Set `bit` of `this`
30115 BN.prototype.setn = function setn (bit, val) {
30116 assert(typeof bit === 'number' && bit >= 0);
30117
30118 var off = (bit / 26) | 0;
30119 var wbit = bit % 26;
30120
30121 this._expand(off + 1);
30122
30123 if (val) {
30124 this.words[off] = this.words[off] | (1 << wbit);
30125 } else {
30126 this.words[off] = this.words[off] & ~(1 << wbit);
30127 }
30128
30129 return this.strip();
30130 };
30131
30132 // Add `num` to `this` in-place
30133 BN.prototype.iadd = function iadd (num) {
30134 var r;
30135
30136 // negative + positive
30137 if (this.negative !== 0 && num.negative === 0) {
30138 this.negative = 0;
30139 r = this.isub(num);
30140 this.negative ^= 1;
30141 return this._normSign();
30142
30143 // positive + negative
30144 } else if (this.negative === 0 && num.negative !== 0) {
30145 num.negative = 0;
30146 r = this.isub(num);
30147 num.negative = 1;
30148 return r._normSign();
30149 }
30150
30151 // a.length > b.length
30152 var a, b;
30153 if (this.length > num.length) {
30154 a = this;
30155 b = num;
30156 } else {
30157 a = num;
30158 b = this;
30159 }
30160
30161 var carry = 0;
30162 for (var i = 0; i < b.length; i++) {
30163 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30164 this.words[i] = r & 0x3ffffff;
30165 carry = r >>> 26;
30166 }
30167 for (; carry !== 0 && i < a.length; i++) {
30168 r = (a.words[i] | 0) + carry;
30169 this.words[i] = r & 0x3ffffff;
30170 carry = r >>> 26;
30171 }
30172
30173 this.length = a.length;
30174 if (carry !== 0) {
30175 this.words[this.length] = carry;
30176 this.length++;
30177 // Copy the rest of the words
30178 } else if (a !== this) {
30179 for (; i < a.length; i++) {
30180 this.words[i] = a.words[i];
30181 }
30182 }
30183
30184 return this;
30185 };
30186
30187 // Add `num` to `this`
30188 BN.prototype.add = function add (num) {
30189 var res;
30190 if (num.negative !== 0 && this.negative === 0) {
30191 num.negative = 0;
30192 res = this.sub(num);
30193 num.negative ^= 1;
30194 return res;
30195 } else if (num.negative === 0 && this.negative !== 0) {
30196 this.negative = 0;
30197 res = num.sub(this);
30198 this.negative = 1;
30199 return res;
30200 }
30201
30202 if (this.length > num.length) return this.clone().iadd(num);
30203
30204 return num.clone().iadd(this);
30205 };
30206
30207 // Subtract `num` from `this` in-place
30208 BN.prototype.isub = function isub (num) {
30209 // this - (-num) = this + num
30210 if (num.negative !== 0) {
30211 num.negative = 0;
30212 var r = this.iadd(num);
30213 num.negative = 1;
30214 return r._normSign();
30215
30216 // -this - num = -(this + num)
30217 } else if (this.negative !== 0) {
30218 this.negative = 0;
30219 this.iadd(num);
30220 this.negative = 1;
30221 return this._normSign();
30222 }
30223
30224 // At this point both numbers are positive
30225 var cmp = this.cmp(num);
30226
30227 // Optimization - zeroify
30228 if (cmp === 0) {
30229 this.negative = 0;
30230 this.length = 1;
30231 this.words[0] = 0;
30232 return this;
30233 }
30234
30235 // a > b
30236 var a, b;
30237 if (cmp > 0) {
30238 a = this;
30239 b = num;
30240 } else {
30241 a = num;
30242 b = this;
30243 }
30244
30245 var carry = 0;
30246 for (var i = 0; i < b.length; i++) {
30247 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30248 carry = r >> 26;
30249 this.words[i] = r & 0x3ffffff;
30250 }
30251 for (; carry !== 0 && i < a.length; i++) {
30252 r = (a.words[i] | 0) + carry;
30253 carry = r >> 26;
30254 this.words[i] = r & 0x3ffffff;
30255 }
30256
30257 // Copy rest of the words
30258 if (carry === 0 && i < a.length && a !== this) {
30259 for (; i < a.length; i++) {
30260 this.words[i] = a.words[i];
30261 }
30262 }
30263
30264 this.length = Math.max(this.length, i);
30265
30266 if (a !== this) {
30267 this.negative = 1;
30268 }
30269
30270 return this.strip();
30271 };
30272
30273 // Subtract `num` from `this`
30274 BN.prototype.sub = function sub (num) {
30275 return this.clone().isub(num);
30276 };
30277
30278 function smallMulTo (self, num, out) {
30279 out.negative = num.negative ^ self.negative;
30280 var len = (self.length + num.length) | 0;
30281 out.length = len;
30282 len = (len - 1) | 0;
30283
30284 // Peel one iteration (compiler can't do it, because of code complexity)
30285 var a = self.words[0] | 0;
30286 var b = num.words[0] | 0;
30287 var r = a * b;
30288
30289 var lo = r & 0x3ffffff;
30290 var carry = (r / 0x4000000) | 0;
30291 out.words[0] = lo;
30292
30293 for (var k = 1; k < len; k++) {
30294 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30295 // note that ncarry could be >= 0x3ffffff
30296 var ncarry = carry >>> 26;
30297 var rword = carry & 0x3ffffff;
30298 var maxJ = Math.min(k, num.length - 1);
30299 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30300 var i = (k - j) | 0;
30301 a = self.words[i] | 0;
30302 b = num.words[j] | 0;
30303 r = a * b + rword;
30304 ncarry += (r / 0x4000000) | 0;
30305 rword = r & 0x3ffffff;
30306 }
30307 out.words[k] = rword | 0;
30308 carry = ncarry | 0;
30309 }
30310 if (carry !== 0) {
30311 out.words[k] = carry | 0;
30312 } else {
30313 out.length--;
30314 }
30315
30316 return out.strip();
30317 }
30318
30319 // TODO(indutny): it may be reasonable to omit it for users who don't need
30320 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30321 // multiplication (like elliptic secp256k1).
30322 var comb10MulTo = function comb10MulTo (self, num, out) {
30323 var a = self.words;
30324 var b = num.words;
30325 var o = out.words;
30326 var c = 0;
30327 var lo;
30328 var mid;
30329 var hi;
30330 var a0 = a[0] | 0;
30331 var al0 = a0 & 0x1fff;
30332 var ah0 = a0 >>> 13;
30333 var a1 = a[1] | 0;
30334 var al1 = a1 & 0x1fff;
30335 var ah1 = a1 >>> 13;
30336 var a2 = a[2] | 0;
30337 var al2 = a2 & 0x1fff;
30338 var ah2 = a2 >>> 13;
30339 var a3 = a[3] | 0;
30340 var al3 = a3 & 0x1fff;
30341 var ah3 = a3 >>> 13;
30342 var a4 = a[4] | 0;
30343 var al4 = a4 & 0x1fff;
30344 var ah4 = a4 >>> 13;
30345 var a5 = a[5] | 0;
30346 var al5 = a5 & 0x1fff;
30347 var ah5 = a5 >>> 13;
30348 var a6 = a[6] | 0;
30349 var al6 = a6 & 0x1fff;
30350 var ah6 = a6 >>> 13;
30351 var a7 = a[7] | 0;
30352 var al7 = a7 & 0x1fff;
30353 var ah7 = a7 >>> 13;
30354 var a8 = a[8] | 0;
30355 var al8 = a8 & 0x1fff;
30356 var ah8 = a8 >>> 13;
30357 var a9 = a[9] | 0;
30358 var al9 = a9 & 0x1fff;
30359 var ah9 = a9 >>> 13;
30360 var b0 = b[0] | 0;
30361 var bl0 = b0 & 0x1fff;
30362 var bh0 = b0 >>> 13;
30363 var b1 = b[1] | 0;
30364 var bl1 = b1 & 0x1fff;
30365 var bh1 = b1 >>> 13;
30366 var b2 = b[2] | 0;
30367 var bl2 = b2 & 0x1fff;
30368 var bh2 = b2 >>> 13;
30369 var b3 = b[3] | 0;
30370 var bl3 = b3 & 0x1fff;
30371 var bh3 = b3 >>> 13;
30372 var b4 = b[4] | 0;
30373 var bl4 = b4 & 0x1fff;
30374 var bh4 = b4 >>> 13;
30375 var b5 = b[5] | 0;
30376 var bl5 = b5 & 0x1fff;
30377 var bh5 = b5 >>> 13;
30378 var b6 = b[6] | 0;
30379 var bl6 = b6 & 0x1fff;
30380 var bh6 = b6 >>> 13;
30381 var b7 = b[7] | 0;
30382 var bl7 = b7 & 0x1fff;
30383 var bh7 = b7 >>> 13;
30384 var b8 = b[8] | 0;
30385 var bl8 = b8 & 0x1fff;
30386 var bh8 = b8 >>> 13;
30387 var b9 = b[9] | 0;
30388 var bl9 = b9 & 0x1fff;
30389 var bh9 = b9 >>> 13;
30390
30391 out.negative = self.negative ^ num.negative;
30392 out.length = 19;
30393 /* k = 0 */
30394 lo = Math.imul(al0, bl0);
30395 mid = Math.imul(al0, bh0);
30396 mid = (mid + Math.imul(ah0, bl0)) | 0;
30397 hi = Math.imul(ah0, bh0);
30398 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30399 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30400 w0 &= 0x3ffffff;
30401 /* k = 1 */
30402 lo = Math.imul(al1, bl0);
30403 mid = Math.imul(al1, bh0);
30404 mid = (mid + Math.imul(ah1, bl0)) | 0;
30405 hi = Math.imul(ah1, bh0);
30406 lo = (lo + Math.imul(al0, bl1)) | 0;
30407 mid = (mid + Math.imul(al0, bh1)) | 0;
30408 mid = (mid + Math.imul(ah0, bl1)) | 0;
30409 hi = (hi + Math.imul(ah0, bh1)) | 0;
30410 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30411 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30412 w1 &= 0x3ffffff;
30413 /* k = 2 */
30414 lo = Math.imul(al2, bl0);
30415 mid = Math.imul(al2, bh0);
30416 mid = (mid + Math.imul(ah2, bl0)) | 0;
30417 hi = Math.imul(ah2, bh0);
30418 lo = (lo + Math.imul(al1, bl1)) | 0;
30419 mid = (mid + Math.imul(al1, bh1)) | 0;
30420 mid = (mid + Math.imul(ah1, bl1)) | 0;
30421 hi = (hi + Math.imul(ah1, bh1)) | 0;
30422 lo = (lo + Math.imul(al0, bl2)) | 0;
30423 mid = (mid + Math.imul(al0, bh2)) | 0;
30424 mid = (mid + Math.imul(ah0, bl2)) | 0;
30425 hi = (hi + Math.imul(ah0, bh2)) | 0;
30426 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30427 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30428 w2 &= 0x3ffffff;
30429 /* k = 3 */
30430 lo = Math.imul(al3, bl0);
30431 mid = Math.imul(al3, bh0);
30432 mid = (mid + Math.imul(ah3, bl0)) | 0;
30433 hi = Math.imul(ah3, bh0);
30434 lo = (lo + Math.imul(al2, bl1)) | 0;
30435 mid = (mid + Math.imul(al2, bh1)) | 0;
30436 mid = (mid + Math.imul(ah2, bl1)) | 0;
30437 hi = (hi + Math.imul(ah2, bh1)) | 0;
30438 lo = (lo + Math.imul(al1, bl2)) | 0;
30439 mid = (mid + Math.imul(al1, bh2)) | 0;
30440 mid = (mid + Math.imul(ah1, bl2)) | 0;
30441 hi = (hi + Math.imul(ah1, bh2)) | 0;
30442 lo = (lo + Math.imul(al0, bl3)) | 0;
30443 mid = (mid + Math.imul(al0, bh3)) | 0;
30444 mid = (mid + Math.imul(ah0, bl3)) | 0;
30445 hi = (hi + Math.imul(ah0, bh3)) | 0;
30446 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30447 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30448 w3 &= 0x3ffffff;
30449 /* k = 4 */
30450 lo = Math.imul(al4, bl0);
30451 mid = Math.imul(al4, bh0);
30452 mid = (mid + Math.imul(ah4, bl0)) | 0;
30453 hi = Math.imul(ah4, bh0);
30454 lo = (lo + Math.imul(al3, bl1)) | 0;
30455 mid = (mid + Math.imul(al3, bh1)) | 0;
30456 mid = (mid + Math.imul(ah3, bl1)) | 0;
30457 hi = (hi + Math.imul(ah3, bh1)) | 0;
30458 lo = (lo + Math.imul(al2, bl2)) | 0;
30459 mid = (mid + Math.imul(al2, bh2)) | 0;
30460 mid = (mid + Math.imul(ah2, bl2)) | 0;
30461 hi = (hi + Math.imul(ah2, bh2)) | 0;
30462 lo = (lo + Math.imul(al1, bl3)) | 0;
30463 mid = (mid + Math.imul(al1, bh3)) | 0;
30464 mid = (mid + Math.imul(ah1, bl3)) | 0;
30465 hi = (hi + Math.imul(ah1, bh3)) | 0;
30466 lo = (lo + Math.imul(al0, bl4)) | 0;
30467 mid = (mid + Math.imul(al0, bh4)) | 0;
30468 mid = (mid + Math.imul(ah0, bl4)) | 0;
30469 hi = (hi + Math.imul(ah0, bh4)) | 0;
30470 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30471 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30472 w4 &= 0x3ffffff;
30473 /* k = 5 */
30474 lo = Math.imul(al5, bl0);
30475 mid = Math.imul(al5, bh0);
30476 mid = (mid + Math.imul(ah5, bl0)) | 0;
30477 hi = Math.imul(ah5, bh0);
30478 lo = (lo + Math.imul(al4, bl1)) | 0;
30479 mid = (mid + Math.imul(al4, bh1)) | 0;
30480 mid = (mid + Math.imul(ah4, bl1)) | 0;
30481 hi = (hi + Math.imul(ah4, bh1)) | 0;
30482 lo = (lo + Math.imul(al3, bl2)) | 0;
30483 mid = (mid + Math.imul(al3, bh2)) | 0;
30484 mid = (mid + Math.imul(ah3, bl2)) | 0;
30485 hi = (hi + Math.imul(ah3, bh2)) | 0;
30486 lo = (lo + Math.imul(al2, bl3)) | 0;
30487 mid = (mid + Math.imul(al2, bh3)) | 0;
30488 mid = (mid + Math.imul(ah2, bl3)) | 0;
30489 hi = (hi + Math.imul(ah2, bh3)) | 0;
30490 lo = (lo + Math.imul(al1, bl4)) | 0;
30491 mid = (mid + Math.imul(al1, bh4)) | 0;
30492 mid = (mid + Math.imul(ah1, bl4)) | 0;
30493 hi = (hi + Math.imul(ah1, bh4)) | 0;
30494 lo = (lo + Math.imul(al0, bl5)) | 0;
30495 mid = (mid + Math.imul(al0, bh5)) | 0;
30496 mid = (mid + Math.imul(ah0, bl5)) | 0;
30497 hi = (hi + Math.imul(ah0, bh5)) | 0;
30498 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30499 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30500 w5 &= 0x3ffffff;
30501 /* k = 6 */
30502 lo = Math.imul(al6, bl0);
30503 mid = Math.imul(al6, bh0);
30504 mid = (mid + Math.imul(ah6, bl0)) | 0;
30505 hi = Math.imul(ah6, bh0);
30506 lo = (lo + Math.imul(al5, bl1)) | 0;
30507 mid = (mid + Math.imul(al5, bh1)) | 0;
30508 mid = (mid + Math.imul(ah5, bl1)) | 0;
30509 hi = (hi + Math.imul(ah5, bh1)) | 0;
30510 lo = (lo + Math.imul(al4, bl2)) | 0;
30511 mid = (mid + Math.imul(al4, bh2)) | 0;
30512 mid = (mid + Math.imul(ah4, bl2)) | 0;
30513 hi = (hi + Math.imul(ah4, bh2)) | 0;
30514 lo = (lo + Math.imul(al3, bl3)) | 0;
30515 mid = (mid + Math.imul(al3, bh3)) | 0;
30516 mid = (mid + Math.imul(ah3, bl3)) | 0;
30517 hi = (hi + Math.imul(ah3, bh3)) | 0;
30518 lo = (lo + Math.imul(al2, bl4)) | 0;
30519 mid = (mid + Math.imul(al2, bh4)) | 0;
30520 mid = (mid + Math.imul(ah2, bl4)) | 0;
30521 hi = (hi + Math.imul(ah2, bh4)) | 0;
30522 lo = (lo + Math.imul(al1, bl5)) | 0;
30523 mid = (mid + Math.imul(al1, bh5)) | 0;
30524 mid = (mid + Math.imul(ah1, bl5)) | 0;
30525 hi = (hi + Math.imul(ah1, bh5)) | 0;
30526 lo = (lo + Math.imul(al0, bl6)) | 0;
30527 mid = (mid + Math.imul(al0, bh6)) | 0;
30528 mid = (mid + Math.imul(ah0, bl6)) | 0;
30529 hi = (hi + Math.imul(ah0, bh6)) | 0;
30530 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30531 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30532 w6 &= 0x3ffffff;
30533 /* k = 7 */
30534 lo = Math.imul(al7, bl0);
30535 mid = Math.imul(al7, bh0);
30536 mid = (mid + Math.imul(ah7, bl0)) | 0;
30537 hi = Math.imul(ah7, bh0);
30538 lo = (lo + Math.imul(al6, bl1)) | 0;
30539 mid = (mid + Math.imul(al6, bh1)) | 0;
30540 mid = (mid + Math.imul(ah6, bl1)) | 0;
30541 hi = (hi + Math.imul(ah6, bh1)) | 0;
30542 lo = (lo + Math.imul(al5, bl2)) | 0;
30543 mid = (mid + Math.imul(al5, bh2)) | 0;
30544 mid = (mid + Math.imul(ah5, bl2)) | 0;
30545 hi = (hi + Math.imul(ah5, bh2)) | 0;
30546 lo = (lo + Math.imul(al4, bl3)) | 0;
30547 mid = (mid + Math.imul(al4, bh3)) | 0;
30548 mid = (mid + Math.imul(ah4, bl3)) | 0;
30549 hi = (hi + Math.imul(ah4, bh3)) | 0;
30550 lo = (lo + Math.imul(al3, bl4)) | 0;
30551 mid = (mid + Math.imul(al3, bh4)) | 0;
30552 mid = (mid + Math.imul(ah3, bl4)) | 0;
30553 hi = (hi + Math.imul(ah3, bh4)) | 0;
30554 lo = (lo + Math.imul(al2, bl5)) | 0;
30555 mid = (mid + Math.imul(al2, bh5)) | 0;
30556 mid = (mid + Math.imul(ah2, bl5)) | 0;
30557 hi = (hi + Math.imul(ah2, bh5)) | 0;
30558 lo = (lo + Math.imul(al1, bl6)) | 0;
30559 mid = (mid + Math.imul(al1, bh6)) | 0;
30560 mid = (mid + Math.imul(ah1, bl6)) | 0;
30561 hi = (hi + Math.imul(ah1, bh6)) | 0;
30562 lo = (lo + Math.imul(al0, bl7)) | 0;
30563 mid = (mid + Math.imul(al0, bh7)) | 0;
30564 mid = (mid + Math.imul(ah0, bl7)) | 0;
30565 hi = (hi + Math.imul(ah0, bh7)) | 0;
30566 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30567 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30568 w7 &= 0x3ffffff;
30569 /* k = 8 */
30570 lo = Math.imul(al8, bl0);
30571 mid = Math.imul(al8, bh0);
30572 mid = (mid + Math.imul(ah8, bl0)) | 0;
30573 hi = Math.imul(ah8, bh0);
30574 lo = (lo + Math.imul(al7, bl1)) | 0;
30575 mid = (mid + Math.imul(al7, bh1)) | 0;
30576 mid = (mid + Math.imul(ah7, bl1)) | 0;
30577 hi = (hi + Math.imul(ah7, bh1)) | 0;
30578 lo = (lo + Math.imul(al6, bl2)) | 0;
30579 mid = (mid + Math.imul(al6, bh2)) | 0;
30580 mid = (mid + Math.imul(ah6, bl2)) | 0;
30581 hi = (hi + Math.imul(ah6, bh2)) | 0;
30582 lo = (lo + Math.imul(al5, bl3)) | 0;
30583 mid = (mid + Math.imul(al5, bh3)) | 0;
30584 mid = (mid + Math.imul(ah5, bl3)) | 0;
30585 hi = (hi + Math.imul(ah5, bh3)) | 0;
30586 lo = (lo + Math.imul(al4, bl4)) | 0;
30587 mid = (mid + Math.imul(al4, bh4)) | 0;
30588 mid = (mid + Math.imul(ah4, bl4)) | 0;
30589 hi = (hi + Math.imul(ah4, bh4)) | 0;
30590 lo = (lo + Math.imul(al3, bl5)) | 0;
30591 mid = (mid + Math.imul(al3, bh5)) | 0;
30592 mid = (mid + Math.imul(ah3, bl5)) | 0;
30593 hi = (hi + Math.imul(ah3, bh5)) | 0;
30594 lo = (lo + Math.imul(al2, bl6)) | 0;
30595 mid = (mid + Math.imul(al2, bh6)) | 0;
30596 mid = (mid + Math.imul(ah2, bl6)) | 0;
30597 hi = (hi + Math.imul(ah2, bh6)) | 0;
30598 lo = (lo + Math.imul(al1, bl7)) | 0;
30599 mid = (mid + Math.imul(al1, bh7)) | 0;
30600 mid = (mid + Math.imul(ah1, bl7)) | 0;
30601 hi = (hi + Math.imul(ah1, bh7)) | 0;
30602 lo = (lo + Math.imul(al0, bl8)) | 0;
30603 mid = (mid + Math.imul(al0, bh8)) | 0;
30604 mid = (mid + Math.imul(ah0, bl8)) | 0;
30605 hi = (hi + Math.imul(ah0, bh8)) | 0;
30606 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30607 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30608 w8 &= 0x3ffffff;
30609 /* k = 9 */
30610 lo = Math.imul(al9, bl0);
30611 mid = Math.imul(al9, bh0);
30612 mid = (mid + Math.imul(ah9, bl0)) | 0;
30613 hi = Math.imul(ah9, bh0);
30614 lo = (lo + Math.imul(al8, bl1)) | 0;
30615 mid = (mid + Math.imul(al8, bh1)) | 0;
30616 mid = (mid + Math.imul(ah8, bl1)) | 0;
30617 hi = (hi + Math.imul(ah8, bh1)) | 0;
30618 lo = (lo + Math.imul(al7, bl2)) | 0;
30619 mid = (mid + Math.imul(al7, bh2)) | 0;
30620 mid = (mid + Math.imul(ah7, bl2)) | 0;
30621 hi = (hi + Math.imul(ah7, bh2)) | 0;
30622 lo = (lo + Math.imul(al6, bl3)) | 0;
30623 mid = (mid + Math.imul(al6, bh3)) | 0;
30624 mid = (mid + Math.imul(ah6, bl3)) | 0;
30625 hi = (hi + Math.imul(ah6, bh3)) | 0;
30626 lo = (lo + Math.imul(al5, bl4)) | 0;
30627 mid = (mid + Math.imul(al5, bh4)) | 0;
30628 mid = (mid + Math.imul(ah5, bl4)) | 0;
30629 hi = (hi + Math.imul(ah5, bh4)) | 0;
30630 lo = (lo + Math.imul(al4, bl5)) | 0;
30631 mid = (mid + Math.imul(al4, bh5)) | 0;
30632 mid = (mid + Math.imul(ah4, bl5)) | 0;
30633 hi = (hi + Math.imul(ah4, bh5)) | 0;
30634 lo = (lo + Math.imul(al3, bl6)) | 0;
30635 mid = (mid + Math.imul(al3, bh6)) | 0;
30636 mid = (mid + Math.imul(ah3, bl6)) | 0;
30637 hi = (hi + Math.imul(ah3, bh6)) | 0;
30638 lo = (lo + Math.imul(al2, bl7)) | 0;
30639 mid = (mid + Math.imul(al2, bh7)) | 0;
30640 mid = (mid + Math.imul(ah2, bl7)) | 0;
30641 hi = (hi + Math.imul(ah2, bh7)) | 0;
30642 lo = (lo + Math.imul(al1, bl8)) | 0;
30643 mid = (mid + Math.imul(al1, bh8)) | 0;
30644 mid = (mid + Math.imul(ah1, bl8)) | 0;
30645 hi = (hi + Math.imul(ah1, bh8)) | 0;
30646 lo = (lo + Math.imul(al0, bl9)) | 0;
30647 mid = (mid + Math.imul(al0, bh9)) | 0;
30648 mid = (mid + Math.imul(ah0, bl9)) | 0;
30649 hi = (hi + Math.imul(ah0, bh9)) | 0;
30650 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30651 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30652 w9 &= 0x3ffffff;
30653 /* k = 10 */
30654 lo = Math.imul(al9, bl1);
30655 mid = Math.imul(al9, bh1);
30656 mid = (mid + Math.imul(ah9, bl1)) | 0;
30657 hi = Math.imul(ah9, bh1);
30658 lo = (lo + Math.imul(al8, bl2)) | 0;
30659 mid = (mid + Math.imul(al8, bh2)) | 0;
30660 mid = (mid + Math.imul(ah8, bl2)) | 0;
30661 hi = (hi + Math.imul(ah8, bh2)) | 0;
30662 lo = (lo + Math.imul(al7, bl3)) | 0;
30663 mid = (mid + Math.imul(al7, bh3)) | 0;
30664 mid = (mid + Math.imul(ah7, bl3)) | 0;
30665 hi = (hi + Math.imul(ah7, bh3)) | 0;
30666 lo = (lo + Math.imul(al6, bl4)) | 0;
30667 mid = (mid + Math.imul(al6, bh4)) | 0;
30668 mid = (mid + Math.imul(ah6, bl4)) | 0;
30669 hi = (hi + Math.imul(ah6, bh4)) | 0;
30670 lo = (lo + Math.imul(al5, bl5)) | 0;
30671 mid = (mid + Math.imul(al5, bh5)) | 0;
30672 mid = (mid + Math.imul(ah5, bl5)) | 0;
30673 hi = (hi + Math.imul(ah5, bh5)) | 0;
30674 lo = (lo + Math.imul(al4, bl6)) | 0;
30675 mid = (mid + Math.imul(al4, bh6)) | 0;
30676 mid = (mid + Math.imul(ah4, bl6)) | 0;
30677 hi = (hi + Math.imul(ah4, bh6)) | 0;
30678 lo = (lo + Math.imul(al3, bl7)) | 0;
30679 mid = (mid + Math.imul(al3, bh7)) | 0;
30680 mid = (mid + Math.imul(ah3, bl7)) | 0;
30681 hi = (hi + Math.imul(ah3, bh7)) | 0;
30682 lo = (lo + Math.imul(al2, bl8)) | 0;
30683 mid = (mid + Math.imul(al2, bh8)) | 0;
30684 mid = (mid + Math.imul(ah2, bl8)) | 0;
30685 hi = (hi + Math.imul(ah2, bh8)) | 0;
30686 lo = (lo + Math.imul(al1, bl9)) | 0;
30687 mid = (mid + Math.imul(al1, bh9)) | 0;
30688 mid = (mid + Math.imul(ah1, bl9)) | 0;
30689 hi = (hi + Math.imul(ah1, bh9)) | 0;
30690 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30691 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30692 w10 &= 0x3ffffff;
30693 /* k = 11 */
30694 lo = Math.imul(al9, bl2);
30695 mid = Math.imul(al9, bh2);
30696 mid = (mid + Math.imul(ah9, bl2)) | 0;
30697 hi = Math.imul(ah9, bh2);
30698 lo = (lo + Math.imul(al8, bl3)) | 0;
30699 mid = (mid + Math.imul(al8, bh3)) | 0;
30700 mid = (mid + Math.imul(ah8, bl3)) | 0;
30701 hi = (hi + Math.imul(ah8, bh3)) | 0;
30702 lo = (lo + Math.imul(al7, bl4)) | 0;
30703 mid = (mid + Math.imul(al7, bh4)) | 0;
30704 mid = (mid + Math.imul(ah7, bl4)) | 0;
30705 hi = (hi + Math.imul(ah7, bh4)) | 0;
30706 lo = (lo + Math.imul(al6, bl5)) | 0;
30707 mid = (mid + Math.imul(al6, bh5)) | 0;
30708 mid = (mid + Math.imul(ah6, bl5)) | 0;
30709 hi = (hi + Math.imul(ah6, bh5)) | 0;
30710 lo = (lo + Math.imul(al5, bl6)) | 0;
30711 mid = (mid + Math.imul(al5, bh6)) | 0;
30712 mid = (mid + Math.imul(ah5, bl6)) | 0;
30713 hi = (hi + Math.imul(ah5, bh6)) | 0;
30714 lo = (lo + Math.imul(al4, bl7)) | 0;
30715 mid = (mid + Math.imul(al4, bh7)) | 0;
30716 mid = (mid + Math.imul(ah4, bl7)) | 0;
30717 hi = (hi + Math.imul(ah4, bh7)) | 0;
30718 lo = (lo + Math.imul(al3, bl8)) | 0;
30719 mid = (mid + Math.imul(al3, bh8)) | 0;
30720 mid = (mid + Math.imul(ah3, bl8)) | 0;
30721 hi = (hi + Math.imul(ah3, bh8)) | 0;
30722 lo = (lo + Math.imul(al2, bl9)) | 0;
30723 mid = (mid + Math.imul(al2, bh9)) | 0;
30724 mid = (mid + Math.imul(ah2, bl9)) | 0;
30725 hi = (hi + Math.imul(ah2, bh9)) | 0;
30726 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30727 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30728 w11 &= 0x3ffffff;
30729 /* k = 12 */
30730 lo = Math.imul(al9, bl3);
30731 mid = Math.imul(al9, bh3);
30732 mid = (mid + Math.imul(ah9, bl3)) | 0;
30733 hi = Math.imul(ah9, bh3);
30734 lo = (lo + Math.imul(al8, bl4)) | 0;
30735 mid = (mid + Math.imul(al8, bh4)) | 0;
30736 mid = (mid + Math.imul(ah8, bl4)) | 0;
30737 hi = (hi + Math.imul(ah8, bh4)) | 0;
30738 lo = (lo + Math.imul(al7, bl5)) | 0;
30739 mid = (mid + Math.imul(al7, bh5)) | 0;
30740 mid = (mid + Math.imul(ah7, bl5)) | 0;
30741 hi = (hi + Math.imul(ah7, bh5)) | 0;
30742 lo = (lo + Math.imul(al6, bl6)) | 0;
30743 mid = (mid + Math.imul(al6, bh6)) | 0;
30744 mid = (mid + Math.imul(ah6, bl6)) | 0;
30745 hi = (hi + Math.imul(ah6, bh6)) | 0;
30746 lo = (lo + Math.imul(al5, bl7)) | 0;
30747 mid = (mid + Math.imul(al5, bh7)) | 0;
30748 mid = (mid + Math.imul(ah5, bl7)) | 0;
30749 hi = (hi + Math.imul(ah5, bh7)) | 0;
30750 lo = (lo + Math.imul(al4, bl8)) | 0;
30751 mid = (mid + Math.imul(al4, bh8)) | 0;
30752 mid = (mid + Math.imul(ah4, bl8)) | 0;
30753 hi = (hi + Math.imul(ah4, bh8)) | 0;
30754 lo = (lo + Math.imul(al3, bl9)) | 0;
30755 mid = (mid + Math.imul(al3, bh9)) | 0;
30756 mid = (mid + Math.imul(ah3, bl9)) | 0;
30757 hi = (hi + Math.imul(ah3, bh9)) | 0;
30758 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30759 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30760 w12 &= 0x3ffffff;
30761 /* k = 13 */
30762 lo = Math.imul(al9, bl4);
30763 mid = Math.imul(al9, bh4);
30764 mid = (mid + Math.imul(ah9, bl4)) | 0;
30765 hi = Math.imul(ah9, bh4);
30766 lo = (lo + Math.imul(al8, bl5)) | 0;
30767 mid = (mid + Math.imul(al8, bh5)) | 0;
30768 mid = (mid + Math.imul(ah8, bl5)) | 0;
30769 hi = (hi + Math.imul(ah8, bh5)) | 0;
30770 lo = (lo + Math.imul(al7, bl6)) | 0;
30771 mid = (mid + Math.imul(al7, bh6)) | 0;
30772 mid = (mid + Math.imul(ah7, bl6)) | 0;
30773 hi = (hi + Math.imul(ah7, bh6)) | 0;
30774 lo = (lo + Math.imul(al6, bl7)) | 0;
30775 mid = (mid + Math.imul(al6, bh7)) | 0;
30776 mid = (mid + Math.imul(ah6, bl7)) | 0;
30777 hi = (hi + Math.imul(ah6, bh7)) | 0;
30778 lo = (lo + Math.imul(al5, bl8)) | 0;
30779 mid = (mid + Math.imul(al5, bh8)) | 0;
30780 mid = (mid + Math.imul(ah5, bl8)) | 0;
30781 hi = (hi + Math.imul(ah5, bh8)) | 0;
30782 lo = (lo + Math.imul(al4, bl9)) | 0;
30783 mid = (mid + Math.imul(al4, bh9)) | 0;
30784 mid = (mid + Math.imul(ah4, bl9)) | 0;
30785 hi = (hi + Math.imul(ah4, bh9)) | 0;
30786 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30787 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30788 w13 &= 0x3ffffff;
30789 /* k = 14 */
30790 lo = Math.imul(al9, bl5);
30791 mid = Math.imul(al9, bh5);
30792 mid = (mid + Math.imul(ah9, bl5)) | 0;
30793 hi = Math.imul(ah9, bh5);
30794 lo = (lo + Math.imul(al8, bl6)) | 0;
30795 mid = (mid + Math.imul(al8, bh6)) | 0;
30796 mid = (mid + Math.imul(ah8, bl6)) | 0;
30797 hi = (hi + Math.imul(ah8, bh6)) | 0;
30798 lo = (lo + Math.imul(al7, bl7)) | 0;
30799 mid = (mid + Math.imul(al7, bh7)) | 0;
30800 mid = (mid + Math.imul(ah7, bl7)) | 0;
30801 hi = (hi + Math.imul(ah7, bh7)) | 0;
30802 lo = (lo + Math.imul(al6, bl8)) | 0;
30803 mid = (mid + Math.imul(al6, bh8)) | 0;
30804 mid = (mid + Math.imul(ah6, bl8)) | 0;
30805 hi = (hi + Math.imul(ah6, bh8)) | 0;
30806 lo = (lo + Math.imul(al5, bl9)) | 0;
30807 mid = (mid + Math.imul(al5, bh9)) | 0;
30808 mid = (mid + Math.imul(ah5, bl9)) | 0;
30809 hi = (hi + Math.imul(ah5, bh9)) | 0;
30810 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30811 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30812 w14 &= 0x3ffffff;
30813 /* k = 15 */
30814 lo = Math.imul(al9, bl6);
30815 mid = Math.imul(al9, bh6);
30816 mid = (mid + Math.imul(ah9, bl6)) | 0;
30817 hi = Math.imul(ah9, bh6);
30818 lo = (lo + Math.imul(al8, bl7)) | 0;
30819 mid = (mid + Math.imul(al8, bh7)) | 0;
30820 mid = (mid + Math.imul(ah8, bl7)) | 0;
30821 hi = (hi + Math.imul(ah8, bh7)) | 0;
30822 lo = (lo + Math.imul(al7, bl8)) | 0;
30823 mid = (mid + Math.imul(al7, bh8)) | 0;
30824 mid = (mid + Math.imul(ah7, bl8)) | 0;
30825 hi = (hi + Math.imul(ah7, bh8)) | 0;
30826 lo = (lo + Math.imul(al6, bl9)) | 0;
30827 mid = (mid + Math.imul(al6, bh9)) | 0;
30828 mid = (mid + Math.imul(ah6, bl9)) | 0;
30829 hi = (hi + Math.imul(ah6, bh9)) | 0;
30830 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30831 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30832 w15 &= 0x3ffffff;
30833 /* k = 16 */
30834 lo = Math.imul(al9, bl7);
30835 mid = Math.imul(al9, bh7);
30836 mid = (mid + Math.imul(ah9, bl7)) | 0;
30837 hi = Math.imul(ah9, bh7);
30838 lo = (lo + Math.imul(al8, bl8)) | 0;
30839 mid = (mid + Math.imul(al8, bh8)) | 0;
30840 mid = (mid + Math.imul(ah8, bl8)) | 0;
30841 hi = (hi + Math.imul(ah8, bh8)) | 0;
30842 lo = (lo + Math.imul(al7, bl9)) | 0;
30843 mid = (mid + Math.imul(al7, bh9)) | 0;
30844 mid = (mid + Math.imul(ah7, bl9)) | 0;
30845 hi = (hi + Math.imul(ah7, bh9)) | 0;
30846 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30847 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30848 w16 &= 0x3ffffff;
30849 /* k = 17 */
30850 lo = Math.imul(al9, bl8);
30851 mid = Math.imul(al9, bh8);
30852 mid = (mid + Math.imul(ah9, bl8)) | 0;
30853 hi = Math.imul(ah9, bh8);
30854 lo = (lo + Math.imul(al8, bl9)) | 0;
30855 mid = (mid + Math.imul(al8, bh9)) | 0;
30856 mid = (mid + Math.imul(ah8, bl9)) | 0;
30857 hi = (hi + Math.imul(ah8, bh9)) | 0;
30858 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30859 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30860 w17 &= 0x3ffffff;
30861 /* k = 18 */
30862 lo = Math.imul(al9, bl9);
30863 mid = Math.imul(al9, bh9);
30864 mid = (mid + Math.imul(ah9, bl9)) | 0;
30865 hi = Math.imul(ah9, bh9);
30866 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30867 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30868 w18 &= 0x3ffffff;
30869 o[0] = w0;
30870 o[1] = w1;
30871 o[2] = w2;
30872 o[3] = w3;
30873 o[4] = w4;
30874 o[5] = w5;
30875 o[6] = w6;
30876 o[7] = w7;
30877 o[8] = w8;
30878 o[9] = w9;
30879 o[10] = w10;
30880 o[11] = w11;
30881 o[12] = w12;
30882 o[13] = w13;
30883 o[14] = w14;
30884 o[15] = w15;
30885 o[16] = w16;
30886 o[17] = w17;
30887 o[18] = w18;
30888 if (c !== 0) {
30889 o[19] = c;
30890 out.length++;
30891 }
30892 return out;
30893 };
30894
30895 // Polyfill comb
30896 if (!Math.imul) {
30897 comb10MulTo = smallMulTo;
30898 }
30899
30900 function bigMulTo (self, num, out) {
30901 out.negative = num.negative ^ self.negative;
30902 out.length = self.length + num.length;
30903
30904 var carry = 0;
30905 var hncarry = 0;
30906 for (var k = 0; k < out.length - 1; k++) {
30907 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30908 // note that ncarry could be >= 0x3ffffff
30909 var ncarry = hncarry;
30910 hncarry = 0;
30911 var rword = carry & 0x3ffffff;
30912 var maxJ = Math.min(k, num.length - 1);
30913 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30914 var i = k - j;
30915 var a = self.words[i] | 0;
30916 var b = num.words[j] | 0;
30917 var r = a * b;
30918
30919 var lo = r & 0x3ffffff;
30920 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
30921 lo = (lo + rword) | 0;
30922 rword = lo & 0x3ffffff;
30923 ncarry = (ncarry + (lo >>> 26)) | 0;
30924
30925 hncarry += ncarry >>> 26;
30926 ncarry &= 0x3ffffff;
30927 }
30928 out.words[k] = rword;
30929 carry = ncarry;
30930 ncarry = hncarry;
30931 }
30932 if (carry !== 0) {
30933 out.words[k] = carry;
30934 } else {
30935 out.length--;
30936 }
30937
30938 return out.strip();
30939 }
30940
30941 function jumboMulTo (self, num, out) {
30942 var fftm = new FFTM();
30943 return fftm.mulp(self, num, out);
30944 }
30945
30946 BN.prototype.mulTo = function mulTo (num, out) {
30947 var res;
30948 var len = this.length + num.length;
30949 if (this.length === 10 && num.length === 10) {
30950 res = comb10MulTo(this, num, out);
30951 } else if (len < 63) {
30952 res = smallMulTo(this, num, out);
30953 } else if (len < 1024) {
30954 res = bigMulTo(this, num, out);
30955 } else {
30956 res = jumboMulTo(this, num, out);
30957 }
30958
30959 return res;
30960 };
30961
30962 // Cooley-Tukey algorithm for FFT
30963 // slightly revisited to rely on looping instead of recursion
30964
30965 function FFTM (x, y) {
30966 this.x = x;
30967 this.y = y;
30968 }
30969
30970 FFTM.prototype.makeRBT = function makeRBT (N) {
30971 var t = new Array(N);
30972 var l = BN.prototype._countBits(N) - 1;
30973 for (var i = 0; i < N; i++) {
30974 t[i] = this.revBin(i, l, N);
30975 }
30976
30977 return t;
30978 };
30979
30980 // Returns binary-reversed representation of `x`
30981 FFTM.prototype.revBin = function revBin (x, l, N) {
30982 if (x === 0 || x === N - 1) return x;
30983
30984 var rb = 0;
30985 for (var i = 0; i < l; i++) {
30986 rb |= (x & 1) << (l - i - 1);
30987 x >>= 1;
30988 }
30989
30990 return rb;
30991 };
30992
30993 // Performs "tweedling" phase, therefore 'emulating'
30994 // behaviour of the recursive algorithm
30995 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
30996 for (var i = 0; i < N; i++) {
30997 rtws[i] = rws[rbt[i]];
30998 itws[i] = iws[rbt[i]];
30999 }
31000 };
31001
31002 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
31003 this.permute(rbt, rws, iws, rtws, itws, N);
31004
31005 for (var s = 1; s < N; s <<= 1) {
31006 var l = s << 1;
31007
31008 var rtwdf = Math.cos(2 * Math.PI / l);
31009 var itwdf = Math.sin(2 * Math.PI / l);
31010
31011 for (var p = 0; p < N; p += l) {
31012 var rtwdf_ = rtwdf;
31013 var itwdf_ = itwdf;
31014
31015 for (var j = 0; j < s; j++) {
31016 var re = rtws[p + j];
31017 var ie = itws[p + j];
31018
31019 var ro = rtws[p + j + s];
31020 var io = itws[p + j + s];
31021
31022 var rx = rtwdf_ * ro - itwdf_ * io;
31023
31024 io = rtwdf_ * io + itwdf_ * ro;
31025 ro = rx;
31026
31027 rtws[p + j] = re + ro;
31028 itws[p + j] = ie + io;
31029
31030 rtws[p + j + s] = re - ro;
31031 itws[p + j + s] = ie - io;
31032
31033 /* jshint maxdepth : false */
31034 if (j !== l) {
31035 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
31036
31037 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
31038 rtwdf_ = rx;
31039 }
31040 }
31041 }
31042 }
31043 };
31044
31045 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
31046 var N = Math.max(m, n) | 1;
31047 var odd = N & 1;
31048 var i = 0;
31049 for (N = N / 2 | 0; N; N = N >>> 1) {
31050 i++;
31051 }
31052
31053 return 1 << i + 1 + odd;
31054 };
31055
31056 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31057 if (N <= 1) return;
31058
31059 for (var i = 0; i < N / 2; i++) {
31060 var t = rws[i];
31061
31062 rws[i] = rws[N - i - 1];
31063 rws[N - i - 1] = t;
31064
31065 t = iws[i];
31066
31067 iws[i] = -iws[N - i - 1];
31068 iws[N - i - 1] = -t;
31069 }
31070 };
31071
31072 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31073 var carry = 0;
31074 for (var i = 0; i < N / 2; i++) {
31075 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31076 Math.round(ws[2 * i] / N) +
31077 carry;
31078
31079 ws[i] = w & 0x3ffffff;
31080
31081 if (w < 0x4000000) {
31082 carry = 0;
31083 } else {
31084 carry = w / 0x4000000 | 0;
31085 }
31086 }
31087
31088 return ws;
31089 };
31090
31091 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31092 var carry = 0;
31093 for (var i = 0; i < len; i++) {
31094 carry = carry + (ws[i] | 0);
31095
31096 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31097 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31098 }
31099
31100 // Pad with zeroes
31101 for (i = 2 * len; i < N; ++i) {
31102 rws[i] = 0;
31103 }
31104
31105 assert(carry === 0);
31106 assert((carry & ~0x1fff) === 0);
31107 };
31108
31109 FFTM.prototype.stub = function stub (N) {
31110 var ph = new Array(N);
31111 for (var i = 0; i < N; i++) {
31112 ph[i] = 0;
31113 }
31114
31115 return ph;
31116 };
31117
31118 FFTM.prototype.mulp = function mulp (x, y, out) {
31119 var N = 2 * this.guessLen13b(x.length, y.length);
31120
31121 var rbt = this.makeRBT(N);
31122
31123 var _ = this.stub(N);
31124
31125 var rws = new Array(N);
31126 var rwst = new Array(N);
31127 var iwst = new Array(N);
31128
31129 var nrws = new Array(N);
31130 var nrwst = new Array(N);
31131 var niwst = new Array(N);
31132
31133 var rmws = out.words;
31134 rmws.length = N;
31135
31136 this.convert13b(x.words, x.length, rws, N);
31137 this.convert13b(y.words, y.length, nrws, N);
31138
31139 this.transform(rws, _, rwst, iwst, N, rbt);
31140 this.transform(nrws, _, nrwst, niwst, N, rbt);
31141
31142 for (var i = 0; i < N; i++) {
31143 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31144 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31145 rwst[i] = rx;
31146 }
31147
31148 this.conjugate(rwst, iwst, N);
31149 this.transform(rwst, iwst, rmws, _, N, rbt);
31150 this.conjugate(rmws, _, N);
31151 this.normalize13b(rmws, N);
31152
31153 out.negative = x.negative ^ y.negative;
31154 out.length = x.length + y.length;
31155 return out.strip();
31156 };
31157
31158 // Multiply `this` by `num`
31159 BN.prototype.mul = function mul (num) {
31160 var out = new BN(null);
31161 out.words = new Array(this.length + num.length);
31162 return this.mulTo(num, out);
31163 };
31164
31165 // Multiply employing FFT
31166 BN.prototype.mulf = function mulf (num) {
31167 var out = new BN(null);
31168 out.words = new Array(this.length + num.length);
31169 return jumboMulTo(this, num, out);
31170 };
31171
31172 // In-place Multiplication
31173 BN.prototype.imul = function imul (num) {
31174 return this.clone().mulTo(num, this);
31175 };
31176
31177 BN.prototype.imuln = function imuln (num) {
31178 assert(typeof num === 'number');
31179 assert(num < 0x4000000);
31180
31181 // Carry
31182 var carry = 0;
31183 for (var i = 0; i < this.length; i++) {
31184 var w = (this.words[i] | 0) * num;
31185 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31186 carry >>= 26;
31187 carry += (w / 0x4000000) | 0;
31188 // NOTE: lo is 27bit maximum
31189 carry += lo >>> 26;
31190 this.words[i] = lo & 0x3ffffff;
31191 }
31192
31193 if (carry !== 0) {
31194 this.words[i] = carry;
31195 this.length++;
31196 }
31197
31198 return this;
31199 };
31200
31201 BN.prototype.muln = function muln (num) {
31202 return this.clone().imuln(num);
31203 };
31204
31205 // `this` * `this`
31206 BN.prototype.sqr = function sqr () {
31207 return this.mul(this);
31208 };
31209
31210 // `this` * `this` in-place
31211 BN.prototype.isqr = function isqr () {
31212 return this.imul(this.clone());
31213 };
31214
31215 // Math.pow(`this`, `num`)
31216 BN.prototype.pow = function pow (num) {
31217 var w = toBitArray(num);
31218 if (w.length === 0) return new BN(1);
31219
31220 // Skip leading zeroes
31221 var res = this;
31222 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31223 if (w[i] !== 0) break;
31224 }
31225
31226 if (++i < w.length) {
31227 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31228 if (w[i] === 0) continue;
31229
31230 res = res.mul(q);
31231 }
31232 }
31233
31234 return res;
31235 };
31236
31237 // Shift-left in-place
31238 BN.prototype.iushln = function iushln (bits) {
31239 assert(typeof bits === 'number' && bits >= 0);
31240 var r = bits % 26;
31241 var s = (bits - r) / 26;
31242 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31243 var i;
31244
31245 if (r !== 0) {
31246 var carry = 0;
31247
31248 for (i = 0; i < this.length; i++) {
31249 var newCarry = this.words[i] & carryMask;
31250 var c = ((this.words[i] | 0) - newCarry) << r;
31251 this.words[i] = c | carry;
31252 carry = newCarry >>> (26 - r);
31253 }
31254
31255 if (carry) {
31256 this.words[i] = carry;
31257 this.length++;
31258 }
31259 }
31260
31261 if (s !== 0) {
31262 for (i = this.length - 1; i >= 0; i--) {
31263 this.words[i + s] = this.words[i];
31264 }
31265
31266 for (i = 0; i < s; i++) {
31267 this.words[i] = 0;
31268 }
31269
31270 this.length += s;
31271 }
31272
31273 return this.strip();
31274 };
31275
31276 BN.prototype.ishln = function ishln (bits) {
31277 // TODO(indutny): implement me
31278 assert(this.negative === 0);
31279 return this.iushln(bits);
31280 };
31281
31282 // Shift-right in-place
31283 // NOTE: `hint` is a lowest bit before trailing zeroes
31284 // NOTE: if `extended` is present - it will be filled with destroyed bits
31285 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31286 assert(typeof bits === 'number' && bits >= 0);
31287 var h;
31288 if (hint) {
31289 h = (hint - (hint % 26)) / 26;
31290 } else {
31291 h = 0;
31292 }
31293
31294 var r = bits % 26;
31295 var s = Math.min((bits - r) / 26, this.length);
31296 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31297 var maskedWords = extended;
31298
31299 h -= s;
31300 h = Math.max(0, h);
31301
31302 // Extended mode, copy masked part
31303 if (maskedWords) {
31304 for (var i = 0; i < s; i++) {
31305 maskedWords.words[i] = this.words[i];
31306 }
31307 maskedWords.length = s;
31308 }
31309
31310 if (s === 0) {
31311 // No-op, we should not move anything at all
31312 } else if (this.length > s) {
31313 this.length -= s;
31314 for (i = 0; i < this.length; i++) {
31315 this.words[i] = this.words[i + s];
31316 }
31317 } else {
31318 this.words[0] = 0;
31319 this.length = 1;
31320 }
31321
31322 var carry = 0;
31323 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31324 var word = this.words[i] | 0;
31325 this.words[i] = (carry << (26 - r)) | (word >>> r);
31326 carry = word & mask;
31327 }
31328
31329 // Push carried bits as a mask
31330 if (maskedWords && carry !== 0) {
31331 maskedWords.words[maskedWords.length++] = carry;
31332 }
31333
31334 if (this.length === 0) {
31335 this.words[0] = 0;
31336 this.length = 1;
31337 }
31338
31339 return this.strip();
31340 };
31341
31342 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31343 // TODO(indutny): implement me
31344 assert(this.negative === 0);
31345 return this.iushrn(bits, hint, extended);
31346 };
31347
31348 // Shift-left
31349 BN.prototype.shln = function shln (bits) {
31350 return this.clone().ishln(bits);
31351 };
31352
31353 BN.prototype.ushln = function ushln (bits) {
31354 return this.clone().iushln(bits);
31355 };
31356
31357 // Shift-right
31358 BN.prototype.shrn = function shrn (bits) {
31359 return this.clone().ishrn(bits);
31360 };
31361
31362 BN.prototype.ushrn = function ushrn (bits) {
31363 return this.clone().iushrn(bits);
31364 };
31365
31366 // Test if n bit is set
31367 BN.prototype.testn = function testn (bit) {
31368 assert(typeof bit === 'number' && bit >= 0);
31369 var r = bit % 26;
31370 var s = (bit - r) / 26;
31371 var q = 1 << r;
31372
31373 // Fast case: bit is much higher than all existing words
31374 if (this.length <= s) return false;
31375
31376 // Check bit and return
31377 var w = this.words[s];
31378
31379 return !!(w & q);
31380 };
31381
31382 // Return only lowers bits of number (in-place)
31383 BN.prototype.imaskn = function imaskn (bits) {
31384 assert(typeof bits === 'number' && bits >= 0);
31385 var r = bits % 26;
31386 var s = (bits - r) / 26;
31387
31388 assert(this.negative === 0, 'imaskn works only with positive numbers');
31389
31390 if (this.length <= s) {
31391 return this;
31392 }
31393
31394 if (r !== 0) {
31395 s++;
31396 }
31397 this.length = Math.min(s, this.length);
31398
31399 if (r !== 0) {
31400 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31401 this.words[this.length - 1] &= mask;
31402 }
31403
31404 return this.strip();
31405 };
31406
31407 // Return only lowers bits of number
31408 BN.prototype.maskn = function maskn (bits) {
31409 return this.clone().imaskn(bits);
31410 };
31411
31412 // Add plain number `num` to `this`
31413 BN.prototype.iaddn = function iaddn (num) {
31414 assert(typeof num === 'number');
31415 assert(num < 0x4000000);
31416 if (num < 0) return this.isubn(-num);
31417
31418 // Possible sign change
31419 if (this.negative !== 0) {
31420 if (this.length === 1 && (this.words[0] | 0) < num) {
31421 this.words[0] = num - (this.words[0] | 0);
31422 this.negative = 0;
31423 return this;
31424 }
31425
31426 this.negative = 0;
31427 this.isubn(num);
31428 this.negative = 1;
31429 return this;
31430 }
31431
31432 // Add without checks
31433 return this._iaddn(num);
31434 };
31435
31436 BN.prototype._iaddn = function _iaddn (num) {
31437 this.words[0] += num;
31438
31439 // Carry
31440 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31441 this.words[i] -= 0x4000000;
31442 if (i === this.length - 1) {
31443 this.words[i + 1] = 1;
31444 } else {
31445 this.words[i + 1]++;
31446 }
31447 }
31448 this.length = Math.max(this.length, i + 1);
31449
31450 return this;
31451 };
31452
31453 // Subtract plain number `num` from `this`
31454 BN.prototype.isubn = function isubn (num) {
31455 assert(typeof num === 'number');
31456 assert(num < 0x4000000);
31457 if (num < 0) return this.iaddn(-num);
31458
31459 if (this.negative !== 0) {
31460 this.negative = 0;
31461 this.iaddn(num);
31462 this.negative = 1;
31463 return this;
31464 }
31465
31466 this.words[0] -= num;
31467
31468 if (this.length === 1 && this.words[0] < 0) {
31469 this.words[0] = -this.words[0];
31470 this.negative = 1;
31471 } else {
31472 // Carry
31473 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31474 this.words[i] += 0x4000000;
31475 this.words[i + 1] -= 1;
31476 }
31477 }
31478
31479 return this.strip();
31480 };
31481
31482 BN.prototype.addn = function addn (num) {
31483 return this.clone().iaddn(num);
31484 };
31485
31486 BN.prototype.subn = function subn (num) {
31487 return this.clone().isubn(num);
31488 };
31489
31490 BN.prototype.iabs = function iabs () {
31491 this.negative = 0;
31492
31493 return this;
31494 };
31495
31496 BN.prototype.abs = function abs () {
31497 return this.clone().iabs();
31498 };
31499
31500 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31501 var len = num.length + shift;
31502 var i;
31503
31504 this._expand(len);
31505
31506 var w;
31507 var carry = 0;
31508 for (i = 0; i < num.length; i++) {
31509 w = (this.words[i + shift] | 0) + carry;
31510 var right = (num.words[i] | 0) * mul;
31511 w -= right & 0x3ffffff;
31512 carry = (w >> 26) - ((right / 0x4000000) | 0);
31513 this.words[i + shift] = w & 0x3ffffff;
31514 }
31515 for (; i < this.length - shift; i++) {
31516 w = (this.words[i + shift] | 0) + carry;
31517 carry = w >> 26;
31518 this.words[i + shift] = w & 0x3ffffff;
31519 }
31520
31521 if (carry === 0) return this.strip();
31522
31523 // Subtraction overflow
31524 assert(carry === -1);
31525 carry = 0;
31526 for (i = 0; i < this.length; i++) {
31527 w = -(this.words[i] | 0) + carry;
31528 carry = w >> 26;
31529 this.words[i] = w & 0x3ffffff;
31530 }
31531 this.negative = 1;
31532
31533 return this.strip();
31534 };
31535
31536 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31537 var shift = this.length - num.length;
31538
31539 var a = this.clone();
31540 var b = num;
31541
31542 // Normalize
31543 var bhi = b.words[b.length - 1] | 0;
31544 var bhiBits = this._countBits(bhi);
31545 shift = 26 - bhiBits;
31546 if (shift !== 0) {
31547 b = b.ushln(shift);
31548 a.iushln(shift);
31549 bhi = b.words[b.length - 1] | 0;
31550 }
31551
31552 // Initialize quotient
31553 var m = a.length - b.length;
31554 var q;
31555
31556 if (mode !== 'mod') {
31557 q = new BN(null);
31558 q.length = m + 1;
31559 q.words = new Array(q.length);
31560 for (var i = 0; i < q.length; i++) {
31561 q.words[i] = 0;
31562 }
31563 }
31564
31565 var diff = a.clone()._ishlnsubmul(b, 1, m);
31566 if (diff.negative === 0) {
31567 a = diff;
31568 if (q) {
31569 q.words[m] = 1;
31570 }
31571 }
31572
31573 for (var j = m - 1; j >= 0; j--) {
31574 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31575 (a.words[b.length + j - 1] | 0);
31576
31577 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31578 // (0x7ffffff)
31579 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
31580
31581 a._ishlnsubmul(b, qj, j);
31582 while (a.negative !== 0) {
31583 qj--;
31584 a.negative = 0;
31585 a._ishlnsubmul(b, 1, j);
31586 if (!a.isZero()) {
31587 a.negative ^= 1;
31588 }
31589 }
31590 if (q) {
31591 q.words[j] = qj;
31592 }
31593 }
31594 if (q) {
31595 q.strip();
31596 }
31597 a.strip();
31598
31599 // Denormalize
31600 if (mode !== 'div' && shift !== 0) {
31601 a.iushrn(shift);
31602 }
31603
31604 return {
31605 div: q || null,
31606 mod: a
31607 };
31608 };
31609
31610 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31611 // to `div` to request div only, or be absent to
31612 // request both div & mod
31613 // 2) `positive` is true if unsigned mod is requested
31614 BN.prototype.divmod = function divmod (num, mode, positive) {
31615 assert(!num.isZero());
31616
31617 if (this.isZero()) {
31618 return {
31619 div: new BN(0),
31620 mod: new BN(0)
31621 };
31622 }
31623
31624 var div, mod, res;
31625 if (this.negative !== 0 && num.negative === 0) {
31626 res = this.neg().divmod(num, mode);
31627
31628 if (mode !== 'mod') {
31629 div = res.div.neg();
31630 }
31631
31632 if (mode !== 'div') {
31633 mod = res.mod.neg();
31634 if (positive && mod.negative !== 0) {
31635 mod.iadd(num);
31636 }
31637 }
31638
31639 return {
31640 div: div,
31641 mod: mod
31642 };
31643 }
31644
31645 if (this.negative === 0 && num.negative !== 0) {
31646 res = this.divmod(num.neg(), mode);
31647
31648 if (mode !== 'mod') {
31649 div = res.div.neg();
31650 }
31651
31652 return {
31653 div: div,
31654 mod: res.mod
31655 };
31656 }
31657
31658 if ((this.negative & num.negative) !== 0) {
31659 res = this.neg().divmod(num.neg(), mode);
31660
31661 if (mode !== 'div') {
31662 mod = res.mod.neg();
31663 if (positive && mod.negative !== 0) {
31664 mod.isub(num);
31665 }
31666 }
31667
31668 return {
31669 div: res.div,
31670 mod: mod
31671 };
31672 }
31673
31674 // Both numbers are positive at this point
31675
31676 // Strip both numbers to approximate shift value
31677 if (num.length > this.length || this.cmp(num) < 0) {
31678 return {
31679 div: new BN(0),
31680 mod: this
31681 };
31682 }
31683
31684 // Very short reduction
31685 if (num.length === 1) {
31686 if (mode === 'div') {
31687 return {
31688 div: this.divn(num.words[0]),
31689 mod: null
31690 };
31691 }
31692
31693 if (mode === 'mod') {
31694 return {
31695 div: null,
31696 mod: new BN(this.modn(num.words[0]))
31697 };
31698 }
31699
31700 return {
31701 div: this.divn(num.words[0]),
31702 mod: new BN(this.modn(num.words[0]))
31703 };
31704 }
31705
31706 return this._wordDiv(num, mode);
31707 };
31708
31709 // Find `this` / `num`
31710 BN.prototype.div = function div (num) {
31711 return this.divmod(num, 'div', false).div;
31712 };
31713
31714 // Find `this` % `num`
31715 BN.prototype.mod = function mod (num) {
31716 return this.divmod(num, 'mod', false).mod;
31717 };
31718
31719 BN.prototype.umod = function umod (num) {
31720 return this.divmod(num, 'mod', true).mod;
31721 };
31722
31723 // Find Round(`this` / `num`)
31724 BN.prototype.divRound = function divRound (num) {
31725 var dm = this.divmod(num);
31726
31727 // Fast case - exact division
31728 if (dm.mod.isZero()) return dm.div;
31729
31730 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
31731
31732 var half = num.ushrn(1);
31733 var r2 = num.andln(1);
31734 var cmp = mod.cmp(half);
31735
31736 // Round down
31737 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
31738
31739 // Round up
31740 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31741 };
31742
31743 BN.prototype.modn = function modn (num) {
31744 assert(num <= 0x3ffffff);
31745 var p = (1 << 26) % num;
31746
31747 var acc = 0;
31748 for (var i = this.length - 1; i >= 0; i--) {
31749 acc = (p * acc + (this.words[i] | 0)) % num;
31750 }
31751
31752 return acc;
31753 };
31754
31755 // In-place division by number
31756 BN.prototype.idivn = function idivn (num) {
31757 assert(num <= 0x3ffffff);
31758
31759 var carry = 0;
31760 for (var i = this.length - 1; i >= 0; i--) {
31761 var w = (this.words[i] | 0) + carry * 0x4000000;
31762 this.words[i] = (w / num) | 0;
31763 carry = w % num;
31764 }
31765
31766 return this.strip();
31767 };
31768
31769 BN.prototype.divn = function divn (num) {
31770 return this.clone().idivn(num);
31771 };
31772
31773 BN.prototype.egcd = function egcd (p) {
31774 assert(p.negative === 0);
31775 assert(!p.isZero());
31776
31777 var x = this;
31778 var y = p.clone();
31779
31780 if (x.negative !== 0) {
31781 x = x.umod(p);
31782 } else {
31783 x = x.clone();
31784 }
31785
31786 // A * x + B * y = x
31787 var A = new BN(1);
31788 var B = new BN(0);
31789
31790 // C * x + D * y = y
31791 var C = new BN(0);
31792 var D = new BN(1);
31793
31794 var g = 0;
31795
31796 while (x.isEven() && y.isEven()) {
31797 x.iushrn(1);
31798 y.iushrn(1);
31799 ++g;
31800 }
31801
31802 var yp = y.clone();
31803 var xp = x.clone();
31804
31805 while (!x.isZero()) {
31806 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31807 if (i > 0) {
31808 x.iushrn(i);
31809 while (i-- > 0) {
31810 if (A.isOdd() || B.isOdd()) {
31811 A.iadd(yp);
31812 B.isub(xp);
31813 }
31814
31815 A.iushrn(1);
31816 B.iushrn(1);
31817 }
31818 }
31819
31820 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31821 if (j > 0) {
31822 y.iushrn(j);
31823 while (j-- > 0) {
31824 if (C.isOdd() || D.isOdd()) {
31825 C.iadd(yp);
31826 D.isub(xp);
31827 }
31828
31829 C.iushrn(1);
31830 D.iushrn(1);
31831 }
31832 }
31833
31834 if (x.cmp(y) >= 0) {
31835 x.isub(y);
31836 A.isub(C);
31837 B.isub(D);
31838 } else {
31839 y.isub(x);
31840 C.isub(A);
31841 D.isub(B);
31842 }
31843 }
31844
31845 return {
31846 a: C,
31847 b: D,
31848 gcd: y.iushln(g)
31849 };
31850 };
31851
31852 // This is reduced incarnation of the binary EEA
31853 // above, designated to invert members of the
31854 // _prime_ fields F(p) at a maximal speed
31855 BN.prototype._invmp = function _invmp (p) {
31856 assert(p.negative === 0);
31857 assert(!p.isZero());
31858
31859 var a = this;
31860 var b = p.clone();
31861
31862 if (a.negative !== 0) {
31863 a = a.umod(p);
31864 } else {
31865 a = a.clone();
31866 }
31867
31868 var x1 = new BN(1);
31869 var x2 = new BN(0);
31870
31871 var delta = b.clone();
31872
31873 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31874 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31875 if (i > 0) {
31876 a.iushrn(i);
31877 while (i-- > 0) {
31878 if (x1.isOdd()) {
31879 x1.iadd(delta);
31880 }
31881
31882 x1.iushrn(1);
31883 }
31884 }
31885
31886 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31887 if (j > 0) {
31888 b.iushrn(j);
31889 while (j-- > 0) {
31890 if (x2.isOdd()) {
31891 x2.iadd(delta);
31892 }
31893
31894 x2.iushrn(1);
31895 }
31896 }
31897
31898 if (a.cmp(b) >= 0) {
31899 a.isub(b);
31900 x1.isub(x2);
31901 } else {
31902 b.isub(a);
31903 x2.isub(x1);
31904 }
31905 }
31906
31907 var res;
31908 if (a.cmpn(1) === 0) {
31909 res = x1;
31910 } else {
31911 res = x2;
31912 }
31913
31914 if (res.cmpn(0) < 0) {
31915 res.iadd(p);
31916 }
31917
31918 return res;
31919 };
31920
31921 BN.prototype.gcd = function gcd (num) {
31922 if (this.isZero()) return num.abs();
31923 if (num.isZero()) return this.abs();
31924
31925 var a = this.clone();
31926 var b = num.clone();
31927 a.negative = 0;
31928 b.negative = 0;
31929
31930 // Remove common factor of two
31931 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
31932 a.iushrn(1);
31933 b.iushrn(1);
31934 }
31935
31936 do {
31937 while (a.isEven()) {
31938 a.iushrn(1);
31939 }
31940 while (b.isEven()) {
31941 b.iushrn(1);
31942 }
31943
31944 var r = a.cmp(b);
31945 if (r < 0) {
31946 // Swap `a` and `b` to make `a` always bigger than `b`
31947 var t = a;
31948 a = b;
31949 b = t;
31950 } else if (r === 0 || b.cmpn(1) === 0) {
31951 break;
31952 }
31953
31954 a.isub(b);
31955 } while (true);
31956
31957 return b.iushln(shift);
31958 };
31959
31960 // Invert number in the field F(num)
31961 BN.prototype.invm = function invm (num) {
31962 return this.egcd(num).a.umod(num);
31963 };
31964
31965 BN.prototype.isEven = function isEven () {
31966 return (this.words[0] & 1) === 0;
31967 };
31968
31969 BN.prototype.isOdd = function isOdd () {
31970 return (this.words[0] & 1) === 1;
31971 };
31972
31973 // And first word and num
31974 BN.prototype.andln = function andln (num) {
31975 return this.words[0] & num;
31976 };
31977
31978 // Increment at the bit position in-line
31979 BN.prototype.bincn = function bincn (bit) {
31980 assert(typeof bit === 'number');
31981 var r = bit % 26;
31982 var s = (bit - r) / 26;
31983 var q = 1 << r;
31984
31985 // Fast case: bit is much higher than all existing words
31986 if (this.length <= s) {
31987 this._expand(s + 1);
31988 this.words[s] |= q;
31989 return this;
31990 }
31991
31992 // Add bit and propagate, if needed
31993 var carry = q;
31994 for (var i = s; carry !== 0 && i < this.length; i++) {
31995 var w = this.words[i] | 0;
31996 w += carry;
31997 carry = w >>> 26;
31998 w &= 0x3ffffff;
31999 this.words[i] = w;
32000 }
32001 if (carry !== 0) {
32002 this.words[i] = carry;
32003 this.length++;
32004 }
32005 return this;
32006 };
32007
32008 BN.prototype.isZero = function isZero () {
32009 return this.length === 1 && this.words[0] === 0;
32010 };
32011
32012 BN.prototype.cmpn = function cmpn (num) {
32013 var negative = num < 0;
32014
32015 if (this.negative !== 0 && !negative) return -1;
32016 if (this.negative === 0 && negative) return 1;
32017
32018 this.strip();
32019
32020 var res;
32021 if (this.length > 1) {
32022 res = 1;
32023 } else {
32024 if (negative) {
32025 num = -num;
32026 }
32027
32028 assert(num <= 0x3ffffff, 'Number is too big');
32029
32030 var w = this.words[0] | 0;
32031 res = w === num ? 0 : w < num ? -1 : 1;
32032 }
32033 if (this.negative !== 0) return -res | 0;
32034 return res;
32035 };
32036
32037 // Compare two numbers and return:
32038 // 1 - if `this` > `num`
32039 // 0 - if `this` == `num`
32040 // -1 - if `this` < `num`
32041 BN.prototype.cmp = function cmp (num) {
32042 if (this.negative !== 0 && num.negative === 0) return -1;
32043 if (this.negative === 0 && num.negative !== 0) return 1;
32044
32045 var res = this.ucmp(num);
32046 if (this.negative !== 0) return -res | 0;
32047 return res;
32048 };
32049
32050 // Unsigned comparison
32051 BN.prototype.ucmp = function ucmp (num) {
32052 // At this point both numbers have the same sign
32053 if (this.length > num.length) return 1;
32054 if (this.length < num.length) return -1;
32055
32056 var res = 0;
32057 for (var i = this.length - 1; i >= 0; i--) {
32058 var a = this.words[i] | 0;
32059 var b = num.words[i] | 0;
32060
32061 if (a === b) continue;
32062 if (a < b) {
32063 res = -1;
32064 } else if (a > b) {
32065 res = 1;
32066 }
32067 break;
32068 }
32069 return res;
32070 };
32071
32072 BN.prototype.gtn = function gtn (num) {
32073 return this.cmpn(num) === 1;
32074 };
32075
32076 BN.prototype.gt = function gt (num) {
32077 return this.cmp(num) === 1;
32078 };
32079
32080 BN.prototype.gten = function gten (num) {
32081 return this.cmpn(num) >= 0;
32082 };
32083
32084 BN.prototype.gte = function gte (num) {
32085 return this.cmp(num) >= 0;
32086 };
32087
32088 BN.prototype.ltn = function ltn (num) {
32089 return this.cmpn(num) === -1;
32090 };
32091
32092 BN.prototype.lt = function lt (num) {
32093 return this.cmp(num) === -1;
32094 };
32095
32096 BN.prototype.lten = function lten (num) {
32097 return this.cmpn(num) <= 0;
32098 };
32099
32100 BN.prototype.lte = function lte (num) {
32101 return this.cmp(num) <= 0;
32102 };
32103
32104 BN.prototype.eqn = function eqn (num) {
32105 return this.cmpn(num) === 0;
32106 };
32107
32108 BN.prototype.eq = function eq (num) {
32109 return this.cmp(num) === 0;
32110 };
32111
32112 //
32113 // A reduce context, could be using montgomery or something better, depending
32114 // on the `m` itself.
32115 //
32116 BN.red = function red (num) {
32117 return new Red(num);
32118 };
32119
32120 BN.prototype.toRed = function toRed (ctx) {
32121 assert(!this.red, 'Already a number in reduction context');
32122 assert(this.negative === 0, 'red works only with positives');
32123 return ctx.convertTo(this)._forceRed(ctx);
32124 };
32125
32126 BN.prototype.fromRed = function fromRed () {
32127 assert(this.red, 'fromRed works only with numbers in reduction context');
32128 return this.red.convertFrom(this);
32129 };
32130
32131 BN.prototype._forceRed = function _forceRed (ctx) {
32132 this.red = ctx;
32133 return this;
32134 };
32135
32136 BN.prototype.forceRed = function forceRed (ctx) {
32137 assert(!this.red, 'Already a number in reduction context');
32138 return this._forceRed(ctx);
32139 };
32140
32141 BN.prototype.redAdd = function redAdd (num) {
32142 assert(this.red, 'redAdd works only with red numbers');
32143 return this.red.add(this, num);
32144 };
32145
32146 BN.prototype.redIAdd = function redIAdd (num) {
32147 assert(this.red, 'redIAdd works only with red numbers');
32148 return this.red.iadd(this, num);
32149 };
32150
32151 BN.prototype.redSub = function redSub (num) {
32152 assert(this.red, 'redSub works only with red numbers');
32153 return this.red.sub(this, num);
32154 };
32155
32156 BN.prototype.redISub = function redISub (num) {
32157 assert(this.red, 'redISub works only with red numbers');
32158 return this.red.isub(this, num);
32159 };
32160
32161 BN.prototype.redShl = function redShl (num) {
32162 assert(this.red, 'redShl works only with red numbers');
32163 return this.red.shl(this, num);
32164 };
32165
32166 BN.prototype.redMul = function redMul (num) {
32167 assert(this.red, 'redMul works only with red numbers');
32168 this.red._verify2(this, num);
32169 return this.red.mul(this, num);
32170 };
32171
32172 BN.prototype.redIMul = function redIMul (num) {
32173 assert(this.red, 'redMul works only with red numbers');
32174 this.red._verify2(this, num);
32175 return this.red.imul(this, num);
32176 };
32177
32178 BN.prototype.redSqr = function redSqr () {
32179 assert(this.red, 'redSqr works only with red numbers');
32180 this.red._verify1(this);
32181 return this.red.sqr(this);
32182 };
32183
32184 BN.prototype.redISqr = function redISqr () {
32185 assert(this.red, 'redISqr works only with red numbers');
32186 this.red._verify1(this);
32187 return this.red.isqr(this);
32188 };
32189
32190 // Square root over p
32191 BN.prototype.redSqrt = function redSqrt () {
32192 assert(this.red, 'redSqrt works only with red numbers');
32193 this.red._verify1(this);
32194 return this.red.sqrt(this);
32195 };
32196
32197 BN.prototype.redInvm = function redInvm () {
32198 assert(this.red, 'redInvm works only with red numbers');
32199 this.red._verify1(this);
32200 return this.red.invm(this);
32201 };
32202
32203 // Return negative clone of `this` % `red modulo`
32204 BN.prototype.redNeg = function redNeg () {
32205 assert(this.red, 'redNeg works only with red numbers');
32206 this.red._verify1(this);
32207 return this.red.neg(this);
32208 };
32209
32210 BN.prototype.redPow = function redPow (num) {
32211 assert(this.red && !num.red, 'redPow(normalNum)');
32212 this.red._verify1(this);
32213 return this.red.pow(this, num);
32214 };
32215
32216 // Prime numbers with efficient reduction
32217 var primes = {
32218 k256: null,
32219 p224: null,
32220 p192: null,
32221 p25519: null
32222 };
32223
32224 // Pseudo-Mersenne prime
32225 function MPrime (name, p) {
32226 // P = 2 ^ N - K
32227 this.name = name;
32228 this.p = new BN(p, 16);
32229 this.n = this.p.bitLength();
32230 this.k = new BN(1).iushln(this.n).isub(this.p);
32231
32232 this.tmp = this._tmp();
32233 }
32234
32235 MPrime.prototype._tmp = function _tmp () {
32236 var tmp = new BN(null);
32237 tmp.words = new Array(Math.ceil(this.n / 13));
32238 return tmp;
32239 };
32240
32241 MPrime.prototype.ireduce = function ireduce (num) {
32242 // Assumes that `num` is less than `P^2`
32243 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32244 var r = num;
32245 var rlen;
32246
32247 do {
32248 this.split(r, this.tmp);
32249 r = this.imulK(r);
32250 r = r.iadd(this.tmp);
32251 rlen = r.bitLength();
32252 } while (rlen > this.n);
32253
32254 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32255 if (cmp === 0) {
32256 r.words[0] = 0;
32257 r.length = 1;
32258 } else if (cmp > 0) {
32259 r.isub(this.p);
32260 } else {
32261 r.strip();
32262 }
32263
32264 return r;
32265 };
32266
32267 MPrime.prototype.split = function split (input, out) {
32268 input.iushrn(this.n, 0, out);
32269 };
32270
32271 MPrime.prototype.imulK = function imulK (num) {
32272 return num.imul(this.k);
32273 };
32274
32275 function K256 () {
32276 MPrime.call(
32277 this,
32278 'k256',
32279 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32280 }
32281 inherits(K256, MPrime);
32282
32283 K256.prototype.split = function split (input, output) {
32284 // 256 = 9 * 26 + 22
32285 var mask = 0x3fffff;
32286
32287 var outLen = Math.min(input.length, 9);
32288 for (var i = 0; i < outLen; i++) {
32289 output.words[i] = input.words[i];
32290 }
32291 output.length = outLen;
32292
32293 if (input.length <= 9) {
32294 input.words[0] = 0;
32295 input.length = 1;
32296 return;
32297 }
32298
32299 // Shift by 9 limbs
32300 var prev = input.words[9];
32301 output.words[output.length++] = prev & mask;
32302
32303 for (i = 10; i < input.length; i++) {
32304 var next = input.words[i] | 0;
32305 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32306 prev = next;
32307 }
32308 prev >>>= 22;
32309 input.words[i - 10] = prev;
32310 if (prev === 0 && input.length > 10) {
32311 input.length -= 10;
32312 } else {
32313 input.length -= 9;
32314 }
32315 };
32316
32317 K256.prototype.imulK = function imulK (num) {
32318 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32319 num.words[num.length] = 0;
32320 num.words[num.length + 1] = 0;
32321 num.length += 2;
32322
32323 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32324 var lo = 0;
32325 for (var i = 0; i < num.length; i++) {
32326 var w = num.words[i] | 0;
32327 lo += w * 0x3d1;
32328 num.words[i] = lo & 0x3ffffff;
32329 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32330 }
32331
32332 // Fast length reduction
32333 if (num.words[num.length - 1] === 0) {
32334 num.length--;
32335 if (num.words[num.length - 1] === 0) {
32336 num.length--;
32337 }
32338 }
32339 return num;
32340 };
32341
32342 function P224 () {
32343 MPrime.call(
32344 this,
32345 'p224',
32346 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32347 }
32348 inherits(P224, MPrime);
32349
32350 function P192 () {
32351 MPrime.call(
32352 this,
32353 'p192',
32354 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32355 }
32356 inherits(P192, MPrime);
32357
32358 function P25519 () {
32359 // 2 ^ 255 - 19
32360 MPrime.call(
32361 this,
32362 '25519',
32363 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32364 }
32365 inherits(P25519, MPrime);
32366
32367 P25519.prototype.imulK = function imulK (num) {
32368 // K = 0x13
32369 var carry = 0;
32370 for (var i = 0; i < num.length; i++) {
32371 var hi = (num.words[i] | 0) * 0x13 + carry;
32372 var lo = hi & 0x3ffffff;
32373 hi >>>= 26;
32374
32375 num.words[i] = lo;
32376 carry = hi;
32377 }
32378 if (carry !== 0) {
32379 num.words[num.length++] = carry;
32380 }
32381 return num;
32382 };
32383
32384 // Exported mostly for testing purposes, use plain name instead
32385 BN._prime = function prime (name) {
32386 // Cached version of prime
32387 if (primes[name]) return primes[name];
32388
32389 var prime;
32390 if (name === 'k256') {
32391 prime = new K256();
32392 } else if (name === 'p224') {
32393 prime = new P224();
32394 } else if (name === 'p192') {
32395 prime = new P192();
32396 } else if (name === 'p25519') {
32397 prime = new P25519();
32398 } else {
32399 throw new Error('Unknown prime ' + name);
32400 }
32401 primes[name] = prime;
32402
32403 return prime;
32404 };
32405
32406 //
32407 // Base reduction engine
32408 //
32409 function Red (m) {
32410 if (typeof m === 'string') {
32411 var prime = BN._prime(m);
32412 this.m = prime.p;
32413 this.prime = prime;
32414 } else {
32415 assert(m.gtn(1), 'modulus must be greater than 1');
32416 this.m = m;
32417 this.prime = null;
32418 }
32419 }
32420
32421 Red.prototype._verify1 = function _verify1 (a) {
32422 assert(a.negative === 0, 'red works only with positives');
32423 assert(a.red, 'red works only with red numbers');
32424 };
32425
32426 Red.prototype._verify2 = function _verify2 (a, b) {
32427 assert((a.negative | b.negative) === 0, 'red works only with positives');
32428 assert(a.red && a.red === b.red,
32429 'red works only with red numbers');
32430 };
32431
32432 Red.prototype.imod = function imod (a) {
32433 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32434 return a.umod(this.m)._forceRed(this);
32435 };
32436
32437 Red.prototype.neg = function neg (a) {
32438 if (a.isZero()) {
32439 return a.clone();
32440 }
32441
32442 return this.m.sub(a)._forceRed(this);
32443 };
32444
32445 Red.prototype.add = function add (a, b) {
32446 this._verify2(a, b);
32447
32448 var res = a.add(b);
32449 if (res.cmp(this.m) >= 0) {
32450 res.isub(this.m);
32451 }
32452 return res._forceRed(this);
32453 };
32454
32455 Red.prototype.iadd = function iadd (a, b) {
32456 this._verify2(a, b);
32457
32458 var res = a.iadd(b);
32459 if (res.cmp(this.m) >= 0) {
32460 res.isub(this.m);
32461 }
32462 return res;
32463 };
32464
32465 Red.prototype.sub = function sub (a, b) {
32466 this._verify2(a, b);
32467
32468 var res = a.sub(b);
32469 if (res.cmpn(0) < 0) {
32470 res.iadd(this.m);
32471 }
32472 return res._forceRed(this);
32473 };
32474
32475 Red.prototype.isub = function isub (a, b) {
32476 this._verify2(a, b);
32477
32478 var res = a.isub(b);
32479 if (res.cmpn(0) < 0) {
32480 res.iadd(this.m);
32481 }
32482 return res;
32483 };
32484
32485 Red.prototype.shl = function shl (a, num) {
32486 this._verify1(a);
32487 return this.imod(a.ushln(num));
32488 };
32489
32490 Red.prototype.imul = function imul (a, b) {
32491 this._verify2(a, b);
32492 return this.imod(a.imul(b));
32493 };
32494
32495 Red.prototype.mul = function mul (a, b) {
32496 this._verify2(a, b);
32497 return this.imod(a.mul(b));
32498 };
32499
32500 Red.prototype.isqr = function isqr (a) {
32501 return this.imul(a, a.clone());
32502 };
32503
32504 Red.prototype.sqr = function sqr (a) {
32505 return this.mul(a, a);
32506 };
32507
32508 Red.prototype.sqrt = function sqrt (a) {
32509 if (a.isZero()) return a.clone();
32510
32511 var mod3 = this.m.andln(3);
32512 assert(mod3 % 2 === 1);
32513
32514 // Fast case
32515 if (mod3 === 3) {
32516 var pow = this.m.add(new BN(1)).iushrn(2);
32517 return this.pow(a, pow);
32518 }
32519
32520 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32521 //
32522 // Find Q and S, that Q * 2 ^ S = (P - 1)
32523 var q = this.m.subn(1);
32524 var s = 0;
32525 while (!q.isZero() && q.andln(1) === 0) {
32526 s++;
32527 q.iushrn(1);
32528 }
32529 assert(!q.isZero());
32530
32531 var one = new BN(1).toRed(this);
32532 var nOne = one.redNeg();
32533
32534 // Find quadratic non-residue
32535 // NOTE: Max is such because of generalized Riemann hypothesis.
32536 var lpow = this.m.subn(1).iushrn(1);
32537 var z = this.m.bitLength();
32538 z = new BN(2 * z * z).toRed(this);
32539
32540 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32541 z.redIAdd(nOne);
32542 }
32543
32544 var c = this.pow(z, q);
32545 var r = this.pow(a, q.addn(1).iushrn(1));
32546 var t = this.pow(a, q);
32547 var m = s;
32548 while (t.cmp(one) !== 0) {
32549 var tmp = t;
32550 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32551 tmp = tmp.redSqr();
32552 }
32553 assert(i < m);
32554 var b = this.pow(c, new BN(1).iushln(m - i - 1));
32555
32556 r = r.redMul(b);
32557 c = b.redSqr();
32558 t = t.redMul(c);
32559 m = i;
32560 }
32561
32562 return r;
32563 };
32564
32565 Red.prototype.invm = function invm (a) {
32566 var inv = a._invmp(this.m);
32567 if (inv.negative !== 0) {
32568 inv.negative = 0;
32569 return this.imod(inv).redNeg();
32570 } else {
32571 return this.imod(inv);
32572 }
32573 };
32574
32575 Red.prototype.pow = function pow (a, num) {
32576 if (num.isZero()) return new BN(1);
32577 if (num.cmpn(1) === 0) return a.clone();
32578
32579 var windowSize = 4;
32580 var wnd = new Array(1 << windowSize);
32581 wnd[0] = new BN(1).toRed(this);
32582 wnd[1] = a;
32583 for (var i = 2; i < wnd.length; i++) {
32584 wnd[i] = this.mul(wnd[i - 1], a);
32585 }
32586
32587 var res = wnd[0];
32588 var current = 0;
32589 var currentLen = 0;
32590 var start = num.bitLength() % 26;
32591 if (start === 0) {
32592 start = 26;
32593 }
32594
32595 for (i = num.length - 1; i >= 0; i--) {
32596 var word = num.words[i];
32597 for (var j = start - 1; j >= 0; j--) {
32598 var bit = (word >> j) & 1;
32599 if (res !== wnd[0]) {
32600 res = this.sqr(res);
32601 }
32602
32603 if (bit === 0 && current === 0) {
32604 currentLen = 0;
32605 continue;
32606 }
32607
32608 current <<= 1;
32609 current |= bit;
32610 currentLen++;
32611 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
32612
32613 res = this.mul(res, wnd[current]);
32614 currentLen = 0;
32615 current = 0;
32616 }
32617 start = 26;
32618 }
32619
32620 return res;
32621 };
32622
32623 Red.prototype.convertTo = function convertTo (num) {
32624 var r = num.umod(this.m);
32625
32626 return r === num ? r.clone() : r;
32627 };
32628
32629 Red.prototype.convertFrom = function convertFrom (num) {
32630 var res = num.clone();
32631 res.red = null;
32632 return res;
32633 };
32634
32635 //
32636 // Montgomery method engine
32637 //
32638
32639 BN.mont = function mont (num) {
32640 return new Mont(num);
32641 };
32642
32643 function Mont (m) {
32644 Red.call(this, m);
32645
32646 this.shift = this.m.bitLength();
32647 if (this.shift % 26 !== 0) {
32648 this.shift += 26 - (this.shift % 26);
32649 }
32650
32651 this.r = new BN(1).iushln(this.shift);
32652 this.r2 = this.imod(this.r.sqr());
32653 this.rinv = this.r._invmp(this.m);
32654
32655 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32656 this.minv = this.minv.umod(this.r);
32657 this.minv = this.r.sub(this.minv);
32658 }
32659 inherits(Mont, Red);
32660
32661 Mont.prototype.convertTo = function convertTo (num) {
32662 return this.imod(num.ushln(this.shift));
32663 };
32664
32665 Mont.prototype.convertFrom = function convertFrom (num) {
32666 var r = this.imod(num.mul(this.rinv));
32667 r.red = null;
32668 return r;
32669 };
32670
32671 Mont.prototype.imul = function imul (a, b) {
32672 if (a.isZero() || b.isZero()) {
32673 a.words[0] = 0;
32674 a.length = 1;
32675 return a;
32676 }
32677
32678 var t = a.imul(b);
32679 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32680 var u = t.isub(c).iushrn(this.shift);
32681 var res = u;
32682
32683 if (u.cmp(this.m) >= 0) {
32684 res = u.isub(this.m);
32685 } else if (u.cmpn(0) < 0) {
32686 res = u.iadd(this.m);
32687 }
32688
32689 return res._forceRed(this);
32690 };
32691
32692 Mont.prototype.mul = function mul (a, b) {
32693 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
32694
32695 var t = a.mul(b);
32696 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32697 var u = t.isub(c).iushrn(this.shift);
32698 var res = u;
32699 if (u.cmp(this.m) >= 0) {
32700 res = u.isub(this.m);
32701 } else if (u.cmpn(0) < 0) {
32702 res = u.iadd(this.m);
32703 }
32704
32705 return res._forceRed(this);
32706 };
32707
32708 Mont.prototype.invm = function invm (a) {
32709 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32710 var res = this.imod(a._invmp(this.m).mul(this.r2));
32711 return res._forceRed(this);
32712 };
32713 })(typeof module === 'undefined' || module, this);
32714
32715 },{}],34:[function(require,module,exports){
32716 var r;
32717
32718 module.exports = function rand(len) {
32719 if (!r)
32720 r = new Rand(null);
32721
32722 return r.generate(len);
32723 };
32724
32725 function Rand(rand) {
32726 this.rand = rand;
32727 }
32728 module.exports.Rand = Rand;
32729
32730 Rand.prototype.generate = function generate(len) {
32731 return this._rand(len);
32732 };
32733
32734 if (typeof self === 'object') {
32735 if (self.crypto && self.crypto.getRandomValues) {
32736 // Modern browsers
32737 Rand.prototype._rand = function _rand(n) {
32738 var arr = new Uint8Array(n);
32739 self.crypto.getRandomValues(arr);
32740 return arr;
32741 };
32742 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32743 // IE
32744 Rand.prototype._rand = function _rand(n) {
32745 var arr = new Uint8Array(n);
32746 self.msCrypto.getRandomValues(arr);
32747 return arr;
32748 };
32749 } else {
32750 // Old junk
32751 Rand.prototype._rand = function() {
32752 throw new Error('Not implemented yet');
32753 };
32754 }
32755 } else {
32756 // Node.js or Web worker with no crypto support
32757 try {
32758 var crypto = require('crypto');
32759
32760 Rand.prototype._rand = function _rand(n) {
32761 return crypto.randomBytes(n);
32762 };
32763 } catch (e) {
32764 // Emulate crypto API using randy
32765 Rand.prototype._rand = function _rand(n) {
32766 var res = new Uint8Array(n);
32767 for (var i = 0; i < res.length; i++)
32768 res[i] = this.rand.getByte();
32769 return res;
32770 };
32771 }
32772 }
32773
32774 },{"crypto":3}],35:[function(require,module,exports){
32775 (function (Buffer){
32776 var Transform = require('stream').Transform
32777 var inherits = require('inherits')
32778 var StringDecoder = require('string_decoder').StringDecoder
32779 module.exports = CipherBase
32780 inherits(CipherBase, Transform)
32781 function CipherBase (hashMode) {
32782 Transform.call(this)
32783 this.hashMode = typeof hashMode === 'string'
32784 if (this.hashMode) {
32785 this[hashMode] = this._finalOrDigest
32786 } else {
32787 this.final = this._finalOrDigest
32788 }
32789 this._decoder = null
32790 this._encoding = null
32791 }
32792 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32793 if (typeof data === 'string') {
32794 data = new Buffer(data, inputEnc)
32795 }
32796 var outData = this._update(data)
32797 if (this.hashMode) {
32798 return this
32799 }
32800 if (outputEnc) {
32801 outData = this._toString(outData, outputEnc)
32802 }
32803 return outData
32804 }
32805
32806 CipherBase.prototype.setAutoPadding = function () {}
32807
32808 CipherBase.prototype.getAuthTag = function () {
32809 throw new Error('trying to get auth tag in unsupported state')
32810 }
32811
32812 CipherBase.prototype.setAuthTag = function () {
32813 throw new Error('trying to set auth tag in unsupported state')
32814 }
32815
32816 CipherBase.prototype.setAAD = function () {
32817 throw new Error('trying to set aad in unsupported state')
32818 }
32819
32820 CipherBase.prototype._transform = function (data, _, next) {
32821 var err
32822 try {
32823 if (this.hashMode) {
32824 this._update(data)
32825 } else {
32826 this.push(this._update(data))
32827 }
32828 } catch (e) {
32829 err = e
32830 } finally {
32831 next(err)
32832 }
32833 }
32834 CipherBase.prototype._flush = function (done) {
32835 var err
32836 try {
32837 this.push(this._final())
32838 } catch (e) {
32839 err = e
32840 } finally {
32841 done(err)
32842 }
32843 }
32844 CipherBase.prototype._finalOrDigest = function (outputEnc) {
32845 var outData = this._final() || new Buffer('')
32846 if (outputEnc) {
32847 outData = this._toString(outData, outputEnc, true)
32848 }
32849 return outData
32850 }
32851
32852 CipherBase.prototype._toString = function (value, enc, fin) {
32853 if (!this._decoder) {
32854 this._decoder = new StringDecoder(enc)
32855 this._encoding = enc
32856 }
32857 if (this._encoding !== enc) {
32858 throw new Error('can\'t switch encodings')
32859 }
32860 var out = this._decoder.write(value)
32861 if (fin) {
32862 out += this._decoder.end()
32863 }
32864 return out
32865 }
32866
32867 }).call(this,require("buffer").Buffer)
32868 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32869 (function (Buffer){
32870 'use strict';
32871 var inherits = require('inherits')
32872 var md5 = require('./md5')
32873 var rmd160 = require('ripemd160')
32874 var sha = require('sha.js')
32875
32876 var Base = require('cipher-base')
32877
32878 function HashNoConstructor(hash) {
32879 Base.call(this, 'digest')
32880
32881 this._hash = hash
32882 this.buffers = []
32883 }
32884
32885 inherits(HashNoConstructor, Base)
32886
32887 HashNoConstructor.prototype._update = function (data) {
32888 this.buffers.push(data)
32889 }
32890
32891 HashNoConstructor.prototype._final = function () {
32892 var buf = Buffer.concat(this.buffers)
32893 var r = this._hash(buf)
32894 this.buffers = null
32895
32896 return r
32897 }
32898
32899 function Hash(hash) {
32900 Base.call(this, 'digest')
32901
32902 this._hash = hash
32903 }
32904
32905 inherits(Hash, Base)
32906
32907 Hash.prototype._update = function (data) {
32908 this._hash.update(data)
32909 }
32910
32911 Hash.prototype._final = function () {
32912 return this._hash.digest()
32913 }
32914
32915 module.exports = function createHash (alg) {
32916 alg = alg.toLowerCase()
32917 if ('md5' === alg) return new HashNoConstructor(md5)
32918 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
32919
32920 return new Hash(sha(alg))
32921 }
32922
32923 }).call(this,require("buffer").Buffer)
32924 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
32925 (function (Buffer){
32926 'use strict';
32927 var intSize = 4;
32928 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
32929 var chrsz = 8;
32930
32931 function toArray(buf, bigEndian) {
32932 if ((buf.length % intSize) !== 0) {
32933 var len = buf.length + (intSize - (buf.length % intSize));
32934 buf = Buffer.concat([buf, zeroBuffer], len);
32935 }
32936
32937 var arr = [];
32938 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
32939 for (var i = 0; i < buf.length; i += intSize) {
32940 arr.push(fn.call(buf, i));
32941 }
32942 return arr;
32943 }
32944
32945 function toBuffer(arr, size, bigEndian) {
32946 var buf = new Buffer(size);
32947 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
32948 for (var i = 0; i < arr.length; i++) {
32949 fn.call(buf, arr[i], i * 4, true);
32950 }
32951 return buf;
32952 }
32953
32954 function hash(buf, fn, hashSize, bigEndian) {
32955 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
32956 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
32957 return toBuffer(arr, hashSize, bigEndian);
32958 }
32959 exports.hash = hash;
32960 }).call(this,require("buffer").Buffer)
32961 },{"buffer":5}],38:[function(require,module,exports){
32962 'use strict';
32963 /*
32964 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
32965 * Digest Algorithm, as defined in RFC 1321.
32966 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
32967 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
32968 * Distributed under the BSD License
32969 * See http://pajhome.org.uk/crypt/md5 for more info.
32970 */
32971
32972 var helpers = require('./helpers');
32973
32974 /*
32975 * Calculate the MD5 of an array of little-endian words, and a bit length
32976 */
32977 function core_md5(x, len)
32978 {
32979 /* append padding */
32980 x[len >> 5] |= 0x80 << ((len) % 32);
32981 x[(((len + 64) >>> 9) << 4) + 14] = len;
32982
32983 var a = 1732584193;
32984 var b = -271733879;
32985 var c = -1732584194;
32986 var d = 271733878;
32987
32988 for(var i = 0; i < x.length; i += 16)
32989 {
32990 var olda = a;
32991 var oldb = b;
32992 var oldc = c;
32993 var oldd = d;
32994
32995 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
32996 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
32997 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
32998 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
32999 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
33000 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
33001 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
33002 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
33003 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
33004 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
33005 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
33006 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
33007 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
33008 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
33009 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
33010 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
33011
33012 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
33013 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
33014 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
33015 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
33016 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
33017 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
33018 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
33019 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
33020 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
33021 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
33022 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
33023 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
33024 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
33025 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
33026 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
33027 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
33028
33029 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
33030 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
33031 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
33032 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
33033 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
33034 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
33035 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
33036 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
33037 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
33038 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
33039 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
33040 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
33041 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
33042 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
33043 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
33044 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
33045
33046 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
33047 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
33048 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
33049 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33050 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33051 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33052 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33053 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33054 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33055 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33056 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33057 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33058 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33059 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33060 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33061 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
33062
33063 a = safe_add(a, olda);
33064 b = safe_add(b, oldb);
33065 c = safe_add(c, oldc);
33066 d = safe_add(d, oldd);
33067 }
33068 return Array(a, b, c, d);
33069
33070 }
33071
33072 /*
33073 * These functions implement the four basic operations the algorithm uses.
33074 */
33075 function md5_cmn(q, a, b, x, s, t)
33076 {
33077 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
33078 }
33079 function md5_ff(a, b, c, d, x, s, t)
33080 {
33081 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
33082 }
33083 function md5_gg(a, b, c, d, x, s, t)
33084 {
33085 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
33086 }
33087 function md5_hh(a, b, c, d, x, s, t)
33088 {
33089 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33090 }
33091 function md5_ii(a, b, c, d, x, s, t)
33092 {
33093 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
33094 }
33095
33096 /*
33097 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33098 * to work around bugs in some JS interpreters.
33099 */
33100 function safe_add(x, y)
33101 {
33102 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33103 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33104 return (msw << 16) | (lsw & 0xFFFF);
33105 }
33106
33107 /*
33108 * Bitwise rotate a 32-bit number to the left.
33109 */
33110 function bit_rol(num, cnt)
33111 {
33112 return (num << cnt) | (num >>> (32 - cnt));
33113 }
33114
33115 module.exports = function md5(buf) {
33116 return helpers.hash(buf, core_md5, 16);
33117 };
33118 },{"./helpers":37}],39:[function(require,module,exports){
33119 'use strict';
33120
33121 var elliptic = exports;
33122
33123 elliptic.version = require('../package.json').version;
33124 elliptic.utils = require('./elliptic/utils');
33125 elliptic.rand = require('brorand');
33126 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33127 elliptic.curve = require('./elliptic/curve');
33128 elliptic.curves = require('./elliptic/curves');
33129
33130 // Protocols
33131 elliptic.ec = require('./elliptic/ec');
33132 elliptic.eddsa = require('./elliptic/eddsa');
33133
33134 },{"../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){
33135 'use strict';
33136
33137 var BN = require('bn.js');
33138 var elliptic = require('../../elliptic');
33139 var utils = elliptic.utils;
33140 var getNAF = utils.getNAF;
33141 var getJSF = utils.getJSF;
33142 var assert = utils.assert;
33143
33144 function BaseCurve(type, conf) {
33145 this.type = type;
33146 this.p = new BN(conf.p, 16);
33147
33148 // Use Montgomery, when there is no fast reduction for the prime
33149 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33150
33151 // Useful for many curves
33152 this.zero = new BN(0).toRed(this.red);
33153 this.one = new BN(1).toRed(this.red);
33154 this.two = new BN(2).toRed(this.red);
33155
33156 // Curve configuration, optional
33157 this.n = conf.n && new BN(conf.n, 16);
33158 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33159
33160 // Temporary arrays
33161 this._wnafT1 = new Array(4);
33162 this._wnafT2 = new Array(4);
33163 this._wnafT3 = new Array(4);
33164 this._wnafT4 = new Array(4);
33165
33166 // Generalized Greg Maxwell's trick
33167 var adjustCount = this.n && this.p.div(this.n);
33168 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33169 this.redN = null;
33170 } else {
33171 this._maxwellTrick = true;
33172 this.redN = this.n.toRed(this.red);
33173 }
33174 }
33175 module.exports = BaseCurve;
33176
33177 BaseCurve.prototype.point = function point() {
33178 throw new Error('Not implemented');
33179 };
33180
33181 BaseCurve.prototype.validate = function validate() {
33182 throw new Error('Not implemented');
33183 };
33184
33185 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33186 assert(p.precomputed);
33187 var doubles = p._getDoubles();
33188
33189 var naf = getNAF(k, 1);
33190 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33191 I /= 3;
33192
33193 // Translate into more windowed form
33194 var repr = [];
33195 for (var j = 0; j < naf.length; j += doubles.step) {
33196 var nafW = 0;
33197 for (var k = j + doubles.step - 1; k >= j; k--)
33198 nafW = (nafW << 1) + naf[k];
33199 repr.push(nafW);
33200 }
33201
33202 var a = this.jpoint(null, null, null);
33203 var b = this.jpoint(null, null, null);
33204 for (var i = I; i > 0; i--) {
33205 for (var j = 0; j < repr.length; j++) {
33206 var nafW = repr[j];
33207 if (nafW === i)
33208 b = b.mixedAdd(doubles.points[j]);
33209 else if (nafW === -i)
33210 b = b.mixedAdd(doubles.points[j].neg());
33211 }
33212 a = a.add(b);
33213 }
33214 return a.toP();
33215 };
33216
33217 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33218 var w = 4;
33219
33220 // Precompute window
33221 var nafPoints = p._getNAFPoints(w);
33222 w = nafPoints.wnd;
33223 var wnd = nafPoints.points;
33224
33225 // Get NAF form
33226 var naf = getNAF(k, w);
33227
33228 // Add `this`*(N+1) for every w-NAF index
33229 var acc = this.jpoint(null, null, null);
33230 for (var i = naf.length - 1; i >= 0; i--) {
33231 // Count zeroes
33232 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33233 k++;
33234 if (i >= 0)
33235 k++;
33236 acc = acc.dblp(k);
33237
33238 if (i < 0)
33239 break;
33240 var z = naf[i];
33241 assert(z !== 0);
33242 if (p.type === 'affine') {
33243 // J +- P
33244 if (z > 0)
33245 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33246 else
33247 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33248 } else {
33249 // J +- J
33250 if (z > 0)
33251 acc = acc.add(wnd[(z - 1) >> 1]);
33252 else
33253 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33254 }
33255 }
33256 return p.type === 'affine' ? acc.toP() : acc;
33257 };
33258
33259 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33260 points,
33261 coeffs,
33262 len,
33263 jacobianResult) {
33264 var wndWidth = this._wnafT1;
33265 var wnd = this._wnafT2;
33266 var naf = this._wnafT3;
33267
33268 // Fill all arrays
33269 var max = 0;
33270 for (var i = 0; i < len; i++) {
33271 var p = points[i];
33272 var nafPoints = p._getNAFPoints(defW);
33273 wndWidth[i] = nafPoints.wnd;
33274 wnd[i] = nafPoints.points;
33275 }
33276
33277 // Comb small window NAFs
33278 for (var i = len - 1; i >= 1; i -= 2) {
33279 var a = i - 1;
33280 var b = i;
33281 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33282 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33283 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33284 max = Math.max(naf[a].length, max);
33285 max = Math.max(naf[b].length, max);
33286 continue;
33287 }
33288
33289 var comb = [
33290 points[a], /* 1 */
33291 null, /* 3 */
33292 null, /* 5 */
33293 points[b] /* 7 */
33294 ];
33295
33296 // Try to avoid Projective points, if possible
33297 if (points[a].y.cmp(points[b].y) === 0) {
33298 comb[1] = points[a].add(points[b]);
33299 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33300 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33301 comb[1] = points[a].toJ().mixedAdd(points[b]);
33302 comb[2] = points[a].add(points[b].neg());
33303 } else {
33304 comb[1] = points[a].toJ().mixedAdd(points[b]);
33305 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33306 }
33307
33308 var index = [
33309 -3, /* -1 -1 */
33310 -1, /* -1 0 */
33311 -5, /* -1 1 */
33312 -7, /* 0 -1 */
33313 0, /* 0 0 */
33314 7, /* 0 1 */
33315 5, /* 1 -1 */
33316 1, /* 1 0 */
33317 3 /* 1 1 */
33318 ];
33319
33320 var jsf = getJSF(coeffs[a], coeffs[b]);
33321 max = Math.max(jsf[0].length, max);
33322 naf[a] = new Array(max);
33323 naf[b] = new Array(max);
33324 for (var j = 0; j < max; j++) {
33325 var ja = jsf[0][j] | 0;
33326 var jb = jsf[1][j] | 0;
33327
33328 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33329 naf[b][j] = 0;
33330 wnd[a] = comb;
33331 }
33332 }
33333
33334 var acc = this.jpoint(null, null, null);
33335 var tmp = this._wnafT4;
33336 for (var i = max; i >= 0; i--) {
33337 var k = 0;
33338
33339 while (i >= 0) {
33340 var zero = true;
33341 for (var j = 0; j < len; j++) {
33342 tmp[j] = naf[j][i] | 0;
33343 if (tmp[j] !== 0)
33344 zero = false;
33345 }
33346 if (!zero)
33347 break;
33348 k++;
33349 i--;
33350 }
33351 if (i >= 0)
33352 k++;
33353 acc = acc.dblp(k);
33354 if (i < 0)
33355 break;
33356
33357 for (var j = 0; j < len; j++) {
33358 var z = tmp[j];
33359 var p;
33360 if (z === 0)
33361 continue;
33362 else if (z > 0)
33363 p = wnd[j][(z - 1) >> 1];
33364 else if (z < 0)
33365 p = wnd[j][(-z - 1) >> 1].neg();
33366
33367 if (p.type === 'affine')
33368 acc = acc.mixedAdd(p);
33369 else
33370 acc = acc.add(p);
33371 }
33372 }
33373 // Zeroify references
33374 for (var i = 0; i < len; i++)
33375 wnd[i] = null;
33376
33377 if (jacobianResult)
33378 return acc;
33379 else
33380 return acc.toP();
33381 };
33382
33383 function BasePoint(curve, type) {
33384 this.curve = curve;
33385 this.type = type;
33386 this.precomputed = null;
33387 }
33388 BaseCurve.BasePoint = BasePoint;
33389
33390 BasePoint.prototype.eq = function eq(/*other*/) {
33391 throw new Error('Not implemented');
33392 };
33393
33394 BasePoint.prototype.validate = function validate() {
33395 return this.curve.validate(this);
33396 };
33397
33398 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33399 bytes = utils.toArray(bytes, enc);
33400
33401 var len = this.p.byteLength();
33402
33403 // uncompressed, hybrid-odd, hybrid-even
33404 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33405 bytes.length - 1 === 2 * len) {
33406 if (bytes[0] === 0x06)
33407 assert(bytes[bytes.length - 1] % 2 === 0);
33408 else if (bytes[0] === 0x07)
33409 assert(bytes[bytes.length - 1] % 2 === 1);
33410
33411 var res = this.point(bytes.slice(1, 1 + len),
33412 bytes.slice(1 + len, 1 + 2 * len));
33413
33414 return res;
33415 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33416 bytes.length - 1 === len) {
33417 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
33418 }
33419 throw new Error('Unknown point format');
33420 };
33421
33422 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33423 return this.encode(enc, true);
33424 };
33425
33426 BasePoint.prototype._encode = function _encode(compact) {
33427 var len = this.curve.p.byteLength();
33428 var x = this.getX().toArray('be', len);
33429
33430 if (compact)
33431 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33432
33433 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33434 };
33435
33436 BasePoint.prototype.encode = function encode(enc, compact) {
33437 return utils.encode(this._encode(compact), enc);
33438 };
33439
33440 BasePoint.prototype.precompute = function precompute(power) {
33441 if (this.precomputed)
33442 return this;
33443
33444 var precomputed = {
33445 doubles: null,
33446 naf: null,
33447 beta: null
33448 };
33449 precomputed.naf = this._getNAFPoints(8);
33450 precomputed.doubles = this._getDoubles(4, power);
33451 precomputed.beta = this._getBeta();
33452 this.precomputed = precomputed;
33453
33454 return this;
33455 };
33456
33457 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33458 if (!this.precomputed)
33459 return false;
33460
33461 var doubles = this.precomputed.doubles;
33462 if (!doubles)
33463 return false;
33464
33465 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33466 };
33467
33468 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33469 if (this.precomputed && this.precomputed.doubles)
33470 return this.precomputed.doubles;
33471
33472 var doubles = [ this ];
33473 var acc = this;
33474 for (var i = 0; i < power; i += step) {
33475 for (var j = 0; j < step; j++)
33476 acc = acc.dbl();
33477 doubles.push(acc);
33478 }
33479 return {
33480 step: step,
33481 points: doubles
33482 };
33483 };
33484
33485 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33486 if (this.precomputed && this.precomputed.naf)
33487 return this.precomputed.naf;
33488
33489 var res = [ this ];
33490 var max = (1 << wnd) - 1;
33491 var dbl = max === 1 ? null : this.dbl();
33492 for (var i = 1; i < max; i++)
33493 res[i] = res[i - 1].add(dbl);
33494 return {
33495 wnd: wnd,
33496 points: res
33497 };
33498 };
33499
33500 BasePoint.prototype._getBeta = function _getBeta() {
33501 return null;
33502 };
33503
33504 BasePoint.prototype.dblp = function dblp(k) {
33505 var r = this;
33506 for (var i = 0; i < k; i++)
33507 r = r.dbl();
33508 return r;
33509 };
33510
33511 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33512 'use strict';
33513
33514 var curve = require('../curve');
33515 var elliptic = require('../../elliptic');
33516 var BN = require('bn.js');
33517 var inherits = require('inherits');
33518 var Base = curve.base;
33519
33520 var assert = elliptic.utils.assert;
33521
33522 function EdwardsCurve(conf) {
33523 // NOTE: Important as we are creating point in Base.call()
33524 this.twisted = (conf.a | 0) !== 1;
33525 this.mOneA = this.twisted && (conf.a | 0) === -1;
33526 this.extended = this.mOneA;
33527
33528 Base.call(this, 'edwards', conf);
33529
33530 this.a = new BN(conf.a, 16).umod(this.red.m);
33531 this.a = this.a.toRed(this.red);
33532 this.c = new BN(conf.c, 16).toRed(this.red);
33533 this.c2 = this.c.redSqr();
33534 this.d = new BN(conf.d, 16).toRed(this.red);
33535 this.dd = this.d.redAdd(this.d);
33536
33537 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33538 this.oneC = (conf.c | 0) === 1;
33539 }
33540 inherits(EdwardsCurve, Base);
33541 module.exports = EdwardsCurve;
33542
33543 EdwardsCurve.prototype._mulA = function _mulA(num) {
33544 if (this.mOneA)
33545 return num.redNeg();
33546 else
33547 return this.a.redMul(num);
33548 };
33549
33550 EdwardsCurve.prototype._mulC = function _mulC(num) {
33551 if (this.oneC)
33552 return num;
33553 else
33554 return this.c.redMul(num);
33555 };
33556
33557 // Just for compatibility with Short curve
33558 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33559 return this.point(x, y, z, t);
33560 };
33561
33562 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33563 x = new BN(x, 16);
33564 if (!x.red)
33565 x = x.toRed(this.red);
33566
33567 var x2 = x.redSqr();
33568 var rhs = this.c2.redSub(this.a.redMul(x2));
33569 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33570
33571 var y2 = rhs.redMul(lhs.redInvm());
33572 var y = y2.redSqrt();
33573 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33574 throw new Error('invalid point');
33575
33576 var isOdd = y.fromRed().isOdd();
33577 if (odd && !isOdd || !odd && isOdd)
33578 y = y.redNeg();
33579
33580 return this.point(x, y);
33581 };
33582
33583 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33584 y = new BN(y, 16);
33585 if (!y.red)
33586 y = y.toRed(this.red);
33587
33588 // x^2 = (y^2 - 1) / (d y^2 + 1)
33589 var y2 = y.redSqr();
33590 var lhs = y2.redSub(this.one);
33591 var rhs = y2.redMul(this.d).redAdd(this.one);
33592 var x2 = lhs.redMul(rhs.redInvm());
33593
33594 if (x2.cmp(this.zero) === 0) {
33595 if (odd)
33596 throw new Error('invalid point');
33597 else
33598 return this.point(this.zero, y);
33599 }
33600
33601 var x = x2.redSqrt();
33602 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33603 throw new Error('invalid point');
33604
33605 if (x.isOdd() !== odd)
33606 x = x.redNeg();
33607
33608 return this.point(x, y);
33609 };
33610
33611 EdwardsCurve.prototype.validate = function validate(point) {
33612 if (point.isInfinity())
33613 return true;
33614
33615 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33616 point.normalize();
33617
33618 var x2 = point.x.redSqr();
33619 var y2 = point.y.redSqr();
33620 var lhs = x2.redMul(this.a).redAdd(y2);
33621 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
33622
33623 return lhs.cmp(rhs) === 0;
33624 };
33625
33626 function Point(curve, x, y, z, t) {
33627 Base.BasePoint.call(this, curve, 'projective');
33628 if (x === null && y === null && z === null) {
33629 this.x = this.curve.zero;
33630 this.y = this.curve.one;
33631 this.z = this.curve.one;
33632 this.t = this.curve.zero;
33633 this.zOne = true;
33634 } else {
33635 this.x = new BN(x, 16);
33636 this.y = new BN(y, 16);
33637 this.z = z ? new BN(z, 16) : this.curve.one;
33638 this.t = t && new BN(t, 16);
33639 if (!this.x.red)
33640 this.x = this.x.toRed(this.curve.red);
33641 if (!this.y.red)
33642 this.y = this.y.toRed(this.curve.red);
33643 if (!this.z.red)
33644 this.z = this.z.toRed(this.curve.red);
33645 if (this.t && !this.t.red)
33646 this.t = this.t.toRed(this.curve.red);
33647 this.zOne = this.z === this.curve.one;
33648
33649 // Use extended coordinates
33650 if (this.curve.extended && !this.t) {
33651 this.t = this.x.redMul(this.y);
33652 if (!this.zOne)
33653 this.t = this.t.redMul(this.z.redInvm());
33654 }
33655 }
33656 }
33657 inherits(Point, Base.BasePoint);
33658
33659 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33660 return Point.fromJSON(this, obj);
33661 };
33662
33663 EdwardsCurve.prototype.point = function point(x, y, z, t) {
33664 return new Point(this, x, y, z, t);
33665 };
33666
33667 Point.fromJSON = function fromJSON(curve, obj) {
33668 return new Point(curve, obj[0], obj[1], obj[2]);
33669 };
33670
33671 Point.prototype.inspect = function inspect() {
33672 if (this.isInfinity())
33673 return '<EC Point Infinity>';
33674 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33675 ' y: ' + this.y.fromRed().toString(16, 2) +
33676 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33677 };
33678
33679 Point.prototype.isInfinity = function isInfinity() {
33680 // XXX This code assumes that zero is always zero in red
33681 return this.x.cmpn(0) === 0 &&
33682 this.y.cmp(this.z) === 0;
33683 };
33684
33685 Point.prototype._extDbl = function _extDbl() {
33686 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33687 // #doubling-dbl-2008-hwcd
33688 // 4M + 4S
33689
33690 // A = X1^2
33691 var a = this.x.redSqr();
33692 // B = Y1^2
33693 var b = this.y.redSqr();
33694 // C = 2 * Z1^2
33695 var c = this.z.redSqr();
33696 c = c.redIAdd(c);
33697 // D = a * A
33698 var d = this.curve._mulA(a);
33699 // E = (X1 + Y1)^2 - A - B
33700 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33701 // G = D + B
33702 var g = d.redAdd(b);
33703 // F = G - C
33704 var f = g.redSub(c);
33705 // H = D - B
33706 var h = d.redSub(b);
33707 // X3 = E * F
33708 var nx = e.redMul(f);
33709 // Y3 = G * H
33710 var ny = g.redMul(h);
33711 // T3 = E * H
33712 var nt = e.redMul(h);
33713 // Z3 = F * G
33714 var nz = f.redMul(g);
33715 return this.curve.point(nx, ny, nz, nt);
33716 };
33717
33718 Point.prototype._projDbl = function _projDbl() {
33719 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33720 // #doubling-dbl-2008-bbjlp
33721 // #doubling-dbl-2007-bl
33722 // and others
33723 // Generally 3M + 4S or 2M + 4S
33724
33725 // B = (X1 + Y1)^2
33726 var b = this.x.redAdd(this.y).redSqr();
33727 // C = X1^2
33728 var c = this.x.redSqr();
33729 // D = Y1^2
33730 var d = this.y.redSqr();
33731
33732 var nx;
33733 var ny;
33734 var nz;
33735 if (this.curve.twisted) {
33736 // E = a * C
33737 var e = this.curve._mulA(c);
33738 // F = E + D
33739 var f = e.redAdd(d);
33740 if (this.zOne) {
33741 // X3 = (B - C - D) * (F - 2)
33742 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33743 // Y3 = F * (E - D)
33744 ny = f.redMul(e.redSub(d));
33745 // Z3 = F^2 - 2 * F
33746 nz = f.redSqr().redSub(f).redSub(f);
33747 } else {
33748 // H = Z1^2
33749 var h = this.z.redSqr();
33750 // J = F - 2 * H
33751 var j = f.redSub(h).redISub(h);
33752 // X3 = (B-C-D)*J
33753 nx = b.redSub(c).redISub(d).redMul(j);
33754 // Y3 = F * (E - D)
33755 ny = f.redMul(e.redSub(d));
33756 // Z3 = F * J
33757 nz = f.redMul(j);
33758 }
33759 } else {
33760 // E = C + D
33761 var e = c.redAdd(d);
33762 // H = (c * Z1)^2
33763 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33764 // J = E - 2 * H
33765 var j = e.redSub(h).redSub(h);
33766 // X3 = c * (B - E) * J
33767 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33768 // Y3 = c * E * (C - D)
33769 ny = this.curve._mulC(e).redMul(c.redISub(d));
33770 // Z3 = E * J
33771 nz = e.redMul(j);
33772 }
33773 return this.curve.point(nx, ny, nz);
33774 };
33775
33776 Point.prototype.dbl = function dbl() {
33777 if (this.isInfinity())
33778 return this;
33779
33780 // Double in extended coordinates
33781 if (this.curve.extended)
33782 return this._extDbl();
33783 else
33784 return this._projDbl();
33785 };
33786
33787 Point.prototype._extAdd = function _extAdd(p) {
33788 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33789 // #addition-add-2008-hwcd-3
33790 // 8M
33791
33792 // A = (Y1 - X1) * (Y2 - X2)
33793 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33794 // B = (Y1 + X1) * (Y2 + X2)
33795 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33796 // C = T1 * k * T2
33797 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33798 // D = Z1 * 2 * Z2
33799 var d = this.z.redMul(p.z.redAdd(p.z));
33800 // E = B - A
33801 var e = b.redSub(a);
33802 // F = D - C
33803 var f = d.redSub(c);
33804 // G = D + C
33805 var g = d.redAdd(c);
33806 // H = B + A
33807 var h = b.redAdd(a);
33808 // X3 = E * F
33809 var nx = e.redMul(f);
33810 // Y3 = G * H
33811 var ny = g.redMul(h);
33812 // T3 = E * H
33813 var nt = e.redMul(h);
33814 // Z3 = F * G
33815 var nz = f.redMul(g);
33816 return this.curve.point(nx, ny, nz, nt);
33817 };
33818
33819 Point.prototype._projAdd = function _projAdd(p) {
33820 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33821 // #addition-add-2008-bbjlp
33822 // #addition-add-2007-bl
33823 // 10M + 1S
33824
33825 // A = Z1 * Z2
33826 var a = this.z.redMul(p.z);
33827 // B = A^2
33828 var b = a.redSqr();
33829 // C = X1 * X2
33830 var c = this.x.redMul(p.x);
33831 // D = Y1 * Y2
33832 var d = this.y.redMul(p.y);
33833 // E = d * C * D
33834 var e = this.curve.d.redMul(c).redMul(d);
33835 // F = B - E
33836 var f = b.redSub(e);
33837 // G = B + E
33838 var g = b.redAdd(e);
33839 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33840 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33841 var nx = a.redMul(f).redMul(tmp);
33842 var ny;
33843 var nz;
33844 if (this.curve.twisted) {
33845 // Y3 = A * G * (D - a * C)
33846 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33847 // Z3 = F * G
33848 nz = f.redMul(g);
33849 } else {
33850 // Y3 = A * G * (D - C)
33851 ny = a.redMul(g).redMul(d.redSub(c));
33852 // Z3 = c * F * G
33853 nz = this.curve._mulC(f).redMul(g);
33854 }
33855 return this.curve.point(nx, ny, nz);
33856 };
33857
33858 Point.prototype.add = function add(p) {
33859 if (this.isInfinity())
33860 return p;
33861 if (p.isInfinity())
33862 return this;
33863
33864 if (this.curve.extended)
33865 return this._extAdd(p);
33866 else
33867 return this._projAdd(p);
33868 };
33869
33870 Point.prototype.mul = function mul(k) {
33871 if (this._hasDoubles(k))
33872 return this.curve._fixedNafMul(this, k);
33873 else
33874 return this.curve._wnafMul(this, k);
33875 };
33876
33877 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33878 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33879 };
33880
33881 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33882 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33883 };
33884
33885 Point.prototype.normalize = function normalize() {
33886 if (this.zOne)
33887 return this;
33888
33889 // Normalize coordinates
33890 var zi = this.z.redInvm();
33891 this.x = this.x.redMul(zi);
33892 this.y = this.y.redMul(zi);
33893 if (this.t)
33894 this.t = this.t.redMul(zi);
33895 this.z = this.curve.one;
33896 this.zOne = true;
33897 return this;
33898 };
33899
33900 Point.prototype.neg = function neg() {
33901 return this.curve.point(this.x.redNeg(),
33902 this.y,
33903 this.z,
33904 this.t && this.t.redNeg());
33905 };
33906
33907 Point.prototype.getX = function getX() {
33908 this.normalize();
33909 return this.x.fromRed();
33910 };
33911
33912 Point.prototype.getY = function getY() {
33913 this.normalize();
33914 return this.y.fromRed();
33915 };
33916
33917 Point.prototype.eq = function eq(other) {
33918 return this === other ||
33919 this.getX().cmp(other.getX()) === 0 &&
33920 this.getY().cmp(other.getY()) === 0;
33921 };
33922
33923 Point.prototype.eqXToP = function eqXToP(x) {
33924 var rx = x.toRed(this.curve.red).redMul(this.z);
33925 if (this.x.cmp(rx) === 0)
33926 return true;
33927
33928 var xc = x.clone();
33929 var t = this.curve.redN.redMul(this.z);
33930 for (;;) {
33931 xc.iadd(this.curve.n);
33932 if (xc.cmp(this.curve.p) >= 0)
33933 return false;
33934
33935 rx.redIAdd(t);
33936 if (this.x.cmp(rx) === 0)
33937 return true;
33938 }
33939 return false;
33940 };
33941
33942 // Compatibility with BaseCurve
33943 Point.prototype.toP = Point.prototype.normalize;
33944 Point.prototype.mixedAdd = Point.prototype.add;
33945
33946 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
33947 'use strict';
33948
33949 var curve = exports;
33950
33951 curve.base = require('./base');
33952 curve.short = require('./short');
33953 curve.mont = require('./mont');
33954 curve.edwards = require('./edwards');
33955
33956 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
33957 'use strict';
33958
33959 var curve = require('../curve');
33960 var BN = require('bn.js');
33961 var inherits = require('inherits');
33962 var Base = curve.base;
33963
33964 var elliptic = require('../../elliptic');
33965 var utils = elliptic.utils;
33966
33967 function MontCurve(conf) {
33968 Base.call(this, 'mont', conf);
33969
33970 this.a = new BN(conf.a, 16).toRed(this.red);
33971 this.b = new BN(conf.b, 16).toRed(this.red);
33972 this.i4 = new BN(4).toRed(this.red).redInvm();
33973 this.two = new BN(2).toRed(this.red);
33974 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
33975 }
33976 inherits(MontCurve, Base);
33977 module.exports = MontCurve;
33978
33979 MontCurve.prototype.validate = function validate(point) {
33980 var x = point.normalize().x;
33981 var x2 = x.redSqr();
33982 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
33983 var y = rhs.redSqrt();
33984
33985 return y.redSqr().cmp(rhs) === 0;
33986 };
33987
33988 function Point(curve, x, z) {
33989 Base.BasePoint.call(this, curve, 'projective');
33990 if (x === null && z === null) {
33991 this.x = this.curve.one;
33992 this.z = this.curve.zero;
33993 } else {
33994 this.x = new BN(x, 16);
33995 this.z = new BN(z, 16);
33996 if (!this.x.red)
33997 this.x = this.x.toRed(this.curve.red);
33998 if (!this.z.red)
33999 this.z = this.z.toRed(this.curve.red);
34000 }
34001 }
34002 inherits(Point, Base.BasePoint);
34003
34004 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
34005 return this.point(utils.toArray(bytes, enc), 1);
34006 };
34007
34008 MontCurve.prototype.point = function point(x, z) {
34009 return new Point(this, x, z);
34010 };
34011
34012 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
34013 return Point.fromJSON(this, obj);
34014 };
34015
34016 Point.prototype.precompute = function precompute() {
34017 // No-op
34018 };
34019
34020 Point.prototype._encode = function _encode() {
34021 return this.getX().toArray('be', this.curve.p.byteLength());
34022 };
34023
34024 Point.fromJSON = function fromJSON(curve, obj) {
34025 return new Point(curve, obj[0], obj[1] || curve.one);
34026 };
34027
34028 Point.prototype.inspect = function inspect() {
34029 if (this.isInfinity())
34030 return '<EC Point Infinity>';
34031 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34032 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
34033 };
34034
34035 Point.prototype.isInfinity = function isInfinity() {
34036 // XXX This code assumes that zero is always zero in red
34037 return this.z.cmpn(0) === 0;
34038 };
34039
34040 Point.prototype.dbl = function dbl() {
34041 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
34042 // 2M + 2S + 4A
34043
34044 // A = X1 + Z1
34045 var a = this.x.redAdd(this.z);
34046 // AA = A^2
34047 var aa = a.redSqr();
34048 // B = X1 - Z1
34049 var b = this.x.redSub(this.z);
34050 // BB = B^2
34051 var bb = b.redSqr();
34052 // C = AA - BB
34053 var c = aa.redSub(bb);
34054 // X3 = AA * BB
34055 var nx = aa.redMul(bb);
34056 // Z3 = C * (BB + A24 * C)
34057 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34058 return this.curve.point(nx, nz);
34059 };
34060
34061 Point.prototype.add = function add() {
34062 throw new Error('Not supported on Montgomery curve');
34063 };
34064
34065 Point.prototype.diffAdd = function diffAdd(p, diff) {
34066 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34067 // 4M + 2S + 6A
34068
34069 // A = X2 + Z2
34070 var a = this.x.redAdd(this.z);
34071 // B = X2 - Z2
34072 var b = this.x.redSub(this.z);
34073 // C = X3 + Z3
34074 var c = p.x.redAdd(p.z);
34075 // D = X3 - Z3
34076 var d = p.x.redSub(p.z);
34077 // DA = D * A
34078 var da = d.redMul(a);
34079 // CB = C * B
34080 var cb = c.redMul(b);
34081 // X5 = Z1 * (DA + CB)^2
34082 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34083 // Z5 = X1 * (DA - CB)^2
34084 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34085 return this.curve.point(nx, nz);
34086 };
34087
34088 Point.prototype.mul = function mul(k) {
34089 var t = k.clone();
34090 var a = this; // (N / 2) * Q + Q
34091 var b = this.curve.point(null, null); // (N / 2) * Q
34092 var c = this; // Q
34093
34094 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34095 bits.push(t.andln(1));
34096
34097 for (var i = bits.length - 1; i >= 0; i--) {
34098 if (bits[i] === 0) {
34099 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34100 a = a.diffAdd(b, c);
34101 // N * Q = 2 * ((N / 2) * Q + Q))
34102 b = b.dbl();
34103 } else {
34104 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34105 b = a.diffAdd(b, c);
34106 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34107 a = a.dbl();
34108 }
34109 }
34110 return b;
34111 };
34112
34113 Point.prototype.mulAdd = function mulAdd() {
34114 throw new Error('Not supported on Montgomery curve');
34115 };
34116
34117 Point.prototype.jumlAdd = function jumlAdd() {
34118 throw new Error('Not supported on Montgomery curve');
34119 };
34120
34121 Point.prototype.eq = function eq(other) {
34122 return this.getX().cmp(other.getX()) === 0;
34123 };
34124
34125 Point.prototype.normalize = function normalize() {
34126 this.x = this.x.redMul(this.z.redInvm());
34127 this.z = this.curve.one;
34128 return this;
34129 };
34130
34131 Point.prototype.getX = function getX() {
34132 // Normalize coordinates
34133 this.normalize();
34134
34135 return this.x.fromRed();
34136 };
34137
34138 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
34139 'use strict';
34140
34141 var curve = require('../curve');
34142 var elliptic = require('../../elliptic');
34143 var BN = require('bn.js');
34144 var inherits = require('inherits');
34145 var Base = curve.base;
34146
34147 var assert = elliptic.utils.assert;
34148
34149 function ShortCurve(conf) {
34150 Base.call(this, 'short', conf);
34151
34152 this.a = new BN(conf.a, 16).toRed(this.red);
34153 this.b = new BN(conf.b, 16).toRed(this.red);
34154 this.tinv = this.two.redInvm();
34155
34156 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34157 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
34158
34159 // If the curve is endomorphic, precalculate beta and lambda
34160 this.endo = this._getEndomorphism(conf);
34161 this._endoWnafT1 = new Array(4);
34162 this._endoWnafT2 = new Array(4);
34163 }
34164 inherits(ShortCurve, Base);
34165 module.exports = ShortCurve;
34166
34167 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34168 // No efficient endomorphism
34169 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34170 return;
34171
34172 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34173 var beta;
34174 var lambda;
34175 if (conf.beta) {
34176 beta = new BN(conf.beta, 16).toRed(this.red);
34177 } else {
34178 var betas = this._getEndoRoots(this.p);
34179 // Choose the smallest beta
34180 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34181 beta = beta.toRed(this.red);
34182 }
34183 if (conf.lambda) {
34184 lambda = new BN(conf.lambda, 16);
34185 } else {
34186 // Choose the lambda that is matching selected beta
34187 var lambdas = this._getEndoRoots(this.n);
34188 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34189 lambda = lambdas[0];
34190 } else {
34191 lambda = lambdas[1];
34192 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34193 }
34194 }
34195
34196 // Get basis vectors, used for balanced length-two representation
34197 var basis;
34198 if (conf.basis) {
34199 basis = conf.basis.map(function(vec) {
34200 return {
34201 a: new BN(vec.a, 16),
34202 b: new BN(vec.b, 16)
34203 };
34204 });
34205 } else {
34206 basis = this._getEndoBasis(lambda);
34207 }
34208
34209 return {
34210 beta: beta,
34211 lambda: lambda,
34212 basis: basis
34213 };
34214 };
34215
34216 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34217 // Find roots of for x^2 + x + 1 in F
34218 // Root = (-1 +- Sqrt(-3)) / 2
34219 //
34220 var red = num === this.p ? this.red : BN.mont(num);
34221 var tinv = new BN(2).toRed(red).redInvm();
34222 var ntinv = tinv.redNeg();
34223
34224 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
34225
34226 var l1 = ntinv.redAdd(s).fromRed();
34227 var l2 = ntinv.redSub(s).fromRed();
34228 return [ l1, l2 ];
34229 };
34230
34231 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34232 // aprxSqrt >= sqrt(this.n)
34233 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34234
34235 // 3.74
34236 // Run EGCD, until r(L + 1) < aprxSqrt
34237 var u = lambda;
34238 var v = this.n.clone();
34239 var x1 = new BN(1);
34240 var y1 = new BN(0);
34241 var x2 = new BN(0);
34242 var y2 = new BN(1);
34243
34244 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34245 var a0;
34246 var b0;
34247 // First vector
34248 var a1;
34249 var b1;
34250 // Second vector
34251 var a2;
34252 var b2;
34253
34254 var prevR;
34255 var i = 0;
34256 var r;
34257 var x;
34258 while (u.cmpn(0) !== 0) {
34259 var q = v.div(u);
34260 r = v.sub(q.mul(u));
34261 x = x2.sub(q.mul(x1));
34262 var y = y2.sub(q.mul(y1));
34263
34264 if (!a1 && r.cmp(aprxSqrt) < 0) {
34265 a0 = prevR.neg();
34266 b0 = x1;
34267 a1 = r.neg();
34268 b1 = x;
34269 } else if (a1 && ++i === 2) {
34270 break;
34271 }
34272 prevR = r;
34273
34274 v = u;
34275 u = r;
34276 x2 = x1;
34277 x1 = x;
34278 y2 = y1;
34279 y1 = y;
34280 }
34281 a2 = r.neg();
34282 b2 = x;
34283
34284 var len1 = a1.sqr().add(b1.sqr());
34285 var len2 = a2.sqr().add(b2.sqr());
34286 if (len2.cmp(len1) >= 0) {
34287 a2 = a0;
34288 b2 = b0;
34289 }
34290
34291 // Normalize signs
34292 if (a1.negative) {
34293 a1 = a1.neg();
34294 b1 = b1.neg();
34295 }
34296 if (a2.negative) {
34297 a2 = a2.neg();
34298 b2 = b2.neg();
34299 }
34300
34301 return [
34302 { a: a1, b: b1 },
34303 { a: a2, b: b2 }
34304 ];
34305 };
34306
34307 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34308 var basis = this.endo.basis;
34309 var v1 = basis[0];
34310 var v2 = basis[1];
34311
34312 var c1 = v2.b.mul(k).divRound(this.n);
34313 var c2 = v1.b.neg().mul(k).divRound(this.n);
34314
34315 var p1 = c1.mul(v1.a);
34316 var p2 = c2.mul(v2.a);
34317 var q1 = c1.mul(v1.b);
34318 var q2 = c2.mul(v2.b);
34319
34320 // Calculate answer
34321 var k1 = k.sub(p1).sub(p2);
34322 var k2 = q1.add(q2).neg();
34323 return { k1: k1, k2: k2 };
34324 };
34325
34326 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34327 x = new BN(x, 16);
34328 if (!x.red)
34329 x = x.toRed(this.red);
34330
34331 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34332 var y = y2.redSqrt();
34333 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34334 throw new Error('invalid point');
34335
34336 // XXX Is there any way to tell if the number is odd without converting it
34337 // to non-red form?
34338 var isOdd = y.fromRed().isOdd();
34339 if (odd && !isOdd || !odd && isOdd)
34340 y = y.redNeg();
34341
34342 return this.point(x, y);
34343 };
34344
34345 ShortCurve.prototype.validate = function validate(point) {
34346 if (point.inf)
34347 return true;
34348
34349 var x = point.x;
34350 var y = point.y;
34351
34352 var ax = this.a.redMul(x);
34353 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34354 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34355 };
34356
34357 ShortCurve.prototype._endoWnafMulAdd =
34358 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34359 var npoints = this._endoWnafT1;
34360 var ncoeffs = this._endoWnafT2;
34361 for (var i = 0; i < points.length; i++) {
34362 var split = this._endoSplit(coeffs[i]);
34363 var p = points[i];
34364 var beta = p._getBeta();
34365
34366 if (split.k1.negative) {
34367 split.k1.ineg();
34368 p = p.neg(true);
34369 }
34370 if (split.k2.negative) {
34371 split.k2.ineg();
34372 beta = beta.neg(true);
34373 }
34374
34375 npoints[i * 2] = p;
34376 npoints[i * 2 + 1] = beta;
34377 ncoeffs[i * 2] = split.k1;
34378 ncoeffs[i * 2 + 1] = split.k2;
34379 }
34380 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
34381
34382 // Clean-up references to points and coefficients
34383 for (var j = 0; j < i * 2; j++) {
34384 npoints[j] = null;
34385 ncoeffs[j] = null;
34386 }
34387 return res;
34388 };
34389
34390 function Point(curve, x, y, isRed) {
34391 Base.BasePoint.call(this, curve, 'affine');
34392 if (x === null && y === null) {
34393 this.x = null;
34394 this.y = null;
34395 this.inf = true;
34396 } else {
34397 this.x = new BN(x, 16);
34398 this.y = new BN(y, 16);
34399 // Force redgomery representation when loading from JSON
34400 if (isRed) {
34401 this.x.forceRed(this.curve.red);
34402 this.y.forceRed(this.curve.red);
34403 }
34404 if (!this.x.red)
34405 this.x = this.x.toRed(this.curve.red);
34406 if (!this.y.red)
34407 this.y = this.y.toRed(this.curve.red);
34408 this.inf = false;
34409 }
34410 }
34411 inherits(Point, Base.BasePoint);
34412
34413 ShortCurve.prototype.point = function point(x, y, isRed) {
34414 return new Point(this, x, y, isRed);
34415 };
34416
34417 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34418 return Point.fromJSON(this, obj, red);
34419 };
34420
34421 Point.prototype._getBeta = function _getBeta() {
34422 if (!this.curve.endo)
34423 return;
34424
34425 var pre = this.precomputed;
34426 if (pre && pre.beta)
34427 return pre.beta;
34428
34429 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34430 if (pre) {
34431 var curve = this.curve;
34432 var endoMul = function(p) {
34433 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34434 };
34435 pre.beta = beta;
34436 beta.precomputed = {
34437 beta: null,
34438 naf: pre.naf && {
34439 wnd: pre.naf.wnd,
34440 points: pre.naf.points.map(endoMul)
34441 },
34442 doubles: pre.doubles && {
34443 step: pre.doubles.step,
34444 points: pre.doubles.points.map(endoMul)
34445 }
34446 };
34447 }
34448 return beta;
34449 };
34450
34451 Point.prototype.toJSON = function toJSON() {
34452 if (!this.precomputed)
34453 return [ this.x, this.y ];
34454
34455 return [ this.x, this.y, this.precomputed && {
34456 doubles: this.precomputed.doubles && {
34457 step: this.precomputed.doubles.step,
34458 points: this.precomputed.doubles.points.slice(1)
34459 },
34460 naf: this.precomputed.naf && {
34461 wnd: this.precomputed.naf.wnd,
34462 points: this.precomputed.naf.points.slice(1)
34463 }
34464 } ];
34465 };
34466
34467 Point.fromJSON = function fromJSON(curve, obj, red) {
34468 if (typeof obj === 'string')
34469 obj = JSON.parse(obj);
34470 var res = curve.point(obj[0], obj[1], red);
34471 if (!obj[2])
34472 return res;
34473
34474 function obj2point(obj) {
34475 return curve.point(obj[0], obj[1], red);
34476 }
34477
34478 var pre = obj[2];
34479 res.precomputed = {
34480 beta: null,
34481 doubles: pre.doubles && {
34482 step: pre.doubles.step,
34483 points: [ res ].concat(pre.doubles.points.map(obj2point))
34484 },
34485 naf: pre.naf && {
34486 wnd: pre.naf.wnd,
34487 points: [ res ].concat(pre.naf.points.map(obj2point))
34488 }
34489 };
34490 return res;
34491 };
34492
34493 Point.prototype.inspect = function inspect() {
34494 if (this.isInfinity())
34495 return '<EC Point Infinity>';
34496 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34497 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34498 };
34499
34500 Point.prototype.isInfinity = function isInfinity() {
34501 return this.inf;
34502 };
34503
34504 Point.prototype.add = function add(p) {
34505 // O + P = P
34506 if (this.inf)
34507 return p;
34508
34509 // P + O = P
34510 if (p.inf)
34511 return this;
34512
34513 // P + P = 2P
34514 if (this.eq(p))
34515 return this.dbl();
34516
34517 // P + (-P) = O
34518 if (this.neg().eq(p))
34519 return this.curve.point(null, null);
34520
34521 // P + Q = O
34522 if (this.x.cmp(p.x) === 0)
34523 return this.curve.point(null, null);
34524
34525 var c = this.y.redSub(p.y);
34526 if (c.cmpn(0) !== 0)
34527 c = c.redMul(this.x.redSub(p.x).redInvm());
34528 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34529 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34530 return this.curve.point(nx, ny);
34531 };
34532
34533 Point.prototype.dbl = function dbl() {
34534 if (this.inf)
34535 return this;
34536
34537 // 2P = O
34538 var ys1 = this.y.redAdd(this.y);
34539 if (ys1.cmpn(0) === 0)
34540 return this.curve.point(null, null);
34541
34542 var a = this.curve.a;
34543
34544 var x2 = this.x.redSqr();
34545 var dyinv = ys1.redInvm();
34546 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
34547
34548 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34549 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34550 return this.curve.point(nx, ny);
34551 };
34552
34553 Point.prototype.getX = function getX() {
34554 return this.x.fromRed();
34555 };
34556
34557 Point.prototype.getY = function getY() {
34558 return this.y.fromRed();
34559 };
34560
34561 Point.prototype.mul = function mul(k) {
34562 k = new BN(k, 16);
34563
34564 if (this._hasDoubles(k))
34565 return this.curve._fixedNafMul(this, k);
34566 else if (this.curve.endo)
34567 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34568 else
34569 return this.curve._wnafMul(this, k);
34570 };
34571
34572 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34573 var points = [ this, p2 ];
34574 var coeffs = [ k1, k2 ];
34575 if (this.curve.endo)
34576 return this.curve._endoWnafMulAdd(points, coeffs);
34577 else
34578 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34579 };
34580
34581 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34582 var points = [ this, p2 ];
34583 var coeffs = [ k1, k2 ];
34584 if (this.curve.endo)
34585 return this.curve._endoWnafMulAdd(points, coeffs, true);
34586 else
34587 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34588 };
34589
34590 Point.prototype.eq = function eq(p) {
34591 return this === p ||
34592 this.inf === p.inf &&
34593 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34594 };
34595
34596 Point.prototype.neg = function neg(_precompute) {
34597 if (this.inf)
34598 return this;
34599
34600 var res = this.curve.point(this.x, this.y.redNeg());
34601 if (_precompute && this.precomputed) {
34602 var pre = this.precomputed;
34603 var negate = function(p) {
34604 return p.neg();
34605 };
34606 res.precomputed = {
34607 naf: pre.naf && {
34608 wnd: pre.naf.wnd,
34609 points: pre.naf.points.map(negate)
34610 },
34611 doubles: pre.doubles && {
34612 step: pre.doubles.step,
34613 points: pre.doubles.points.map(negate)
34614 }
34615 };
34616 }
34617 return res;
34618 };
34619
34620 Point.prototype.toJ = function toJ() {
34621 if (this.inf)
34622 return this.curve.jpoint(null, null, null);
34623
34624 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34625 return res;
34626 };
34627
34628 function JPoint(curve, x, y, z) {
34629 Base.BasePoint.call(this, curve, 'jacobian');
34630 if (x === null && y === null && z === null) {
34631 this.x = this.curve.one;
34632 this.y = this.curve.one;
34633 this.z = new BN(0);
34634 } else {
34635 this.x = new BN(x, 16);
34636 this.y = new BN(y, 16);
34637 this.z = new BN(z, 16);
34638 }
34639 if (!this.x.red)
34640 this.x = this.x.toRed(this.curve.red);
34641 if (!this.y.red)
34642 this.y = this.y.toRed(this.curve.red);
34643 if (!this.z.red)
34644 this.z = this.z.toRed(this.curve.red);
34645
34646 this.zOne = this.z === this.curve.one;
34647 }
34648 inherits(JPoint, Base.BasePoint);
34649
34650 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34651 return new JPoint(this, x, y, z);
34652 };
34653
34654 JPoint.prototype.toP = function toP() {
34655 if (this.isInfinity())
34656 return this.curve.point(null, null);
34657
34658 var zinv = this.z.redInvm();
34659 var zinv2 = zinv.redSqr();
34660 var ax = this.x.redMul(zinv2);
34661 var ay = this.y.redMul(zinv2).redMul(zinv);
34662
34663 return this.curve.point(ax, ay);
34664 };
34665
34666 JPoint.prototype.neg = function neg() {
34667 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34668 };
34669
34670 JPoint.prototype.add = function add(p) {
34671 // O + P = P
34672 if (this.isInfinity())
34673 return p;
34674
34675 // P + O = P
34676 if (p.isInfinity())
34677 return this;
34678
34679 // 12M + 4S + 7A
34680 var pz2 = p.z.redSqr();
34681 var z2 = this.z.redSqr();
34682 var u1 = this.x.redMul(pz2);
34683 var u2 = p.x.redMul(z2);
34684 var s1 = this.y.redMul(pz2.redMul(p.z));
34685 var s2 = p.y.redMul(z2.redMul(this.z));
34686
34687 var h = u1.redSub(u2);
34688 var r = s1.redSub(s2);
34689 if (h.cmpn(0) === 0) {
34690 if (r.cmpn(0) !== 0)
34691 return this.curve.jpoint(null, null, null);
34692 else
34693 return this.dbl();
34694 }
34695
34696 var h2 = h.redSqr();
34697 var h3 = h2.redMul(h);
34698 var v = u1.redMul(h2);
34699
34700 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34701 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34702 var nz = this.z.redMul(p.z).redMul(h);
34703
34704 return this.curve.jpoint(nx, ny, nz);
34705 };
34706
34707 JPoint.prototype.mixedAdd = function mixedAdd(p) {
34708 // O + P = P
34709 if (this.isInfinity())
34710 return p.toJ();
34711
34712 // P + O = P
34713 if (p.isInfinity())
34714 return this;
34715
34716 // 8M + 3S + 7A
34717 var z2 = this.z.redSqr();
34718 var u1 = this.x;
34719 var u2 = p.x.redMul(z2);
34720 var s1 = this.y;
34721 var s2 = p.y.redMul(z2).redMul(this.z);
34722
34723 var h = u1.redSub(u2);
34724 var r = s1.redSub(s2);
34725 if (h.cmpn(0) === 0) {
34726 if (r.cmpn(0) !== 0)
34727 return this.curve.jpoint(null, null, null);
34728 else
34729 return this.dbl();
34730 }
34731
34732 var h2 = h.redSqr();
34733 var h3 = h2.redMul(h);
34734 var v = u1.redMul(h2);
34735
34736 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34737 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34738 var nz = this.z.redMul(h);
34739
34740 return this.curve.jpoint(nx, ny, nz);
34741 };
34742
34743 JPoint.prototype.dblp = function dblp(pow) {
34744 if (pow === 0)
34745 return this;
34746 if (this.isInfinity())
34747 return this;
34748 if (!pow)
34749 return this.dbl();
34750
34751 if (this.curve.zeroA || this.curve.threeA) {
34752 var r = this;
34753 for (var i = 0; i < pow; i++)
34754 r = r.dbl();
34755 return r;
34756 }
34757
34758 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34759 // N = 1 => 6M + 6S + 9A
34760 var a = this.curve.a;
34761 var tinv = this.curve.tinv;
34762
34763 var jx = this.x;
34764 var jy = this.y;
34765 var jz = this.z;
34766 var jz4 = jz.redSqr().redSqr();
34767
34768 // Reuse results
34769 var jyd = jy.redAdd(jy);
34770 for (var i = 0; i < pow; i++) {
34771 var jx2 = jx.redSqr();
34772 var jyd2 = jyd.redSqr();
34773 var jyd4 = jyd2.redSqr();
34774 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34775
34776 var t1 = jx.redMul(jyd2);
34777 var nx = c.redSqr().redISub(t1.redAdd(t1));
34778 var t2 = t1.redISub(nx);
34779 var dny = c.redMul(t2);
34780 dny = dny.redIAdd(dny).redISub(jyd4);
34781 var nz = jyd.redMul(jz);
34782 if (i + 1 < pow)
34783 jz4 = jz4.redMul(jyd4);
34784
34785 jx = nx;
34786 jz = nz;
34787 jyd = dny;
34788 }
34789
34790 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34791 };
34792
34793 JPoint.prototype.dbl = function dbl() {
34794 if (this.isInfinity())
34795 return this;
34796
34797 if (this.curve.zeroA)
34798 return this._zeroDbl();
34799 else if (this.curve.threeA)
34800 return this._threeDbl();
34801 else
34802 return this._dbl();
34803 };
34804
34805 JPoint.prototype._zeroDbl = function _zeroDbl() {
34806 var nx;
34807 var ny;
34808 var nz;
34809 // Z = 1
34810 if (this.zOne) {
34811 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34812 // #doubling-mdbl-2007-bl
34813 // 1M + 5S + 14A
34814
34815 // XX = X1^2
34816 var xx = this.x.redSqr();
34817 // YY = Y1^2
34818 var yy = this.y.redSqr();
34819 // YYYY = YY^2
34820 var yyyy = yy.redSqr();
34821 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34822 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34823 s = s.redIAdd(s);
34824 // M = 3 * XX + a; a = 0
34825 var m = xx.redAdd(xx).redIAdd(xx);
34826 // T = M ^ 2 - 2*S
34827 var t = m.redSqr().redISub(s).redISub(s);
34828
34829 // 8 * YYYY
34830 var yyyy8 = yyyy.redIAdd(yyyy);
34831 yyyy8 = yyyy8.redIAdd(yyyy8);
34832 yyyy8 = yyyy8.redIAdd(yyyy8);
34833
34834 // X3 = T
34835 nx = t;
34836 // Y3 = M * (S - T) - 8 * YYYY
34837 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34838 // Z3 = 2*Y1
34839 nz = this.y.redAdd(this.y);
34840 } else {
34841 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34842 // #doubling-dbl-2009-l
34843 // 2M + 5S + 13A
34844
34845 // A = X1^2
34846 var a = this.x.redSqr();
34847 // B = Y1^2
34848 var b = this.y.redSqr();
34849 // C = B^2
34850 var c = b.redSqr();
34851 // D = 2 * ((X1 + B)^2 - A - C)
34852 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34853 d = d.redIAdd(d);
34854 // E = 3 * A
34855 var e = a.redAdd(a).redIAdd(a);
34856 // F = E^2
34857 var f = e.redSqr();
34858
34859 // 8 * C
34860 var c8 = c.redIAdd(c);
34861 c8 = c8.redIAdd(c8);
34862 c8 = c8.redIAdd(c8);
34863
34864 // X3 = F - 2 * D
34865 nx = f.redISub(d).redISub(d);
34866 // Y3 = E * (D - X3) - 8 * C
34867 ny = e.redMul(d.redISub(nx)).redISub(c8);
34868 // Z3 = 2 * Y1 * Z1
34869 nz = this.y.redMul(this.z);
34870 nz = nz.redIAdd(nz);
34871 }
34872
34873 return this.curve.jpoint(nx, ny, nz);
34874 };
34875
34876 JPoint.prototype._threeDbl = function _threeDbl() {
34877 var nx;
34878 var ny;
34879 var nz;
34880 // Z = 1
34881 if (this.zOne) {
34882 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34883 // #doubling-mdbl-2007-bl
34884 // 1M + 5S + 15A
34885
34886 // XX = X1^2
34887 var xx = this.x.redSqr();
34888 // YY = Y1^2
34889 var yy = this.y.redSqr();
34890 // YYYY = YY^2
34891 var yyyy = yy.redSqr();
34892 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34893 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34894 s = s.redIAdd(s);
34895 // M = 3 * XX + a
34896 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34897 // T = M^2 - 2 * S
34898 var t = m.redSqr().redISub(s).redISub(s);
34899 // X3 = T
34900 nx = t;
34901 // Y3 = M * (S - T) - 8 * YYYY
34902 var yyyy8 = yyyy.redIAdd(yyyy);
34903 yyyy8 = yyyy8.redIAdd(yyyy8);
34904 yyyy8 = yyyy8.redIAdd(yyyy8);
34905 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34906 // Z3 = 2 * Y1
34907 nz = this.y.redAdd(this.y);
34908 } else {
34909 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
34910 // 3M + 5S
34911
34912 // delta = Z1^2
34913 var delta = this.z.redSqr();
34914 // gamma = Y1^2
34915 var gamma = this.y.redSqr();
34916 // beta = X1 * gamma
34917 var beta = this.x.redMul(gamma);
34918 // alpha = 3 * (X1 - delta) * (X1 + delta)
34919 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
34920 alpha = alpha.redAdd(alpha).redIAdd(alpha);
34921 // X3 = alpha^2 - 8 * beta
34922 var beta4 = beta.redIAdd(beta);
34923 beta4 = beta4.redIAdd(beta4);
34924 var beta8 = beta4.redAdd(beta4);
34925 nx = alpha.redSqr().redISub(beta8);
34926 // Z3 = (Y1 + Z1)^2 - gamma - delta
34927 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
34928 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
34929 var ggamma8 = gamma.redSqr();
34930 ggamma8 = ggamma8.redIAdd(ggamma8);
34931 ggamma8 = ggamma8.redIAdd(ggamma8);
34932 ggamma8 = ggamma8.redIAdd(ggamma8);
34933 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
34934 }
34935
34936 return this.curve.jpoint(nx, ny, nz);
34937 };
34938
34939 JPoint.prototype._dbl = function _dbl() {
34940 var a = this.curve.a;
34941
34942 // 4M + 6S + 10A
34943 var jx = this.x;
34944 var jy = this.y;
34945 var jz = this.z;
34946 var jz4 = jz.redSqr().redSqr();
34947
34948 var jx2 = jx.redSqr();
34949 var jy2 = jy.redSqr();
34950
34951 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34952
34953 var jxd4 = jx.redAdd(jx);
34954 jxd4 = jxd4.redIAdd(jxd4);
34955 var t1 = jxd4.redMul(jy2);
34956 var nx = c.redSqr().redISub(t1.redAdd(t1));
34957 var t2 = t1.redISub(nx);
34958
34959 var jyd8 = jy2.redSqr();
34960 jyd8 = jyd8.redIAdd(jyd8);
34961 jyd8 = jyd8.redIAdd(jyd8);
34962 jyd8 = jyd8.redIAdd(jyd8);
34963 var ny = c.redMul(t2).redISub(jyd8);
34964 var nz = jy.redAdd(jy).redMul(jz);
34965
34966 return this.curve.jpoint(nx, ny, nz);
34967 };
34968
34969 JPoint.prototype.trpl = function trpl() {
34970 if (!this.curve.zeroA)
34971 return this.dbl().add(this);
34972
34973 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
34974 // 5M + 10S + ...
34975
34976 // XX = X1^2
34977 var xx = this.x.redSqr();
34978 // YY = Y1^2
34979 var yy = this.y.redSqr();
34980 // ZZ = Z1^2
34981 var zz = this.z.redSqr();
34982 // YYYY = YY^2
34983 var yyyy = yy.redSqr();
34984 // M = 3 * XX + a * ZZ2; a = 0
34985 var m = xx.redAdd(xx).redIAdd(xx);
34986 // MM = M^2
34987 var mm = m.redSqr();
34988 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
34989 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34990 e = e.redIAdd(e);
34991 e = e.redAdd(e).redIAdd(e);
34992 e = e.redISub(mm);
34993 // EE = E^2
34994 var ee = e.redSqr();
34995 // T = 16*YYYY
34996 var t = yyyy.redIAdd(yyyy);
34997 t = t.redIAdd(t);
34998 t = t.redIAdd(t);
34999 t = t.redIAdd(t);
35000 // U = (M + E)^2 - MM - EE - T
35001 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
35002 // X3 = 4 * (X1 * EE - 4 * YY * U)
35003 var yyu4 = yy.redMul(u);
35004 yyu4 = yyu4.redIAdd(yyu4);
35005 yyu4 = yyu4.redIAdd(yyu4);
35006 var nx = this.x.redMul(ee).redISub(yyu4);
35007 nx = nx.redIAdd(nx);
35008 nx = nx.redIAdd(nx);
35009 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
35010 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
35011 ny = ny.redIAdd(ny);
35012 ny = ny.redIAdd(ny);
35013 ny = ny.redIAdd(ny);
35014 // Z3 = (Z1 + E)^2 - ZZ - EE
35015 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
35016
35017 return this.curve.jpoint(nx, ny, nz);
35018 };
35019
35020 JPoint.prototype.mul = function mul(k, kbase) {
35021 k = new BN(k, kbase);
35022
35023 return this.curve._wnafMul(this, k);
35024 };
35025
35026 JPoint.prototype.eq = function eq(p) {
35027 if (p.type === 'affine')
35028 return this.eq(p.toJ());
35029
35030 if (this === p)
35031 return true;
35032
35033 // x1 * z2^2 == x2 * z1^2
35034 var z2 = this.z.redSqr();
35035 var pz2 = p.z.redSqr();
35036 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
35037 return false;
35038
35039 // y1 * z2^3 == y2 * z1^3
35040 var z3 = z2.redMul(this.z);
35041 var pz3 = pz2.redMul(p.z);
35042 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
35043 };
35044
35045 JPoint.prototype.eqXToP = function eqXToP(x) {
35046 var zs = this.z.redSqr();
35047 var rx = x.toRed(this.curve.red).redMul(zs);
35048 if (this.x.cmp(rx) === 0)
35049 return true;
35050
35051 var xc = x.clone();
35052 var t = this.curve.redN.redMul(zs);
35053 for (;;) {
35054 xc.iadd(this.curve.n);
35055 if (xc.cmp(this.curve.p) >= 0)
35056 return false;
35057
35058 rx.redIAdd(t);
35059 if (this.x.cmp(rx) === 0)
35060 return true;
35061 }
35062 return false;
35063 };
35064
35065 JPoint.prototype.inspect = function inspect() {
35066 if (this.isInfinity())
35067 return '<EC JPoint Infinity>';
35068 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35069 ' y: ' + this.y.toString(16, 2) +
35070 ' z: ' + this.z.toString(16, 2) + '>';
35071 };
35072
35073 JPoint.prototype.isInfinity = function isInfinity() {
35074 // XXX This code assumes that zero is always zero in red
35075 return this.z.cmpn(0) === 0;
35076 };
35077
35078 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35079 'use strict';
35080
35081 var curves = exports;
35082
35083 var hash = require('hash.js');
35084 var elliptic = require('../elliptic');
35085
35086 var assert = elliptic.utils.assert;
35087
35088 function PresetCurve(options) {
35089 if (options.type === 'short')
35090 this.curve = new elliptic.curve.short(options);
35091 else if (options.type === 'edwards')
35092 this.curve = new elliptic.curve.edwards(options);
35093 else
35094 this.curve = new elliptic.curve.mont(options);
35095 this.g = this.curve.g;
35096 this.n = this.curve.n;
35097 this.hash = options.hash;
35098
35099 assert(this.g.validate(), 'Invalid curve');
35100 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35101 }
35102 curves.PresetCurve = PresetCurve;
35103
35104 function defineCurve(name, options) {
35105 Object.defineProperty(curves, name, {
35106 configurable: true,
35107 enumerable: true,
35108 get: function() {
35109 var curve = new PresetCurve(options);
35110 Object.defineProperty(curves, name, {
35111 configurable: true,
35112 enumerable: true,
35113 value: curve
35114 });
35115 return curve;
35116 }
35117 });
35118 }
35119
35120 defineCurve('p192', {
35121 type: 'short',
35122 prime: 'p192',
35123 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35124 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35125 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35126 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35127 hash: hash.sha256,
35128 gRed: false,
35129 g: [
35130 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35131 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35132 ]
35133 });
35134
35135 defineCurve('p224', {
35136 type: 'short',
35137 prime: 'p224',
35138 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35139 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35140 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35141 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35142 hash: hash.sha256,
35143 gRed: false,
35144 g: [
35145 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35146 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35147 ]
35148 });
35149
35150 defineCurve('p256', {
35151 type: 'short',
35152 prime: null,
35153 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35154 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35155 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35156 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35157 hash: hash.sha256,
35158 gRed: false,
35159 g: [
35160 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35161 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35162 ]
35163 });
35164
35165 defineCurve('p384', {
35166 type: 'short',
35167 prime: null,
35168 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35169 'fffffffe ffffffff 00000000 00000000 ffffffff',
35170 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35171 'fffffffe ffffffff 00000000 00000000 fffffffc',
35172 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35173 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35174 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35175 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35176 hash: hash.sha384,
35177 gRed: false,
35178 g: [
35179 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35180 '5502f25d bf55296c 3a545e38 72760ab7',
35181 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35182 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35183 ]
35184 });
35185
35186 defineCurve('p521', {
35187 type: 'short',
35188 prime: null,
35189 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35190 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35191 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35192 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35193 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35194 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35195 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35196 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35197 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35198 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35199 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35200 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35201 hash: hash.sha512,
35202 gRed: false,
35203 g: [
35204 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35205 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35206 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35207 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35208 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35209 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35210 ]
35211 });
35212
35213 defineCurve('curve25519', {
35214 type: 'mont',
35215 prime: 'p25519',
35216 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35217 a: '76d06',
35218 b: '1',
35219 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35220 hash: hash.sha256,
35221 gRed: false,
35222 g: [
35223 '9'
35224 ]
35225 });
35226
35227 defineCurve('ed25519', {
35228 type: 'edwards',
35229 prime: 'p25519',
35230 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35231 a: '-1',
35232 c: '1',
35233 // -121665 * (121666^(-1)) (mod P)
35234 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35235 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35236 hash: hash.sha256,
35237 gRed: false,
35238 g: [
35239 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35240
35241 // 4/5
35242 '6666666666666666666666666666666666666666666666666666666666666658'
35243 ]
35244 });
35245
35246 var pre;
35247 try {
35248 pre = require('./precomputed/secp256k1');
35249 } catch (e) {
35250 pre = undefined;
35251 }
35252
35253 defineCurve('secp256k1', {
35254 type: 'short',
35255 prime: 'k256',
35256 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35257 a: '0',
35258 b: '7',
35259 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35260 h: '1',
35261 hash: hash.sha256,
35262
35263 // Precomputed endomorphism
35264 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35265 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35266 basis: [
35267 {
35268 a: '3086d221a7d46bcde86c90e49284eb15',
35269 b: '-e4437ed6010e88286f547fa90abfe4c3'
35270 },
35271 {
35272 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35273 b: '3086d221a7d46bcde86c90e49284eb15'
35274 }
35275 ],
35276
35277 gRed: false,
35278 g: [
35279 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35280 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35281 pre
35282 ]
35283 });
35284
35285 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35286 'use strict';
35287
35288 var BN = require('bn.js');
35289 var elliptic = require('../../elliptic');
35290 var utils = elliptic.utils;
35291 var assert = utils.assert;
35292
35293 var KeyPair = require('./key');
35294 var Signature = require('./signature');
35295
35296 function EC(options) {
35297 if (!(this instanceof EC))
35298 return new EC(options);
35299
35300 // Shortcut `elliptic.ec(curve-name)`
35301 if (typeof options === 'string') {
35302 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35303
35304 options = elliptic.curves[options];
35305 }
35306
35307 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35308 if (options instanceof elliptic.curves.PresetCurve)
35309 options = { curve: options };
35310
35311 this.curve = options.curve.curve;
35312 this.n = this.curve.n;
35313 this.nh = this.n.ushrn(1);
35314 this.g = this.curve.g;
35315
35316 // Point on curve
35317 this.g = options.curve.g;
35318 this.g.precompute(options.curve.n.bitLength() + 1);
35319
35320 // Hash for function for DRBG
35321 this.hash = options.hash || options.curve.hash;
35322 }
35323 module.exports = EC;
35324
35325 EC.prototype.keyPair = function keyPair(options) {
35326 return new KeyPair(this, options);
35327 };
35328
35329 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35330 return KeyPair.fromPrivate(this, priv, enc);
35331 };
35332
35333 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35334 return KeyPair.fromPublic(this, pub, enc);
35335 };
35336
35337 EC.prototype.genKeyPair = function genKeyPair(options) {
35338 if (!options)
35339 options = {};
35340
35341 // Instantiate Hmac_DRBG
35342 var drbg = new elliptic.hmacDRBG({
35343 hash: this.hash,
35344 pers: options.pers,
35345 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35346 nonce: this.n.toArray()
35347 });
35348
35349 var bytes = this.n.byteLength();
35350 var ns2 = this.n.sub(new BN(2));
35351 do {
35352 var priv = new BN(drbg.generate(bytes));
35353 if (priv.cmp(ns2) > 0)
35354 continue;
35355
35356 priv.iaddn(1);
35357 return this.keyFromPrivate(priv);
35358 } while (true);
35359 };
35360
35361 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35362 var delta = msg.byteLength() * 8 - this.n.bitLength();
35363 if (delta > 0)
35364 msg = msg.ushrn(delta);
35365 if (!truncOnly && msg.cmp(this.n) >= 0)
35366 return msg.sub(this.n);
35367 else
35368 return msg;
35369 };
35370
35371 EC.prototype.sign = function sign(msg, key, enc, options) {
35372 if (typeof enc === 'object') {
35373 options = enc;
35374 enc = null;
35375 }
35376 if (!options)
35377 options = {};
35378
35379 key = this.keyFromPrivate(key, enc);
35380 msg = this._truncateToN(new BN(msg, 16));
35381
35382 // Zero-extend key to provide enough entropy
35383 var bytes = this.n.byteLength();
35384 var bkey = key.getPrivate().toArray('be', bytes);
35385
35386 // Zero-extend nonce to have the same byte size as N
35387 var nonce = msg.toArray('be', bytes);
35388
35389 // Instantiate Hmac_DRBG
35390 var drbg = new elliptic.hmacDRBG({
35391 hash: this.hash,
35392 entropy: bkey,
35393 nonce: nonce,
35394 pers: options.pers,
35395 persEnc: options.persEnc
35396 });
35397
35398 // Number of bytes to generate
35399 var ns1 = this.n.sub(new BN(1));
35400
35401 for (var iter = 0; true; iter++) {
35402 var k = options.k ?
35403 options.k(iter) :
35404 new BN(drbg.generate(this.n.byteLength()));
35405 k = this._truncateToN(k, true);
35406 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35407 continue;
35408
35409 var kp = this.g.mul(k);
35410 if (kp.isInfinity())
35411 continue;
35412
35413 var kpX = kp.getX();
35414 var r = kpX.umod(this.n);
35415 if (r.cmpn(0) === 0)
35416 continue;
35417
35418 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35419 s = s.umod(this.n);
35420 if (s.cmpn(0) === 0)
35421 continue;
35422
35423 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35424 (kpX.cmp(r) !== 0 ? 2 : 0);
35425
35426 // Use complement of `s`, if it is > `n / 2`
35427 if (options.canonical && s.cmp(this.nh) > 0) {
35428 s = this.n.sub(s);
35429 recoveryParam ^= 1;
35430 }
35431
35432 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35433 }
35434 };
35435
35436 EC.prototype.verify = function verify(msg, signature, key, enc) {
35437 msg = this._truncateToN(new BN(msg, 16));
35438 key = this.keyFromPublic(key, enc);
35439 signature = new Signature(signature, 'hex');
35440
35441 // Perform primitive values validation
35442 var r = signature.r;
35443 var s = signature.s;
35444 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35445 return false;
35446 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35447 return false;
35448
35449 // Validate signature
35450 var sinv = s.invm(this.n);
35451 var u1 = sinv.mul(msg).umod(this.n);
35452 var u2 = sinv.mul(r).umod(this.n);
35453
35454 if (!this.curve._maxwellTrick) {
35455 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35456 if (p.isInfinity())
35457 return false;
35458
35459 return p.getX().umod(this.n).cmp(r) === 0;
35460 }
35461
35462 // NOTE: Greg Maxwell's trick, inspired by:
35463 // https://git.io/vad3K
35464
35465 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35466 if (p.isInfinity())
35467 return false;
35468
35469 // Compare `p.x` of Jacobian point with `r`,
35470 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35471 // inverse of `p.z^2`
35472 return p.eqXToP(r);
35473 };
35474
35475 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35476 assert((3 & j) === j, 'The recovery param is more than two bits');
35477 signature = new Signature(signature, enc);
35478
35479 var n = this.n;
35480 var e = new BN(msg);
35481 var r = signature.r;
35482 var s = signature.s;
35483
35484 // A set LSB signifies that the y-coordinate is odd
35485 var isYOdd = j & 1;
35486 var isSecondKey = j >> 1;
35487 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35488 throw new Error('Unable to find sencond key candinate');
35489
35490 // 1.1. Let x = r + jn.
35491 if (isSecondKey)
35492 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35493 else
35494 r = this.curve.pointFromX(r, isYOdd);
35495
35496 var rInv = signature.r.invm(n);
35497 var s1 = n.sub(e).mul(rInv).umod(n);
35498 var s2 = s.mul(rInv).umod(n);
35499
35500 // 1.6.1 Compute Q = r^-1 (sR - eG)
35501 // Q = r^-1 (sR + -eG)
35502 return this.g.mulAdd(s1, r, s2);
35503 };
35504
35505 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35506 signature = new Signature(signature, enc);
35507 if (signature.recoveryParam !== null)
35508 return signature.recoveryParam;
35509
35510 for (var i = 0; i < 4; i++) {
35511 var Qprime;
35512 try {
35513 Qprime = this.recoverPubKey(e, signature, i);
35514 } catch (e) {
35515 continue;
35516 }
35517
35518 if (Qprime.eq(Q))
35519 return i;
35520 }
35521 throw new Error('Unable to find valid recovery factor');
35522 };
35523
35524 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35525 'use strict';
35526
35527 var BN = require('bn.js');
35528 var elliptic = require('../../elliptic');
35529 var utils = elliptic.utils;
35530 var assert = utils.assert;
35531
35532 function KeyPair(ec, options) {
35533 this.ec = ec;
35534 this.priv = null;
35535 this.pub = null;
35536
35537 // KeyPair(ec, { priv: ..., pub: ... })
35538 if (options.priv)
35539 this._importPrivate(options.priv, options.privEnc);
35540 if (options.pub)
35541 this._importPublic(options.pub, options.pubEnc);
35542 }
35543 module.exports = KeyPair;
35544
35545 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35546 if (pub instanceof KeyPair)
35547 return pub;
35548
35549 return new KeyPair(ec, {
35550 pub: pub,
35551 pubEnc: enc
35552 });
35553 };
35554
35555 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35556 if (priv instanceof KeyPair)
35557 return priv;
35558
35559 return new KeyPair(ec, {
35560 priv: priv,
35561 privEnc: enc
35562 });
35563 };
35564
35565 KeyPair.prototype.validate = function validate() {
35566 var pub = this.getPublic();
35567
35568 if (pub.isInfinity())
35569 return { result: false, reason: 'Invalid public key' };
35570 if (!pub.validate())
35571 return { result: false, reason: 'Public key is not a point' };
35572 if (!pub.mul(this.ec.curve.n).isInfinity())
35573 return { result: false, reason: 'Public key * N != O' };
35574
35575 return { result: true, reason: null };
35576 };
35577
35578 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35579 // compact is optional argument
35580 if (typeof compact === 'string') {
35581 enc = compact;
35582 compact = null;
35583 }
35584
35585 if (!this.pub)
35586 this.pub = this.ec.g.mul(this.priv);
35587
35588 if (!enc)
35589 return this.pub;
35590
35591 return this.pub.encode(enc, compact);
35592 };
35593
35594 KeyPair.prototype.getPrivate = function getPrivate(enc) {
35595 if (enc === 'hex')
35596 return this.priv.toString(16, 2);
35597 else
35598 return this.priv;
35599 };
35600
35601 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35602 this.priv = new BN(key, enc || 16);
35603
35604 // Ensure that the priv won't be bigger than n, otherwise we may fail
35605 // in fixed multiplication method
35606 this.priv = this.priv.umod(this.ec.curve.n);
35607 };
35608
35609 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35610 if (key.x || key.y) {
35611 // Montgomery points only have an `x` coordinate.
35612 // Weierstrass/Edwards points on the other hand have both `x` and
35613 // `y` coordinates.
35614 if (this.ec.curve.type === 'mont') {
35615 assert(key.x, 'Need x coordinate');
35616 } else if (this.ec.curve.type === 'short' ||
35617 this.ec.curve.type === 'edwards') {
35618 assert(key.x && key.y, 'Need both x and y coordinate');
35619 }
35620 this.pub = this.ec.curve.point(key.x, key.y);
35621 return;
35622 }
35623 this.pub = this.ec.curve.decodePoint(key, enc);
35624 };
35625
35626 // ECDH
35627 KeyPair.prototype.derive = function derive(pub) {
35628 return pub.mul(this.priv).getX();
35629 };
35630
35631 // ECDSA
35632 KeyPair.prototype.sign = function sign(msg, enc, options) {
35633 return this.ec.sign(msg, this, enc, options);
35634 };
35635
35636 KeyPair.prototype.verify = function verify(msg, signature) {
35637 return this.ec.verify(msg, signature, this);
35638 };
35639
35640 KeyPair.prototype.inspect = function inspect() {
35641 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35642 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35643 };
35644
35645 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35646 'use strict';
35647
35648 var BN = require('bn.js');
35649
35650 var elliptic = require('../../elliptic');
35651 var utils = elliptic.utils;
35652 var assert = utils.assert;
35653
35654 function Signature(options, enc) {
35655 if (options instanceof Signature)
35656 return options;
35657
35658 if (this._importDER(options, enc))
35659 return;
35660
35661 assert(options.r && options.s, 'Signature without r or s');
35662 this.r = new BN(options.r, 16);
35663 this.s = new BN(options.s, 16);
35664 if (options.recoveryParam === undefined)
35665 this.recoveryParam = null;
35666 else
35667 this.recoveryParam = options.recoveryParam;
35668 }
35669 module.exports = Signature;
35670
35671 function Position() {
35672 this.place = 0;
35673 }
35674
35675 function getLength(buf, p) {
35676 var initial = buf[p.place++];
35677 if (!(initial & 0x80)) {
35678 return initial;
35679 }
35680 var octetLen = initial & 0xf;
35681 var val = 0;
35682 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35683 val <<= 8;
35684 val |= buf[off];
35685 }
35686 p.place = off;
35687 return val;
35688 }
35689
35690 function rmPadding(buf) {
35691 var i = 0;
35692 var len = buf.length - 1;
35693 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35694 i++;
35695 }
35696 if (i === 0) {
35697 return buf;
35698 }
35699 return buf.slice(i);
35700 }
35701
35702 Signature.prototype._importDER = function _importDER(data, enc) {
35703 data = utils.toArray(data, enc);
35704 var p = new Position();
35705 if (data[p.place++] !== 0x30) {
35706 return false;
35707 }
35708 var len = getLength(data, p);
35709 if ((len + p.place) !== data.length) {
35710 return false;
35711 }
35712 if (data[p.place++] !== 0x02) {
35713 return false;
35714 }
35715 var rlen = getLength(data, p);
35716 var r = data.slice(p.place, rlen + p.place);
35717 p.place += rlen;
35718 if (data[p.place++] !== 0x02) {
35719 return false;
35720 }
35721 var slen = getLength(data, p);
35722 if (data.length !== slen + p.place) {
35723 return false;
35724 }
35725 var s = data.slice(p.place, slen + p.place);
35726 if (r[0] === 0 && (r[1] & 0x80)) {
35727 r = r.slice(1);
35728 }
35729 if (s[0] === 0 && (s[1] & 0x80)) {
35730 s = s.slice(1);
35731 }
35732
35733 this.r = new BN(r);
35734 this.s = new BN(s);
35735 this.recoveryParam = null;
35736
35737 return true;
35738 };
35739
35740 function constructLength(arr, len) {
35741 if (len < 0x80) {
35742 arr.push(len);
35743 return;
35744 }
35745 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35746 arr.push(octets | 0x80);
35747 while (--octets) {
35748 arr.push((len >>> (octets << 3)) & 0xff);
35749 }
35750 arr.push(len);
35751 }
35752
35753 Signature.prototype.toDER = function toDER(enc) {
35754 var r = this.r.toArray();
35755 var s = this.s.toArray();
35756
35757 // Pad values
35758 if (r[0] & 0x80)
35759 r = [ 0 ].concat(r);
35760 // Pad values
35761 if (s[0] & 0x80)
35762 s = [ 0 ].concat(s);
35763
35764 r = rmPadding(r);
35765 s = rmPadding(s);
35766
35767 while (!s[0] && !(s[1] & 0x80)) {
35768 s = s.slice(1);
35769 }
35770 var arr = [ 0x02 ];
35771 constructLength(arr, r.length);
35772 arr = arr.concat(r);
35773 arr.push(0x02);
35774 constructLength(arr, s.length);
35775 var backHalf = arr.concat(s);
35776 var res = [ 0x30 ];
35777 constructLength(res, backHalf.length);
35778 res = res.concat(backHalf);
35779 return utils.encode(res, enc);
35780 };
35781
35782 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35783 'use strict';
35784
35785 var hash = require('hash.js');
35786 var elliptic = require('../../elliptic');
35787 var utils = elliptic.utils;
35788 var assert = utils.assert;
35789 var parseBytes = utils.parseBytes;
35790 var KeyPair = require('./key');
35791 var Signature = require('./signature');
35792
35793 function EDDSA(curve) {
35794 assert(curve === 'ed25519', 'only tested with ed25519 so far');
35795
35796 if (!(this instanceof EDDSA))
35797 return new EDDSA(curve);
35798
35799 var curve = elliptic.curves[curve].curve;
35800 this.curve = curve;
35801 this.g = curve.g;
35802 this.g.precompute(curve.n.bitLength() + 1);
35803
35804 this.pointClass = curve.point().constructor;
35805 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35806 this.hash = hash.sha512;
35807 }
35808
35809 module.exports = EDDSA;
35810
35811 /**
35812 * @param {Array|String} message - message bytes
35813 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
35814 * @returns {Signature} - signature
35815 */
35816 EDDSA.prototype.sign = function sign(message, secret) {
35817 message = parseBytes(message);
35818 var key = this.keyFromSecret(secret);
35819 var r = this.hashInt(key.messagePrefix(), message);
35820 var R = this.g.mul(r);
35821 var Rencoded = this.encodePoint(R);
35822 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35823 .mul(key.priv());
35824 var S = r.add(s_).umod(this.curve.n);
35825 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35826 };
35827
35828 /**
35829 * @param {Array} message - message bytes
35830 * @param {Array|String|Signature} sig - sig bytes
35831 * @param {Array|String|Point|KeyPair} pub - public key
35832 * @returns {Boolean} - true if public key matches sig of message
35833 */
35834 EDDSA.prototype.verify = function verify(message, sig, pub) {
35835 message = parseBytes(message);
35836 sig = this.makeSignature(sig);
35837 var key = this.keyFromPublic(pub);
35838 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35839 var SG = this.g.mul(sig.S());
35840 var RplusAh = sig.R().add(key.pub().mul(h));
35841 return RplusAh.eq(SG);
35842 };
35843
35844 EDDSA.prototype.hashInt = function hashInt() {
35845 var hash = this.hash();
35846 for (var i = 0; i < arguments.length; i++)
35847 hash.update(arguments[i]);
35848 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35849 };
35850
35851 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35852 return KeyPair.fromPublic(this, pub);
35853 };
35854
35855 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35856 return KeyPair.fromSecret(this, secret);
35857 };
35858
35859 EDDSA.prototype.makeSignature = function makeSignature(sig) {
35860 if (sig instanceof Signature)
35861 return sig;
35862 return new Signature(this, sig);
35863 };
35864
35865 /**
35866 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35867 *
35868 * EDDSA defines methods for encoding and decoding points and integers. These are
35869 * helper convenience methods, that pass along to utility functions implied
35870 * parameters.
35871 *
35872 */
35873 EDDSA.prototype.encodePoint = function encodePoint(point) {
35874 var enc = point.getY().toArray('le', this.encodingLength);
35875 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35876 return enc;
35877 };
35878
35879 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35880 bytes = utils.parseBytes(bytes);
35881
35882 var lastIx = bytes.length - 1;
35883 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35884 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
35885
35886 var y = utils.intFromLE(normed);
35887 return this.curve.pointFromY(y, xIsOdd);
35888 };
35889
35890 EDDSA.prototype.encodeInt = function encodeInt(num) {
35891 return num.toArray('le', this.encodingLength);
35892 };
35893
35894 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35895 return utils.intFromLE(bytes);
35896 };
35897
35898 EDDSA.prototype.isPoint = function isPoint(val) {
35899 return val instanceof this.pointClass;
35900 };
35901
35902 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35903 'use strict';
35904
35905 var elliptic = require('../../elliptic');
35906 var utils = elliptic.utils;
35907 var assert = utils.assert;
35908 var parseBytes = utils.parseBytes;
35909 var cachedProperty = utils.cachedProperty;
35910
35911 /**
35912 * @param {EDDSA} eddsa - instance
35913 * @param {Object} params - public/private key parameters
35914 *
35915 * @param {Array<Byte>} [params.secret] - secret seed bytes
35916 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
35917 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
35918 *
35919 */
35920 function KeyPair(eddsa, params) {
35921 this.eddsa = eddsa;
35922 this._secret = parseBytes(params.secret);
35923 if (eddsa.isPoint(params.pub))
35924 this._pub = params.pub;
35925 else
35926 this._pubBytes = parseBytes(params.pub);
35927 }
35928
35929 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
35930 if (pub instanceof KeyPair)
35931 return pub;
35932 return new KeyPair(eddsa, { pub: pub });
35933 };
35934
35935 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
35936 if (secret instanceof KeyPair)
35937 return secret;
35938 return new KeyPair(eddsa, { secret: secret });
35939 };
35940
35941 KeyPair.prototype.secret = function secret() {
35942 return this._secret;
35943 };
35944
35945 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
35946 return this.eddsa.encodePoint(this.pub());
35947 });
35948
35949 cachedProperty(KeyPair, 'pub', function pub() {
35950 if (this._pubBytes)
35951 return this.eddsa.decodePoint(this._pubBytes);
35952 return this.eddsa.g.mul(this.priv());
35953 });
35954
35955 cachedProperty(KeyPair, 'privBytes', function privBytes() {
35956 var eddsa = this.eddsa;
35957 var hash = this.hash();
35958 var lastIx = eddsa.encodingLength - 1;
35959
35960 var a = hash.slice(0, eddsa.encodingLength);
35961 a[0] &= 248;
35962 a[lastIx] &= 127;
35963 a[lastIx] |= 64;
35964
35965 return a;
35966 });
35967
35968 cachedProperty(KeyPair, 'priv', function priv() {
35969 return this.eddsa.decodeInt(this.privBytes());
35970 });
35971
35972 cachedProperty(KeyPair, 'hash', function hash() {
35973 return this.eddsa.hash().update(this.secret()).digest();
35974 });
35975
35976 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
35977 return this.hash().slice(this.eddsa.encodingLength);
35978 });
35979
35980 KeyPair.prototype.sign = function sign(message) {
35981 assert(this._secret, 'KeyPair can only verify');
35982 return this.eddsa.sign(message, this);
35983 };
35984
35985 KeyPair.prototype.verify = function verify(message, sig) {
35986 return this.eddsa.verify(message, sig, this);
35987 };
35988
35989 KeyPair.prototype.getSecret = function getSecret(enc) {
35990 assert(this._secret, 'KeyPair is public only');
35991 return utils.encode(this.secret(), enc);
35992 };
35993
35994 KeyPair.prototype.getPublic = function getPublic(enc) {
35995 return utils.encode(this.pubBytes(), enc);
35996 };
35997
35998 module.exports = KeyPair;
35999
36000 },{"../../elliptic":39}],51:[function(require,module,exports){
36001 'use strict';
36002
36003 var BN = require('bn.js');
36004 var elliptic = require('../../elliptic');
36005 var utils = elliptic.utils;
36006 var assert = utils.assert;
36007 var cachedProperty = utils.cachedProperty;
36008 var parseBytes = utils.parseBytes;
36009
36010 /**
36011 * @param {EDDSA} eddsa - eddsa instance
36012 * @param {Array<Bytes>|Object} sig -
36013 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
36014 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
36015 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
36016 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
36017 */
36018 function Signature(eddsa, sig) {
36019 this.eddsa = eddsa;
36020
36021 if (typeof sig !== 'object')
36022 sig = parseBytes(sig);
36023
36024 if (Array.isArray(sig)) {
36025 sig = {
36026 R: sig.slice(0, eddsa.encodingLength),
36027 S: sig.slice(eddsa.encodingLength)
36028 };
36029 }
36030
36031 assert(sig.R && sig.S, 'Signature without R or S');
36032
36033 if (eddsa.isPoint(sig.R))
36034 this._R = sig.R;
36035 if (sig.S instanceof BN)
36036 this._S = sig.S;
36037
36038 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
36039 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
36040 }
36041
36042 cachedProperty(Signature, 'S', function S() {
36043 return this.eddsa.decodeInt(this.Sencoded());
36044 });
36045
36046 cachedProperty(Signature, 'R', function R() {
36047 return this.eddsa.decodePoint(this.Rencoded());
36048 });
36049
36050 cachedProperty(Signature, 'Rencoded', function Rencoded() {
36051 return this.eddsa.encodePoint(this.R());
36052 });
36053
36054 cachedProperty(Signature, 'Sencoded', function Sencoded() {
36055 return this.eddsa.encodeInt(this.S());
36056 });
36057
36058 Signature.prototype.toBytes = function toBytes() {
36059 return this.Rencoded().concat(this.Sencoded());
36060 };
36061
36062 Signature.prototype.toHex = function toHex() {
36063 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36064 };
36065
36066 module.exports = Signature;
36067
36068 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36069 'use strict';
36070
36071 var hash = require('hash.js');
36072 var elliptic = require('../elliptic');
36073 var utils = elliptic.utils;
36074 var assert = utils.assert;
36075
36076 function HmacDRBG(options) {
36077 if (!(this instanceof HmacDRBG))
36078 return new HmacDRBG(options);
36079 this.hash = options.hash;
36080 this.predResist = !!options.predResist;
36081
36082 this.outLen = this.hash.outSize;
36083 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
36084
36085 this.reseed = null;
36086 this.reseedInterval = null;
36087 this.K = null;
36088 this.V = null;
36089
36090 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36091 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36092 var pers = utils.toArray(options.pers, options.persEnc);
36093 assert(entropy.length >= (this.minEntropy / 8),
36094 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36095 this._init(entropy, nonce, pers);
36096 }
36097 module.exports = HmacDRBG;
36098
36099 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36100 var seed = entropy.concat(nonce).concat(pers);
36101
36102 this.K = new Array(this.outLen / 8);
36103 this.V = new Array(this.outLen / 8);
36104 for (var i = 0; i < this.V.length; i++) {
36105 this.K[i] = 0x00;
36106 this.V[i] = 0x01;
36107 }
36108
36109 this._update(seed);
36110 this.reseed = 1;
36111 this.reseedInterval = 0x1000000000000; // 2^48
36112 };
36113
36114 HmacDRBG.prototype._hmac = function hmac() {
36115 return new hash.hmac(this.hash, this.K);
36116 };
36117
36118 HmacDRBG.prototype._update = function update(seed) {
36119 var kmac = this._hmac()
36120 .update(this.V)
36121 .update([ 0x00 ]);
36122 if (seed)
36123 kmac = kmac.update(seed);
36124 this.K = kmac.digest();
36125 this.V = this._hmac().update(this.V).digest();
36126 if (!seed)
36127 return;
36128
36129 this.K = this._hmac()
36130 .update(this.V)
36131 .update([ 0x01 ])
36132 .update(seed)
36133 .digest();
36134 this.V = this._hmac().update(this.V).digest();
36135 };
36136
36137 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36138 // Optional entropy enc
36139 if (typeof entropyEnc !== 'string') {
36140 addEnc = add;
36141 add = entropyEnc;
36142 entropyEnc = null;
36143 }
36144
36145 entropy = utils.toBuffer(entropy, entropyEnc);
36146 add = utils.toBuffer(add, addEnc);
36147
36148 assert(entropy.length >= (this.minEntropy / 8),
36149 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36150
36151 this._update(entropy.concat(add || []));
36152 this.reseed = 1;
36153 };
36154
36155 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36156 if (this.reseed > this.reseedInterval)
36157 throw new Error('Reseed is required');
36158
36159 // Optional encoding
36160 if (typeof enc !== 'string') {
36161 addEnc = add;
36162 add = enc;
36163 enc = null;
36164 }
36165
36166 // Optional additional data
36167 if (add) {
36168 add = utils.toArray(add, addEnc);
36169 this._update(add);
36170 }
36171
36172 var temp = [];
36173 while (temp.length < len) {
36174 this.V = this._hmac().update(this.V).digest();
36175 temp = temp.concat(this.V);
36176 }
36177
36178 var res = temp.slice(0, len);
36179 this._update(add);
36180 this.reseed++;
36181 return utils.encode(res, enc);
36182 };
36183
36184 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36185 module.exports = {
36186 doubles: {
36187 step: 4,
36188 points: [
36189 [
36190 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36191 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36192 ],
36193 [
36194 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36195 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36196 ],
36197 [
36198 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36199 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36200 ],
36201 [
36202 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36203 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36204 ],
36205 [
36206 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36207 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36208 ],
36209 [
36210 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36211 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36212 ],
36213 [
36214 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36215 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36216 ],
36217 [
36218 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36219 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36220 ],
36221 [
36222 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36223 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36224 ],
36225 [
36226 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36227 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36228 ],
36229 [
36230 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36231 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36232 ],
36233 [
36234 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36235 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36236 ],
36237 [
36238 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36239 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36240 ],
36241 [
36242 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36243 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36244 ],
36245 [
36246 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36247 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36248 ],
36249 [
36250 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36251 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36252 ],
36253 [
36254 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36255 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36256 ],
36257 [
36258 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36259 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36260 ],
36261 [
36262 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36263 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36264 ],
36265 [
36266 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36267 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36268 ],
36269 [
36270 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36271 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36272 ],
36273 [
36274 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36275 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36276 ],
36277 [
36278 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36279 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36280 ],
36281 [
36282 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36283 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36284 ],
36285 [
36286 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36287 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36288 ],
36289 [
36290 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36291 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36292 ],
36293 [
36294 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36295 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36296 ],
36297 [
36298 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36299 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36300 ],
36301 [
36302 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36303 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36304 ],
36305 [
36306 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36307 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36308 ],
36309 [
36310 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36311 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36312 ],
36313 [
36314 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36315 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36316 ],
36317 [
36318 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36319 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36320 ],
36321 [
36322 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36323 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36324 ],
36325 [
36326 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36327 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36328 ],
36329 [
36330 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36331 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36332 ],
36333 [
36334 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36335 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36336 ],
36337 [
36338 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36339 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36340 ],
36341 [
36342 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36343 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36344 ],
36345 [
36346 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36347 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36348 ],
36349 [
36350 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36351 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36352 ],
36353 [
36354 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36355 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36356 ],
36357 [
36358 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36359 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36360 ],
36361 [
36362 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36363 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36364 ],
36365 [
36366 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36367 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36368 ],
36369 [
36370 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36371 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36372 ],
36373 [
36374 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36375 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36376 ],
36377 [
36378 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36379 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36380 ],
36381 [
36382 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36383 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36384 ],
36385 [
36386 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36387 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36388 ],
36389 [
36390 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36391 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36392 ],
36393 [
36394 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36395 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36396 ],
36397 [
36398 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36399 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36400 ],
36401 [
36402 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36403 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36404 ],
36405 [
36406 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36407 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36408 ],
36409 [
36410 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36411 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36412 ],
36413 [
36414 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36415 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36416 ],
36417 [
36418 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36419 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36420 ],
36421 [
36422 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36423 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36424 ],
36425 [
36426 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36427 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36428 ],
36429 [
36430 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36431 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36432 ],
36433 [
36434 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36435 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36436 ],
36437 [
36438 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36439 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36440 ],
36441 [
36442 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36443 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36444 ],
36445 [
36446 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36447 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36448 ]
36449 ]
36450 },
36451 naf: {
36452 wnd: 7,
36453 points: [
36454 [
36455 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36456 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36457 ],
36458 [
36459 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36460 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36461 ],
36462 [
36463 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36464 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36465 ],
36466 [
36467 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36468 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36469 ],
36470 [
36471 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36472 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36473 ],
36474 [
36475 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36476 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36477 ],
36478 [
36479 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36480 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36481 ],
36482 [
36483 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36484 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36485 ],
36486 [
36487 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36488 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36489 ],
36490 [
36491 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36492 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36493 ],
36494 [
36495 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36496 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36497 ],
36498 [
36499 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36500 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36501 ],
36502 [
36503 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36504 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36505 ],
36506 [
36507 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36508 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36509 ],
36510 [
36511 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36512 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36513 ],
36514 [
36515 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36516 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36517 ],
36518 [
36519 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36520 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36521 ],
36522 [
36523 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36524 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36525 ],
36526 [
36527 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36528 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36529 ],
36530 [
36531 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36532 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36533 ],
36534 [
36535 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36536 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36537 ],
36538 [
36539 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36540 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36541 ],
36542 [
36543 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36544 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36545 ],
36546 [
36547 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36548 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36549 ],
36550 [
36551 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36552 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36553 ],
36554 [
36555 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36556 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36557 ],
36558 [
36559 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36560 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36561 ],
36562 [
36563 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36564 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36565 ],
36566 [
36567 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36568 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36569 ],
36570 [
36571 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36572 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36573 ],
36574 [
36575 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36576 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36577 ],
36578 [
36579 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36580 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36581 ],
36582 [
36583 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36584 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36585 ],
36586 [
36587 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36588 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36589 ],
36590 [
36591 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36592 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36593 ],
36594 [
36595 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36596 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36597 ],
36598 [
36599 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36600 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36601 ],
36602 [
36603 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36604 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36605 ],
36606 [
36607 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36608 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36609 ],
36610 [
36611 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36612 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36613 ],
36614 [
36615 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36616 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36617 ],
36618 [
36619 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36620 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36621 ],
36622 [
36623 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36624 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36625 ],
36626 [
36627 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36628 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36629 ],
36630 [
36631 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36632 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36633 ],
36634 [
36635 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36636 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36637 ],
36638 [
36639 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36640 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36641 ],
36642 [
36643 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36644 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36645 ],
36646 [
36647 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36648 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36649 ],
36650 [
36651 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36652 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36653 ],
36654 [
36655 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36656 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36657 ],
36658 [
36659 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36660 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36661 ],
36662 [
36663 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36664 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36665 ],
36666 [
36667 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36668 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36669 ],
36670 [
36671 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36672 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36673 ],
36674 [
36675 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36676 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36677 ],
36678 [
36679 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36680 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36681 ],
36682 [
36683 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36684 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36685 ],
36686 [
36687 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36688 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36689 ],
36690 [
36691 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36692 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36693 ],
36694 [
36695 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36696 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36697 ],
36698 [
36699 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36700 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36701 ],
36702 [
36703 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36704 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36705 ],
36706 [
36707 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36708 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36709 ],
36710 [
36711 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36712 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36713 ],
36714 [
36715 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36716 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36717 ],
36718 [
36719 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36720 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36721 ],
36722 [
36723 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36724 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36725 ],
36726 [
36727 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36728 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36729 ],
36730 [
36731 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36732 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36733 ],
36734 [
36735 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36736 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36737 ],
36738 [
36739 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36740 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36741 ],
36742 [
36743 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36744 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36745 ],
36746 [
36747 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36748 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36749 ],
36750 [
36751 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36752 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36753 ],
36754 [
36755 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36756 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36757 ],
36758 [
36759 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36760 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36761 ],
36762 [
36763 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36764 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36765 ],
36766 [
36767 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36768 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36769 ],
36770 [
36771 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36772 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36773 ],
36774 [
36775 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36776 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36777 ],
36778 [
36779 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36780 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36781 ],
36782 [
36783 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36784 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36785 ],
36786 [
36787 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36788 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36789 ],
36790 [
36791 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36792 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36793 ],
36794 [
36795 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36796 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36797 ],
36798 [
36799 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36800 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36801 ],
36802 [
36803 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36804 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36805 ],
36806 [
36807 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36808 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36809 ],
36810 [
36811 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36812 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36813 ],
36814 [
36815 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36816 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36817 ],
36818 [
36819 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36820 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36821 ],
36822 [
36823 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36824 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36825 ],
36826 [
36827 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36828 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36829 ],
36830 [
36831 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36832 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36833 ],
36834 [
36835 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36836 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36837 ],
36838 [
36839 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36840 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36841 ],
36842 [
36843 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36844 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36845 ],
36846 [
36847 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36848 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36849 ],
36850 [
36851 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36852 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36853 ],
36854 [
36855 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36856 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36857 ],
36858 [
36859 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36860 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36861 ],
36862 [
36863 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36864 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36865 ],
36866 [
36867 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36868 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36869 ],
36870 [
36871 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36872 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36873 ],
36874 [
36875 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36876 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36877 ],
36878 [
36879 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36880 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36881 ],
36882 [
36883 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36884 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36885 ],
36886 [
36887 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36888 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36889 ],
36890 [
36891 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36892 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36893 ],
36894 [
36895 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36896 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36897 ],
36898 [
36899 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36900 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36901 ],
36902 [
36903 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36904 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36905 ],
36906 [
36907 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36908 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
36909 ],
36910 [
36911 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
36912 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
36913 ],
36914 [
36915 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
36916 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
36917 ],
36918 [
36919 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
36920 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
36921 ],
36922 [
36923 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
36924 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
36925 ],
36926 [
36927 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
36928 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
36929 ],
36930 [
36931 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
36932 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
36933 ],
36934 [
36935 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
36936 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
36937 ],
36938 [
36939 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
36940 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
36941 ],
36942 [
36943 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
36944 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
36945 ],
36946 [
36947 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
36948 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
36949 ],
36950 [
36951 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
36952 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
36953 ],
36954 [
36955 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
36956 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
36957 ],
36958 [
36959 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
36960 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
36961 ]
36962 ]
36963 }
36964 };
36965
36966 },{}],54:[function(require,module,exports){
36967 'use strict';
36968
36969 var utils = exports;
36970 var BN = require('bn.js');
36971
36972 utils.assert = function assert(val, msg) {
36973 if (!val)
36974 throw new Error(msg || 'Assertion failed');
36975 };
36976
36977 function toArray(msg, enc) {
36978 if (Array.isArray(msg))
36979 return msg.slice();
36980 if (!msg)
36981 return [];
36982 var res = [];
36983 if (typeof msg !== 'string') {
36984 for (var i = 0; i < msg.length; i++)
36985 res[i] = msg[i] | 0;
36986 return res;
36987 }
36988 if (!enc) {
36989 for (var i = 0; i < msg.length; i++) {
36990 var c = msg.charCodeAt(i);
36991 var hi = c >> 8;
36992 var lo = c & 0xff;
36993 if (hi)
36994 res.push(hi, lo);
36995 else
36996 res.push(lo);
36997 }
36998 } else if (enc === 'hex') {
36999 msg = msg.replace(/[^a-z0-9]+/ig, '');
37000 if (msg.length % 2 !== 0)
37001 msg = '0' + msg;
37002 for (var i = 0; i < msg.length; i += 2)
37003 res.push(parseInt(msg[i] + msg[i + 1], 16));
37004 }
37005 return res;
37006 }
37007 utils.toArray = toArray;
37008
37009 function zero2(word) {
37010 if (word.length === 1)
37011 return '0' + word;
37012 else
37013 return word;
37014 }
37015 utils.zero2 = zero2;
37016
37017 function toHex(msg) {
37018 var res = '';
37019 for (var i = 0; i < msg.length; i++)
37020 res += zero2(msg[i].toString(16));
37021 return res;
37022 }
37023 utils.toHex = toHex;
37024
37025 utils.encode = function encode(arr, enc) {
37026 if (enc === 'hex')
37027 return toHex(arr);
37028 else
37029 return arr;
37030 };
37031
37032 // Represent num in a w-NAF form
37033 function getNAF(num, w) {
37034 var naf = [];
37035 var ws = 1 << (w + 1);
37036 var k = num.clone();
37037 while (k.cmpn(1) >= 0) {
37038 var z;
37039 if (k.isOdd()) {
37040 var mod = k.andln(ws - 1);
37041 if (mod > (ws >> 1) - 1)
37042 z = (ws >> 1) - mod;
37043 else
37044 z = mod;
37045 k.isubn(z);
37046 } else {
37047 z = 0;
37048 }
37049 naf.push(z);
37050
37051 // Optimization, shift by word if possible
37052 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37053 for (var i = 1; i < shift; i++)
37054 naf.push(0);
37055 k.iushrn(shift);
37056 }
37057
37058 return naf;
37059 }
37060 utils.getNAF = getNAF;
37061
37062 // Represent k1, k2 in a Joint Sparse Form
37063 function getJSF(k1, k2) {
37064 var jsf = [
37065 [],
37066 []
37067 ];
37068
37069 k1 = k1.clone();
37070 k2 = k2.clone();
37071 var d1 = 0;
37072 var d2 = 0;
37073 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37074
37075 // First phase
37076 var m14 = (k1.andln(3) + d1) & 3;
37077 var m24 = (k2.andln(3) + d2) & 3;
37078 if (m14 === 3)
37079 m14 = -1;
37080 if (m24 === 3)
37081 m24 = -1;
37082 var u1;
37083 if ((m14 & 1) === 0) {
37084 u1 = 0;
37085 } else {
37086 var m8 = (k1.andln(7) + d1) & 7;
37087 if ((m8 === 3 || m8 === 5) && m24 === 2)
37088 u1 = -m14;
37089 else
37090 u1 = m14;
37091 }
37092 jsf[0].push(u1);
37093
37094 var u2;
37095 if ((m24 & 1) === 0) {
37096 u2 = 0;
37097 } else {
37098 var m8 = (k2.andln(7) + d2) & 7;
37099 if ((m8 === 3 || m8 === 5) && m14 === 2)
37100 u2 = -m24;
37101 else
37102 u2 = m24;
37103 }
37104 jsf[1].push(u2);
37105
37106 // Second phase
37107 if (2 * d1 === u1 + 1)
37108 d1 = 1 - d1;
37109 if (2 * d2 === u2 + 1)
37110 d2 = 1 - d2;
37111 k1.iushrn(1);
37112 k2.iushrn(1);
37113 }
37114
37115 return jsf;
37116 }
37117 utils.getJSF = getJSF;
37118
37119 function cachedProperty(obj, name, computer) {
37120 var key = '_' + name;
37121 obj.prototype[name] = function cachedProperty() {
37122 return this[key] !== undefined ? this[key] :
37123 this[key] = computer.call(this);
37124 };
37125 }
37126 utils.cachedProperty = cachedProperty;
37127
37128 function parseBytes(bytes) {
37129 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37130 bytes;
37131 }
37132 utils.parseBytes = parseBytes;
37133
37134 function intFromLE(bytes) {
37135 return new BN(bytes, 'hex', 'le');
37136 }
37137 utils.intFromLE = intFromLE;
37138
37139
37140 },{"bn.js":33}],55:[function(require,module,exports){
37141 module.exports={
37142 "_args": [
37143 [
37144 {
37145 "raw": "elliptic@^6.2.3",
37146 "scope": null,
37147 "escapedName": "elliptic",
37148 "name": "elliptic",
37149 "rawSpec": "^6.2.3",
37150 "spec": ">=6.2.3 <7.0.0",
37151 "type": "range"
37152 },
37153 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37154 ]
37155 ],
37156 "_from": "elliptic@>=6.2.3 <7.0.0",
37157 "_id": "elliptic@6.3.3",
37158 "_inCache": true,
37159 "_location": "/elliptic",
37160 "_nodeVersion": "7.0.0",
37161 "_npmOperationalInternal": {
37162 "host": "packages-18-east.internal.npmjs.com",
37163 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37164 },
37165 "_npmUser": {
37166 "name": "indutny",
37167 "email": "fedor@indutny.com"
37168 },
37169 "_npmVersion": "3.10.8",
37170 "_phantomChildren": {},
37171 "_requested": {
37172 "raw": "elliptic@^6.2.3",
37173 "scope": null,
37174 "escapedName": "elliptic",
37175 "name": "elliptic",
37176 "rawSpec": "^6.2.3",
37177 "spec": ">=6.2.3 <7.0.0",
37178 "type": "range"
37179 },
37180 "_requiredBy": [
37181 "/browserify-sign",
37182 "/create-ecdh",
37183 "/secp256k1"
37184 ],
37185 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37186 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37187 "_shrinkwrap": null,
37188 "_spec": "elliptic@^6.2.3",
37189 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37190 "author": {
37191 "name": "Fedor Indutny",
37192 "email": "fedor@indutny.com"
37193 },
37194 "bugs": {
37195 "url": "https://github.com/indutny/elliptic/issues"
37196 },
37197 "dependencies": {
37198 "bn.js": "^4.4.0",
37199 "brorand": "^1.0.1",
37200 "hash.js": "^1.0.0",
37201 "inherits": "^2.0.1"
37202 },
37203 "description": "EC cryptography",
37204 "devDependencies": {
37205 "brfs": "^1.4.3",
37206 "coveralls": "^2.11.3",
37207 "grunt": "^0.4.5",
37208 "grunt-browserify": "^5.0.0",
37209 "grunt-cli": "^1.2.0",
37210 "grunt-contrib-connect": "^1.0.0",
37211 "grunt-contrib-copy": "^1.0.0",
37212 "grunt-contrib-uglify": "^1.0.1",
37213 "grunt-mocha-istanbul": "^3.0.1",
37214 "grunt-saucelabs": "^8.6.2",
37215 "istanbul": "^0.4.2",
37216 "jscs": "^2.9.0",
37217 "jshint": "^2.6.0",
37218 "mocha": "^2.1.0"
37219 },
37220 "directories": {},
37221 "dist": {
37222 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37223 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37224 },
37225 "files": [
37226 "lib"
37227 ],
37228 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37229 "homepage": "https://github.com/indutny/elliptic",
37230 "keywords": [
37231 "EC",
37232 "Elliptic",
37233 "curve",
37234 "Cryptography"
37235 ],
37236 "license": "MIT",
37237 "main": "lib/elliptic.js",
37238 "maintainers": [
37239 {
37240 "name": "indutny",
37241 "email": "fedor@indutny.com"
37242 }
37243 ],
37244 "name": "elliptic",
37245 "optionalDependencies": {},
37246 "readme": "ERROR: No README data found!",
37247 "repository": {
37248 "type": "git",
37249 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37250 },
37251 "scripts": {
37252 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37253 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37254 "lint": "npm run jscs && npm run jshint",
37255 "test": "npm run lint && npm run unit",
37256 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37257 "version": "grunt dist && git add dist/"
37258 },
37259 "version": "6.3.3"
37260 }
37261
37262 },{}],56:[function(require,module,exports){
37263 (function (Buffer){
37264 'use strict';
37265
37266 var isHexPrefixed = require('is-hex-prefixed');
37267 var stripHexPrefix = require('strip-hex-prefix');
37268
37269 /**
37270 * Pads a `String` to have an even length
37271 * @param {String} value
37272 * @return {String} output
37273 */
37274 function padToEven(value) {
37275 var a = value; // eslint-disable-line
37276
37277 if (typeof a !== 'string') {
37278 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37279 }
37280
37281 if (a.length % 2) {
37282 a = '0' + a;
37283 }
37284
37285 return a;
37286 }
37287
37288 /**
37289 * Converts a `Number` into a hex `String`
37290 * @param {Number} i
37291 * @return {String}
37292 */
37293 function intToHex(i) {
37294 var hex = i.toString(16); // eslint-disable-line
37295
37296 return '0x' + padToEven(hex);
37297 }
37298
37299 /**
37300 * Converts an `Number` to a `Buffer`
37301 * @param {Number} i
37302 * @return {Buffer}
37303 */
37304 function intToBuffer(i) {
37305 var hex = intToHex(i);
37306
37307 return new Buffer(hex.slice(2), 'hex');
37308 }
37309
37310 /**
37311 * Get the binary size of a string
37312 * @param {String} str
37313 * @return {Number}
37314 */
37315 function getBinarySize(str) {
37316 if (typeof str !== 'string') {
37317 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37318 }
37319
37320 return Buffer.byteLength(str, 'utf8');
37321 }
37322
37323 /**
37324 * Returns TRUE if the first specified array contains all elements
37325 * from the second one. FALSE otherwise.
37326 *
37327 * @param {array} superset
37328 * @param {array} subset
37329 *
37330 * @returns {boolean}
37331 */
37332 function arrayContainsArray(superset, subset, some) {
37333 if (Array.isArray(superset) !== true) {
37334 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37335 }
37336 if (Array.isArray(subset) !== true) {
37337 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
37338 }
37339
37340 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37341 return superset.indexOf(value) >= 0;
37342 });
37343 }
37344
37345 /**
37346 * Should be called to get utf8 from it's hex representation
37347 *
37348 * @method toUtf8
37349 * @param {String} string in hex
37350 * @returns {String} ascii string representation of hex value
37351 */
37352 function toUtf8(hex) {
37353 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
37354
37355 return bufferValue.toString('utf8');
37356 }
37357
37358 /**
37359 * Should be called to get ascii from it's hex representation
37360 *
37361 * @method toAscii
37362 * @param {String} string in hex
37363 * @returns {String} ascii string representation of hex value
37364 */
37365 function toAscii(hex) {
37366 var str = ''; // eslint-disable-line
37367 var i = 0,
37368 l = hex.length; // eslint-disable-line
37369
37370 if (hex.substring(0, 2) === '0x') {
37371 i = 2;
37372 }
37373
37374 for (; i < l; i += 2) {
37375 var code = parseInt(hex.substr(i, 2), 16);
37376 str += String.fromCharCode(code);
37377 }
37378
37379 return str;
37380 }
37381
37382 /**
37383 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37384 *
37385 * @method fromUtf8
37386 * @param {String} string
37387 * @param {Number} optional padding
37388 * @returns {String} hex representation of input string
37389 */
37390 function fromUtf8(stringValue) {
37391 var str = new Buffer(stringValue, 'utf8');
37392
37393 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37394 }
37395
37396 /**
37397 * Should be called to get hex representation (prefixed by 0x) of ascii string
37398 *
37399 * @method fromAscii
37400 * @param {String} string
37401 * @param {Number} optional padding
37402 * @returns {String} hex representation of input string
37403 */
37404 function fromAscii(stringValue) {
37405 var hex = ''; // eslint-disable-line
37406 for (var i = 0; i < stringValue.length; i++) {
37407 // eslint-disable-line
37408 var code = stringValue.charCodeAt(i);
37409 var n = code.toString(16);
37410 hex += n.length < 2 ? '0' + n : n;
37411 }
37412
37413 return '0x' + hex;
37414 }
37415
37416 /**
37417 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37418 *
37419 * @method getKeys get specific key from inner object array of objects
37420 * @param {String} params
37421 * @param {String} key
37422 * @param {Boolean} allowEmpty
37423 * @returns {Array} output just a simple array of output keys
37424 */
37425 function getKeys(params, key, allowEmpty) {
37426 if (!Array.isArray(params)) {
37427 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37428 }
37429 if (typeof key !== 'string') {
37430 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37431 }
37432
37433 var result = []; // eslint-disable-line
37434
37435 for (var i = 0; i < params.length; i++) {
37436 // eslint-disable-line
37437 var value = params[i][key]; // eslint-disable-line
37438 if (allowEmpty && !value) {
37439 value = '';
37440 } else if (typeof value !== 'string') {
37441 throw new Error('invalid abi');
37442 }
37443 result.push(value);
37444 }
37445
37446 return result;
37447 }
37448
37449 /**
37450 * Is the string a hex string.
37451 *
37452 * @method check if string is hex string of specific length
37453 * @param {String} value
37454 * @param {Number} length
37455 * @returns {Boolean} output the string is a hex string
37456 */
37457 function isHexString(value, length) {
37458 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37459 return false;
37460 }
37461
37462 if (length && value.length !== 2 + 2 * length) {
37463 return false;
37464 }
37465
37466 return true;
37467 }
37468
37469 module.exports = {
37470 arrayContainsArray: arrayContainsArray,
37471 intToBuffer: intToBuffer,
37472 getBinarySize: getBinarySize,
37473 isHexPrefixed: isHexPrefixed,
37474 stripHexPrefix: stripHexPrefix,
37475 padToEven: padToEven,
37476 intToHex: intToHex,
37477 fromAscii: fromAscii,
37478 fromUtf8: fromUtf8,
37479 toAscii: toAscii,
37480 toUtf8: toUtf8,
37481 getKeys: getKeys,
37482 isHexString: isHexString
37483 };
37484 }).call(this,require("buffer").Buffer)
37485 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37486 var hash = exports;
37487
37488 hash.utils = require('./hash/utils');
37489 hash.common = require('./hash/common');
37490 hash.sha = require('./hash/sha');
37491 hash.ripemd = require('./hash/ripemd');
37492 hash.hmac = require('./hash/hmac');
37493
37494 // Proxy hash functions to the main object
37495 hash.sha1 = hash.sha.sha1;
37496 hash.sha256 = hash.sha.sha256;
37497 hash.sha224 = hash.sha.sha224;
37498 hash.sha384 = hash.sha.sha384;
37499 hash.sha512 = hash.sha.sha512;
37500 hash.ripemd160 = hash.ripemd.ripemd160;
37501
37502 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37503 var hash = require('../hash');
37504 var utils = hash.utils;
37505 var assert = utils.assert;
37506
37507 function BlockHash() {
37508 this.pending = null;
37509 this.pendingTotal = 0;
37510 this.blockSize = this.constructor.blockSize;
37511 this.outSize = this.constructor.outSize;
37512 this.hmacStrength = this.constructor.hmacStrength;
37513 this.padLength = this.constructor.padLength / 8;
37514 this.endian = 'big';
37515
37516 this._delta8 = this.blockSize / 8;
37517 this._delta32 = this.blockSize / 32;
37518 }
37519 exports.BlockHash = BlockHash;
37520
37521 BlockHash.prototype.update = function update(msg, enc) {
37522 // Convert message to array, pad it, and join into 32bit blocks
37523 msg = utils.toArray(msg, enc);
37524 if (!this.pending)
37525 this.pending = msg;
37526 else
37527 this.pending = this.pending.concat(msg);
37528 this.pendingTotal += msg.length;
37529
37530 // Enough data, try updating
37531 if (this.pending.length >= this._delta8) {
37532 msg = this.pending;
37533
37534 // Process pending data in blocks
37535 var r = msg.length % this._delta8;
37536 this.pending = msg.slice(msg.length - r, msg.length);
37537 if (this.pending.length === 0)
37538 this.pending = null;
37539
37540 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37541 for (var i = 0; i < msg.length; i += this._delta32)
37542 this._update(msg, i, i + this._delta32);
37543 }
37544
37545 return this;
37546 };
37547
37548 BlockHash.prototype.digest = function digest(enc) {
37549 this.update(this._pad());
37550 assert(this.pending === null);
37551
37552 return this._digest(enc);
37553 };
37554
37555 BlockHash.prototype._pad = function pad() {
37556 var len = this.pendingTotal;
37557 var bytes = this._delta8;
37558 var k = bytes - ((len + this.padLength) % bytes);
37559 var res = new Array(k + this.padLength);
37560 res[0] = 0x80;
37561 for (var i = 1; i < k; i++)
37562 res[i] = 0;
37563
37564 // Append length
37565 len <<= 3;
37566 if (this.endian === 'big') {
37567 for (var t = 8; t < this.padLength; t++)
37568 res[i++] = 0;
37569
37570 res[i++] = 0;
37571 res[i++] = 0;
37572 res[i++] = 0;
37573 res[i++] = 0;
37574 res[i++] = (len >>> 24) & 0xff;
37575 res[i++] = (len >>> 16) & 0xff;
37576 res[i++] = (len >>> 8) & 0xff;
37577 res[i++] = len & 0xff;
37578 } else {
37579 res[i++] = len & 0xff;
37580 res[i++] = (len >>> 8) & 0xff;
37581 res[i++] = (len >>> 16) & 0xff;
37582 res[i++] = (len >>> 24) & 0xff;
37583 res[i++] = 0;
37584 res[i++] = 0;
37585 res[i++] = 0;
37586 res[i++] = 0;
37587
37588 for (var t = 8; t < this.padLength; t++)
37589 res[i++] = 0;
37590 }
37591
37592 return res;
37593 };
37594
37595 },{"../hash":57}],59:[function(require,module,exports){
37596 var hmac = exports;
37597
37598 var hash = require('../hash');
37599 var utils = hash.utils;
37600 var assert = utils.assert;
37601
37602 function Hmac(hash, key, enc) {
37603 if (!(this instanceof Hmac))
37604 return new Hmac(hash, key, enc);
37605 this.Hash = hash;
37606 this.blockSize = hash.blockSize / 8;
37607 this.outSize = hash.outSize / 8;
37608 this.inner = null;
37609 this.outer = null;
37610
37611 this._init(utils.toArray(key, enc));
37612 }
37613 module.exports = Hmac;
37614
37615 Hmac.prototype._init = function init(key) {
37616 // Shorten key, if needed
37617 if (key.length > this.blockSize)
37618 key = new this.Hash().update(key).digest();
37619 assert(key.length <= this.blockSize);
37620
37621 // Add padding to key
37622 for (var i = key.length; i < this.blockSize; i++)
37623 key.push(0);
37624
37625 for (var i = 0; i < key.length; i++)
37626 key[i] ^= 0x36;
37627 this.inner = new this.Hash().update(key);
37628
37629 // 0x36 ^ 0x5c = 0x6a
37630 for (var i = 0; i < key.length; i++)
37631 key[i] ^= 0x6a;
37632 this.outer = new this.Hash().update(key);
37633 };
37634
37635 Hmac.prototype.update = function update(msg, enc) {
37636 this.inner.update(msg, enc);
37637 return this;
37638 };
37639
37640 Hmac.prototype.digest = function digest(enc) {
37641 this.outer.update(this.inner.digest());
37642 return this.outer.digest(enc);
37643 };
37644
37645 },{"../hash":57}],60:[function(require,module,exports){
37646 var hash = require('../hash');
37647 var utils = hash.utils;
37648
37649 var rotl32 = utils.rotl32;
37650 var sum32 = utils.sum32;
37651 var sum32_3 = utils.sum32_3;
37652 var sum32_4 = utils.sum32_4;
37653 var BlockHash = hash.common.BlockHash;
37654
37655 function RIPEMD160() {
37656 if (!(this instanceof RIPEMD160))
37657 return new RIPEMD160();
37658
37659 BlockHash.call(this);
37660
37661 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37662 this.endian = 'little';
37663 }
37664 utils.inherits(RIPEMD160, BlockHash);
37665 exports.ripemd160 = RIPEMD160;
37666
37667 RIPEMD160.blockSize = 512;
37668 RIPEMD160.outSize = 160;
37669 RIPEMD160.hmacStrength = 192;
37670 RIPEMD160.padLength = 64;
37671
37672 RIPEMD160.prototype._update = function update(msg, start) {
37673 var A = this.h[0];
37674 var B = this.h[1];
37675 var C = this.h[2];
37676 var D = this.h[3];
37677 var E = this.h[4];
37678 var Ah = A;
37679 var Bh = B;
37680 var Ch = C;
37681 var Dh = D;
37682 var Eh = E;
37683 for (var j = 0; j < 80; j++) {
37684 var T = sum32(
37685 rotl32(
37686 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37687 s[j]),
37688 E);
37689 A = E;
37690 E = D;
37691 D = rotl32(C, 10);
37692 C = B;
37693 B = T;
37694 T = sum32(
37695 rotl32(
37696 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37697 sh[j]),
37698 Eh);
37699 Ah = Eh;
37700 Eh = Dh;
37701 Dh = rotl32(Ch, 10);
37702 Ch = Bh;
37703 Bh = T;
37704 }
37705 T = sum32_3(this.h[1], C, Dh);
37706 this.h[1] = sum32_3(this.h[2], D, Eh);
37707 this.h[2] = sum32_3(this.h[3], E, Ah);
37708 this.h[3] = sum32_3(this.h[4], A, Bh);
37709 this.h[4] = sum32_3(this.h[0], B, Ch);
37710 this.h[0] = T;
37711 };
37712
37713 RIPEMD160.prototype._digest = function digest(enc) {
37714 if (enc === 'hex')
37715 return utils.toHex32(this.h, 'little');
37716 else
37717 return utils.split32(this.h, 'little');
37718 };
37719
37720 function f(j, x, y, z) {
37721 if (j <= 15)
37722 return x ^ y ^ z;
37723 else if (j <= 31)
37724 return (x & y) | ((~x) & z);
37725 else if (j <= 47)
37726 return (x | (~y)) ^ z;
37727 else if (j <= 63)
37728 return (x & z) | (y & (~z));
37729 else
37730 return x ^ (y | (~z));
37731 }
37732
37733 function K(j) {
37734 if (j <= 15)
37735 return 0x00000000;
37736 else if (j <= 31)
37737 return 0x5a827999;
37738 else if (j <= 47)
37739 return 0x6ed9eba1;
37740 else if (j <= 63)
37741 return 0x8f1bbcdc;
37742 else
37743 return 0xa953fd4e;
37744 }
37745
37746 function Kh(j) {
37747 if (j <= 15)
37748 return 0x50a28be6;
37749 else if (j <= 31)
37750 return 0x5c4dd124;
37751 else if (j <= 47)
37752 return 0x6d703ef3;
37753 else if (j <= 63)
37754 return 0x7a6d76e9;
37755 else
37756 return 0x00000000;
37757 }
37758
37759 var r = [
37760 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37761 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37762 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37763 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37764 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37765 ];
37766
37767 var rh = [
37768 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37769 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37770 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37771 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37772 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37773 ];
37774
37775 var s = [
37776 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37777 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37778 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37779 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37780 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37781 ];
37782
37783 var sh = [
37784 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37785 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37786 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37787 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37788 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37789 ];
37790
37791 },{"../hash":57}],61:[function(require,module,exports){
37792 var hash = require('../hash');
37793 var utils = hash.utils;
37794 var assert = utils.assert;
37795
37796 var rotr32 = utils.rotr32;
37797 var rotl32 = utils.rotl32;
37798 var sum32 = utils.sum32;
37799 var sum32_4 = utils.sum32_4;
37800 var sum32_5 = utils.sum32_5;
37801 var rotr64_hi = utils.rotr64_hi;
37802 var rotr64_lo = utils.rotr64_lo;
37803 var shr64_hi = utils.shr64_hi;
37804 var shr64_lo = utils.shr64_lo;
37805 var sum64 = utils.sum64;
37806 var sum64_hi = utils.sum64_hi;
37807 var sum64_lo = utils.sum64_lo;
37808 var sum64_4_hi = utils.sum64_4_hi;
37809 var sum64_4_lo = utils.sum64_4_lo;
37810 var sum64_5_hi = utils.sum64_5_hi;
37811 var sum64_5_lo = utils.sum64_5_lo;
37812 var BlockHash = hash.common.BlockHash;
37813
37814 var sha256_K = [
37815 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37816 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37817 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37818 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37819 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37820 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37821 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37822 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37823 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37824 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37825 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37826 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37827 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37828 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37829 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37830 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37831 ];
37832
37833 var sha512_K = [
37834 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37835 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37836 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37837 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37838 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37839 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37840 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37841 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37842 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37843 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37844 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37845 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37846 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37847 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37848 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37849 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37850 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37851 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37852 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37853 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37854 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37855 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37856 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37857 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37858 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37859 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37860 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37861 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37862 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37863 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37864 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37865 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37866 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37867 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37868 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37869 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37870 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37871 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37872 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37873 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37874 ];
37875
37876 var sha1_K = [
37877 0x5A827999, 0x6ED9EBA1,
37878 0x8F1BBCDC, 0xCA62C1D6
37879 ];
37880
37881 function SHA256() {
37882 if (!(this instanceof SHA256))
37883 return new SHA256();
37884
37885 BlockHash.call(this);
37886 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37887 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37888 this.k = sha256_K;
37889 this.W = new Array(64);
37890 }
37891 utils.inherits(SHA256, BlockHash);
37892 exports.sha256 = SHA256;
37893
37894 SHA256.blockSize = 512;
37895 SHA256.outSize = 256;
37896 SHA256.hmacStrength = 192;
37897 SHA256.padLength = 64;
37898
37899 SHA256.prototype._update = function _update(msg, start) {
37900 var W = this.W;
37901
37902 for (var i = 0; i < 16; i++)
37903 W[i] = msg[start + i];
37904 for (; i < W.length; i++)
37905 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37906
37907 var a = this.h[0];
37908 var b = this.h[1];
37909 var c = this.h[2];
37910 var d = this.h[3];
37911 var e = this.h[4];
37912 var f = this.h[5];
37913 var g = this.h[6];
37914 var h = this.h[7];
37915
37916 assert(this.k.length === W.length);
37917 for (var i = 0; i < W.length; i++) {
37918 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
37919 var T2 = sum32(s0_256(a), maj32(a, b, c));
37920 h = g;
37921 g = f;
37922 f = e;
37923 e = sum32(d, T1);
37924 d = c;
37925 c = b;
37926 b = a;
37927 a = sum32(T1, T2);
37928 }
37929
37930 this.h[0] = sum32(this.h[0], a);
37931 this.h[1] = sum32(this.h[1], b);
37932 this.h[2] = sum32(this.h[2], c);
37933 this.h[3] = sum32(this.h[3], d);
37934 this.h[4] = sum32(this.h[4], e);
37935 this.h[5] = sum32(this.h[5], f);
37936 this.h[6] = sum32(this.h[6], g);
37937 this.h[7] = sum32(this.h[7], h);
37938 };
37939
37940 SHA256.prototype._digest = function digest(enc) {
37941 if (enc === 'hex')
37942 return utils.toHex32(this.h, 'big');
37943 else
37944 return utils.split32(this.h, 'big');
37945 };
37946
37947 function SHA224() {
37948 if (!(this instanceof SHA224))
37949 return new SHA224();
37950
37951 SHA256.call(this);
37952 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
37953 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
37954 }
37955 utils.inherits(SHA224, SHA256);
37956 exports.sha224 = SHA224;
37957
37958 SHA224.blockSize = 512;
37959 SHA224.outSize = 224;
37960 SHA224.hmacStrength = 192;
37961 SHA224.padLength = 64;
37962
37963 SHA224.prototype._digest = function digest(enc) {
37964 // Just truncate output
37965 if (enc === 'hex')
37966 return utils.toHex32(this.h.slice(0, 7), 'big');
37967 else
37968 return utils.split32(this.h.slice(0, 7), 'big');
37969 };
37970
37971 function SHA512() {
37972 if (!(this instanceof SHA512))
37973 return new SHA512();
37974
37975 BlockHash.call(this);
37976 this.h = [ 0x6a09e667, 0xf3bcc908,
37977 0xbb67ae85, 0x84caa73b,
37978 0x3c6ef372, 0xfe94f82b,
37979 0xa54ff53a, 0x5f1d36f1,
37980 0x510e527f, 0xade682d1,
37981 0x9b05688c, 0x2b3e6c1f,
37982 0x1f83d9ab, 0xfb41bd6b,
37983 0x5be0cd19, 0x137e2179 ];
37984 this.k = sha512_K;
37985 this.W = new Array(160);
37986 }
37987 utils.inherits(SHA512, BlockHash);
37988 exports.sha512 = SHA512;
37989
37990 SHA512.blockSize = 1024;
37991 SHA512.outSize = 512;
37992 SHA512.hmacStrength = 192;
37993 SHA512.padLength = 128;
37994
37995 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
37996 var W = this.W;
37997
37998 // 32 x 32bit words
37999 for (var i = 0; i < 32; i++)
38000 W[i] = msg[start + i];
38001 for (; i < W.length; i += 2) {
38002 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
38003 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
38004 var c1_hi = W[i - 14]; // i - 7
38005 var c1_lo = W[i - 13];
38006 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
38007 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
38008 var c3_hi = W[i - 32]; // i - 16
38009 var c3_lo = W[i - 31];
38010
38011 W[i] = sum64_4_hi(c0_hi, c0_lo,
38012 c1_hi, c1_lo,
38013 c2_hi, c2_lo,
38014 c3_hi, c3_lo);
38015 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
38016 c1_hi, c1_lo,
38017 c2_hi, c2_lo,
38018 c3_hi, c3_lo);
38019 }
38020 };
38021
38022 SHA512.prototype._update = function _update(msg, start) {
38023 this._prepareBlock(msg, start);
38024
38025 var W = this.W;
38026
38027 var ah = this.h[0];
38028 var al = this.h[1];
38029 var bh = this.h[2];
38030 var bl = this.h[3];
38031 var ch = this.h[4];
38032 var cl = this.h[5];
38033 var dh = this.h[6];
38034 var dl = this.h[7];
38035 var eh = this.h[8];
38036 var el = this.h[9];
38037 var fh = this.h[10];
38038 var fl = this.h[11];
38039 var gh = this.h[12];
38040 var gl = this.h[13];
38041 var hh = this.h[14];
38042 var hl = this.h[15];
38043
38044 assert(this.k.length === W.length);
38045 for (var i = 0; i < W.length; i += 2) {
38046 var c0_hi = hh;
38047 var c0_lo = hl;
38048 var c1_hi = s1_512_hi(eh, el);
38049 var c1_lo = s1_512_lo(eh, el);
38050 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38051 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38052 var c3_hi = this.k[i];
38053 var c3_lo = this.k[i + 1];
38054 var c4_hi = W[i];
38055 var c4_lo = W[i + 1];
38056
38057 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38058 c1_hi, c1_lo,
38059 c2_hi, c2_lo,
38060 c3_hi, c3_lo,
38061 c4_hi, c4_lo);
38062 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38063 c1_hi, c1_lo,
38064 c2_hi, c2_lo,
38065 c3_hi, c3_lo,
38066 c4_hi, c4_lo);
38067
38068 var c0_hi = s0_512_hi(ah, al);
38069 var c0_lo = s0_512_lo(ah, al);
38070 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38071 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38072
38073 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38074 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38075
38076 hh = gh;
38077 hl = gl;
38078
38079 gh = fh;
38080 gl = fl;
38081
38082 fh = eh;
38083 fl = el;
38084
38085 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38086 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38087
38088 dh = ch;
38089 dl = cl;
38090
38091 ch = bh;
38092 cl = bl;
38093
38094 bh = ah;
38095 bl = al;
38096
38097 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38098 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38099 }
38100
38101 sum64(this.h, 0, ah, al);
38102 sum64(this.h, 2, bh, bl);
38103 sum64(this.h, 4, ch, cl);
38104 sum64(this.h, 6, dh, dl);
38105 sum64(this.h, 8, eh, el);
38106 sum64(this.h, 10, fh, fl);
38107 sum64(this.h, 12, gh, gl);
38108 sum64(this.h, 14, hh, hl);
38109 };
38110
38111 SHA512.prototype._digest = function digest(enc) {
38112 if (enc === 'hex')
38113 return utils.toHex32(this.h, 'big');
38114 else
38115 return utils.split32(this.h, 'big');
38116 };
38117
38118 function SHA384() {
38119 if (!(this instanceof SHA384))
38120 return new SHA384();
38121
38122 SHA512.call(this);
38123 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38124 0x629a292a, 0x367cd507,
38125 0x9159015a, 0x3070dd17,
38126 0x152fecd8, 0xf70e5939,
38127 0x67332667, 0xffc00b31,
38128 0x8eb44a87, 0x68581511,
38129 0xdb0c2e0d, 0x64f98fa7,
38130 0x47b5481d, 0xbefa4fa4 ];
38131 }
38132 utils.inherits(SHA384, SHA512);
38133 exports.sha384 = SHA384;
38134
38135 SHA384.blockSize = 1024;
38136 SHA384.outSize = 384;
38137 SHA384.hmacStrength = 192;
38138 SHA384.padLength = 128;
38139
38140 SHA384.prototype._digest = function digest(enc) {
38141 if (enc === 'hex')
38142 return utils.toHex32(this.h.slice(0, 12), 'big');
38143 else
38144 return utils.split32(this.h.slice(0, 12), 'big');
38145 };
38146
38147 function SHA1() {
38148 if (!(this instanceof SHA1))
38149 return new SHA1();
38150
38151 BlockHash.call(this);
38152 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38153 0x10325476, 0xc3d2e1f0 ];
38154 this.W = new Array(80);
38155 }
38156
38157 utils.inherits(SHA1, BlockHash);
38158 exports.sha1 = SHA1;
38159
38160 SHA1.blockSize = 512;
38161 SHA1.outSize = 160;
38162 SHA1.hmacStrength = 80;
38163 SHA1.padLength = 64;
38164
38165 SHA1.prototype._update = function _update(msg, start) {
38166 var W = this.W;
38167
38168 for (var i = 0; i < 16; i++)
38169 W[i] = msg[start + i];
38170
38171 for(; i < W.length; i++)
38172 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
38173
38174 var a = this.h[0];
38175 var b = this.h[1];
38176 var c = this.h[2];
38177 var d = this.h[3];
38178 var e = this.h[4];
38179
38180 for (var i = 0; i < W.length; i++) {
38181 var s = ~~(i / 20);
38182 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38183 e = d;
38184 d = c;
38185 c = rotl32(b, 30);
38186 b = a;
38187 a = t;
38188 }
38189
38190 this.h[0] = sum32(this.h[0], a);
38191 this.h[1] = sum32(this.h[1], b);
38192 this.h[2] = sum32(this.h[2], c);
38193 this.h[3] = sum32(this.h[3], d);
38194 this.h[4] = sum32(this.h[4], e);
38195 };
38196
38197 SHA1.prototype._digest = function digest(enc) {
38198 if (enc === 'hex')
38199 return utils.toHex32(this.h, 'big');
38200 else
38201 return utils.split32(this.h, 'big');
38202 };
38203
38204 function ch32(x, y, z) {
38205 return (x & y) ^ ((~x) & z);
38206 }
38207
38208 function maj32(x, y, z) {
38209 return (x & y) ^ (x & z) ^ (y & z);
38210 }
38211
38212 function p32(x, y, z) {
38213 return x ^ y ^ z;
38214 }
38215
38216 function s0_256(x) {
38217 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38218 }
38219
38220 function s1_256(x) {
38221 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
38222 }
38223
38224 function g0_256(x) {
38225 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38226 }
38227
38228 function g1_256(x) {
38229 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38230 }
38231
38232 function ft_1(s, x, y, z) {
38233 if (s === 0)
38234 return ch32(x, y, z);
38235 if (s === 1 || s === 3)
38236 return p32(x, y, z);
38237 if (s === 2)
38238 return maj32(x, y, z);
38239 }
38240
38241 function ch64_hi(xh, xl, yh, yl, zh, zl) {
38242 var r = (xh & yh) ^ ((~xh) & zh);
38243 if (r < 0)
38244 r += 0x100000000;
38245 return r;
38246 }
38247
38248 function ch64_lo(xh, xl, yh, yl, zh, zl) {
38249 var r = (xl & yl) ^ ((~xl) & zl);
38250 if (r < 0)
38251 r += 0x100000000;
38252 return r;
38253 }
38254
38255 function maj64_hi(xh, xl, yh, yl, zh, zl) {
38256 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38257 if (r < 0)
38258 r += 0x100000000;
38259 return r;
38260 }
38261
38262 function maj64_lo(xh, xl, yh, yl, zh, zl) {
38263 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38264 if (r < 0)
38265 r += 0x100000000;
38266 return r;
38267 }
38268
38269 function s0_512_hi(xh, xl) {
38270 var c0_hi = rotr64_hi(xh, xl, 28);
38271 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38272 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38273
38274 var r = c0_hi ^ c1_hi ^ c2_hi;
38275 if (r < 0)
38276 r += 0x100000000;
38277 return r;
38278 }
38279
38280 function s0_512_lo(xh, xl) {
38281 var c0_lo = rotr64_lo(xh, xl, 28);
38282 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38283 var c2_lo = rotr64_lo(xl, xh, 7); // 39
38284
38285 var r = c0_lo ^ c1_lo ^ c2_lo;
38286 if (r < 0)
38287 r += 0x100000000;
38288 return r;
38289 }
38290
38291 function s1_512_hi(xh, xl) {
38292 var c0_hi = rotr64_hi(xh, xl, 14);
38293 var c1_hi = rotr64_hi(xh, xl, 18);
38294 var c2_hi = rotr64_hi(xl, xh, 9); // 41
38295
38296 var r = c0_hi ^ c1_hi ^ c2_hi;
38297 if (r < 0)
38298 r += 0x100000000;
38299 return r;
38300 }
38301
38302 function s1_512_lo(xh, xl) {
38303 var c0_lo = rotr64_lo(xh, xl, 14);
38304 var c1_lo = rotr64_lo(xh, xl, 18);
38305 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38306
38307 var r = c0_lo ^ c1_lo ^ c2_lo;
38308 if (r < 0)
38309 r += 0x100000000;
38310 return r;
38311 }
38312
38313 function g0_512_hi(xh, xl) {
38314 var c0_hi = rotr64_hi(xh, xl, 1);
38315 var c1_hi = rotr64_hi(xh, xl, 8);
38316 var c2_hi = shr64_hi(xh, xl, 7);
38317
38318 var r = c0_hi ^ c1_hi ^ c2_hi;
38319 if (r < 0)
38320 r += 0x100000000;
38321 return r;
38322 }
38323
38324 function g0_512_lo(xh, xl) {
38325 var c0_lo = rotr64_lo(xh, xl, 1);
38326 var c1_lo = rotr64_lo(xh, xl, 8);
38327 var c2_lo = shr64_lo(xh, xl, 7);
38328
38329 var r = c0_lo ^ c1_lo ^ c2_lo;
38330 if (r < 0)
38331 r += 0x100000000;
38332 return r;
38333 }
38334
38335 function g1_512_hi(xh, xl) {
38336 var c0_hi = rotr64_hi(xh, xl, 19);
38337 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38338 var c2_hi = shr64_hi(xh, xl, 6);
38339
38340 var r = c0_hi ^ c1_hi ^ c2_hi;
38341 if (r < 0)
38342 r += 0x100000000;
38343 return r;
38344 }
38345
38346 function g1_512_lo(xh, xl) {
38347 var c0_lo = rotr64_lo(xh, xl, 19);
38348 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38349 var c2_lo = shr64_lo(xh, xl, 6);
38350
38351 var r = c0_lo ^ c1_lo ^ c2_lo;
38352 if (r < 0)
38353 r += 0x100000000;
38354 return r;
38355 }
38356
38357 },{"../hash":57}],62:[function(require,module,exports){
38358 var utils = exports;
38359 var inherits = require('inherits');
38360
38361 function toArray(msg, enc) {
38362 if (Array.isArray(msg))
38363 return msg.slice();
38364 if (!msg)
38365 return [];
38366 var res = [];
38367 if (typeof msg === 'string') {
38368 if (!enc) {
38369 for (var i = 0; i < msg.length; i++) {
38370 var c = msg.charCodeAt(i);
38371 var hi = c >> 8;
38372 var lo = c & 0xff;
38373 if (hi)
38374 res.push(hi, lo);
38375 else
38376 res.push(lo);
38377 }
38378 } else if (enc === 'hex') {
38379 msg = msg.replace(/[^a-z0-9]+/ig, '');
38380 if (msg.length % 2 !== 0)
38381 msg = '0' + msg;
38382 for (var i = 0; i < msg.length; i += 2)
38383 res.push(parseInt(msg[i] + msg[i + 1], 16));
38384 }
38385 } else {
38386 for (var i = 0; i < msg.length; i++)
38387 res[i] = msg[i] | 0;
38388 }
38389 return res;
38390 }
38391 utils.toArray = toArray;
38392
38393 function toHex(msg) {
38394 var res = '';
38395 for (var i = 0; i < msg.length; i++)
38396 res += zero2(msg[i].toString(16));
38397 return res;
38398 }
38399 utils.toHex = toHex;
38400
38401 function htonl(w) {
38402 var res = (w >>> 24) |
38403 ((w >>> 8) & 0xff00) |
38404 ((w << 8) & 0xff0000) |
38405 ((w & 0xff) << 24);
38406 return res >>> 0;
38407 }
38408 utils.htonl = htonl;
38409
38410 function toHex32(msg, endian) {
38411 var res = '';
38412 for (var i = 0; i < msg.length; i++) {
38413 var w = msg[i];
38414 if (endian === 'little')
38415 w = htonl(w);
38416 res += zero8(w.toString(16));
38417 }
38418 return res;
38419 }
38420 utils.toHex32 = toHex32;
38421
38422 function zero2(word) {
38423 if (word.length === 1)
38424 return '0' + word;
38425 else
38426 return word;
38427 }
38428 utils.zero2 = zero2;
38429
38430 function zero8(word) {
38431 if (word.length === 7)
38432 return '0' + word;
38433 else if (word.length === 6)
38434 return '00' + word;
38435 else if (word.length === 5)
38436 return '000' + word;
38437 else if (word.length === 4)
38438 return '0000' + word;
38439 else if (word.length === 3)
38440 return '00000' + word;
38441 else if (word.length === 2)
38442 return '000000' + word;
38443 else if (word.length === 1)
38444 return '0000000' + word;
38445 else
38446 return word;
38447 }
38448 utils.zero8 = zero8;
38449
38450 function join32(msg, start, end, endian) {
38451 var len = end - start;
38452 assert(len % 4 === 0);
38453 var res = new Array(len / 4);
38454 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38455 var w;
38456 if (endian === 'big')
38457 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38458 else
38459 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38460 res[i] = w >>> 0;
38461 }
38462 return res;
38463 }
38464 utils.join32 = join32;
38465
38466 function split32(msg, endian) {
38467 var res = new Array(msg.length * 4);
38468 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38469 var m = msg[i];
38470 if (endian === 'big') {
38471 res[k] = m >>> 24;
38472 res[k + 1] = (m >>> 16) & 0xff;
38473 res[k + 2] = (m >>> 8) & 0xff;
38474 res[k + 3] = m & 0xff;
38475 } else {
38476 res[k + 3] = m >>> 24;
38477 res[k + 2] = (m >>> 16) & 0xff;
38478 res[k + 1] = (m >>> 8) & 0xff;
38479 res[k] = m & 0xff;
38480 }
38481 }
38482 return res;
38483 }
38484 utils.split32 = split32;
38485
38486 function rotr32(w, b) {
38487 return (w >>> b) | (w << (32 - b));
38488 }
38489 utils.rotr32 = rotr32;
38490
38491 function rotl32(w, b) {
38492 return (w << b) | (w >>> (32 - b));
38493 }
38494 utils.rotl32 = rotl32;
38495
38496 function sum32(a, b) {
38497 return (a + b) >>> 0;
38498 }
38499 utils.sum32 = sum32;
38500
38501 function sum32_3(a, b, c) {
38502 return (a + b + c) >>> 0;
38503 }
38504 utils.sum32_3 = sum32_3;
38505
38506 function sum32_4(a, b, c, d) {
38507 return (a + b + c + d) >>> 0;
38508 }
38509 utils.sum32_4 = sum32_4;
38510
38511 function sum32_5(a, b, c, d, e) {
38512 return (a + b + c + d + e) >>> 0;
38513 }
38514 utils.sum32_5 = sum32_5;
38515
38516 function assert(cond, msg) {
38517 if (!cond)
38518 throw new Error(msg || 'Assertion failed');
38519 }
38520 utils.assert = assert;
38521
38522 utils.inherits = inherits;
38523
38524 function sum64(buf, pos, ah, al) {
38525 var bh = buf[pos];
38526 var bl = buf[pos + 1];
38527
38528 var lo = (al + bl) >>> 0;
38529 var hi = (lo < al ? 1 : 0) + ah + bh;
38530 buf[pos] = hi >>> 0;
38531 buf[pos + 1] = lo;
38532 }
38533 exports.sum64 = sum64;
38534
38535 function sum64_hi(ah, al, bh, bl) {
38536 var lo = (al + bl) >>> 0;
38537 var hi = (lo < al ? 1 : 0) + ah + bh;
38538 return hi >>> 0;
38539 };
38540 exports.sum64_hi = sum64_hi;
38541
38542 function sum64_lo(ah, al, bh, bl) {
38543 var lo = al + bl;
38544 return lo >>> 0;
38545 };
38546 exports.sum64_lo = sum64_lo;
38547
38548 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38549 var carry = 0;
38550 var lo = al;
38551 lo = (lo + bl) >>> 0;
38552 carry += lo < al ? 1 : 0;
38553 lo = (lo + cl) >>> 0;
38554 carry += lo < cl ? 1 : 0;
38555 lo = (lo + dl) >>> 0;
38556 carry += lo < dl ? 1 : 0;
38557
38558 var hi = ah + bh + ch + dh + carry;
38559 return hi >>> 0;
38560 };
38561 exports.sum64_4_hi = sum64_4_hi;
38562
38563 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38564 var lo = al + bl + cl + dl;
38565 return lo >>> 0;
38566 };
38567 exports.sum64_4_lo = sum64_4_lo;
38568
38569 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38570 var carry = 0;
38571 var lo = al;
38572 lo = (lo + bl) >>> 0;
38573 carry += lo < al ? 1 : 0;
38574 lo = (lo + cl) >>> 0;
38575 carry += lo < cl ? 1 : 0;
38576 lo = (lo + dl) >>> 0;
38577 carry += lo < dl ? 1 : 0;
38578 lo = (lo + el) >>> 0;
38579 carry += lo < el ? 1 : 0;
38580
38581 var hi = ah + bh + ch + dh + eh + carry;
38582 return hi >>> 0;
38583 };
38584 exports.sum64_5_hi = sum64_5_hi;
38585
38586 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38587 var lo = al + bl + cl + dl + el;
38588
38589 return lo >>> 0;
38590 };
38591 exports.sum64_5_lo = sum64_5_lo;
38592
38593 function rotr64_hi(ah, al, num) {
38594 var r = (al << (32 - num)) | (ah >>> num);
38595 return r >>> 0;
38596 };
38597 exports.rotr64_hi = rotr64_hi;
38598
38599 function rotr64_lo(ah, al, num) {
38600 var r = (ah << (32 - num)) | (al >>> num);
38601 return r >>> 0;
38602 };
38603 exports.rotr64_lo = rotr64_lo;
38604
38605 function shr64_hi(ah, al, num) {
38606 return ah >>> num;
38607 };
38608 exports.shr64_hi = shr64_hi;
38609
38610 function shr64_lo(ah, al, num) {
38611 var r = (ah << (32 - num)) | (al >>> num);
38612 return r >>> 0;
38613 };
38614 exports.shr64_lo = shr64_lo;
38615
38616 },{"inherits":63}],63:[function(require,module,exports){
38617 arguments[4][9][0].apply(exports,arguments)
38618 },{"dup":9}],64:[function(require,module,exports){
38619 /**
38620 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38621 * @param {String} str the string input value
38622 * @return {Boolean} a boolean if it is or is not hex prefixed
38623 * @throws if the str input is not a string
38624 */
38625 module.exports = function isHexPrefixed(str) {
38626 if (typeof str !== 'string') {
38627 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38628 }
38629
38630 return str.slice(0, 2) === '0x';
38631 }
38632
38633 },{}],65:[function(require,module,exports){
38634 'use strict'
38635 module.exports = require('./lib/api')(require('./lib/keccak'))
38636
38637 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38638 'use strict'
38639 var createKeccak = require('./keccak')
38640 var createShake = require('./shake')
38641
38642 module.exports = function (KeccakState) {
38643 var Keccak = createKeccak(KeccakState)
38644 var Shake = createShake(KeccakState)
38645
38646 return function (algorithm, options) {
38647 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38648 switch (hash) {
38649 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38650 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38651 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38652 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38653
38654 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38655 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38656 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38657 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38658
38659 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38660 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38661
38662 default: throw new Error('Invald algorithm: ' + algorithm)
38663 }
38664 }
38665 }
38666
38667 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
38668 (function (Buffer){
38669 'use strict'
38670 var Transform = require('stream').Transform
38671 var inherits = require('inherits')
38672
38673 module.exports = function (KeccakState) {
38674 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38675 Transform.call(this, options)
38676
38677 this._rate = rate
38678 this._capacity = capacity
38679 this._delimitedSuffix = delimitedSuffix
38680 this._hashBitLength = hashBitLength
38681 this._options = options
38682
38683 this._state = new KeccakState()
38684 this._state.initialize(rate, capacity)
38685 this._finalized = false
38686 }
38687
38688 inherits(Keccak, Transform)
38689
38690 Keccak.prototype._transform = function (chunk, encoding, callback) {
38691 var error = null
38692 try {
38693 this.update(chunk, encoding)
38694 } catch (err) {
38695 error = err
38696 }
38697
38698 callback(error)
38699 }
38700
38701 Keccak.prototype._flush = function (callback) {
38702 var error = null
38703 try {
38704 this.push(this.digest())
38705 } catch (err) {
38706 error = err
38707 }
38708
38709 callback(error)
38710 }
38711
38712 Keccak.prototype.update = function (data, encoding) {
38713 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38714 if (this._finalized) throw new Error('Digest already called')
38715 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38716
38717 this._state.absorb(data)
38718
38719 return this
38720 }
38721
38722 Keccak.prototype.digest = function (encoding) {
38723 if (this._finalized) throw new Error('Digest already called')
38724 this._finalized = true
38725
38726 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38727 var digest = this._state.squeeze(this._hashBitLength / 8)
38728 if (encoding !== undefined) digest = digest.toString(encoding)
38729
38730 this._resetState()
38731
38732 return digest
38733 }
38734
38735 // remove result from memory
38736 Keccak.prototype._resetState = function () {
38737 this._state.initialize(this._rate, this._capacity)
38738 return this
38739 }
38740
38741 // because sometimes we need hash right now and little later
38742 Keccak.prototype._clone = function () {
38743 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38744 this._state.copy(clone._state)
38745 clone._finalized = this._finalized
38746
38747 return clone
38748 }
38749
38750 return Keccak
38751 }
38752
38753 }).call(this,require("buffer").Buffer)
38754 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38755 (function (Buffer){
38756 'use strict'
38757 var Transform = require('stream').Transform
38758 var inherits = require('inherits')
38759
38760 module.exports = function (KeccakState) {
38761 function Shake (rate, capacity, delimitedSuffix, options) {
38762 Transform.call(this, options)
38763
38764 this._rate = rate
38765 this._capacity = capacity
38766 this._delimitedSuffix = delimitedSuffix
38767 this._options = options
38768
38769 this._state = new KeccakState()
38770 this._state.initialize(rate, capacity)
38771 this._finalized = false
38772 }
38773
38774 inherits(Shake, Transform)
38775
38776 Shake.prototype._transform = function (chunk, encoding, callback) {
38777 var error = null
38778 try {
38779 this.update(chunk, encoding)
38780 } catch (err) {
38781 error = err
38782 }
38783
38784 callback(error)
38785 }
38786
38787 Shake.prototype._flush = function () {}
38788
38789 Shake.prototype._read = function (size) {
38790 this.push(this.squeeze(size))
38791 }
38792
38793 Shake.prototype.update = function (data, encoding) {
38794 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38795 if (this._finalized) throw new Error('Squeeze already called')
38796 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38797
38798 this._state.absorb(data)
38799
38800 return this
38801 }
38802
38803 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38804 if (!this._finalized) {
38805 this._finalized = true
38806 this._state.absorbLastFewBits(this._delimitedSuffix)
38807 }
38808
38809 var data = this._state.squeeze(dataByteLength)
38810 if (encoding !== undefined) data = data.toString(encoding)
38811
38812 return data
38813 }
38814
38815 Shake.prototype._resetState = function () {
38816 this._state.initialize(this._rate, this._capacity)
38817 return this
38818 }
38819
38820 Shake.prototype._clone = function () {
38821 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38822 this._state.copy(clone._state)
38823 clone._finalized = this._finalized
38824
38825 return clone
38826 }
38827
38828 return Shake
38829 }
38830
38831 }).call(this,require("buffer").Buffer)
38832 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38833 'use strict'
38834 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]
38835
38836 exports.p1600 = function (s) {
38837 for (var round = 0; round < 24; ++round) {
38838 // theta
38839 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38840 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38841 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38842 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38843 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38844 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38845 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38846 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38847 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38848 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38849
38850 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38851 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38852 var t1slo0 = s[0] ^ lo
38853 var t1shi0 = s[1] ^ hi
38854 var t1slo5 = s[10] ^ lo
38855 var t1shi5 = s[11] ^ hi
38856 var t1slo10 = s[20] ^ lo
38857 var t1shi10 = s[21] ^ hi
38858 var t1slo15 = s[30] ^ lo
38859 var t1shi15 = s[31] ^ hi
38860 var t1slo20 = s[40] ^ lo
38861 var t1shi20 = s[41] ^ hi
38862 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38863 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38864 var t1slo1 = s[2] ^ lo
38865 var t1shi1 = s[3] ^ hi
38866 var t1slo6 = s[12] ^ lo
38867 var t1shi6 = s[13] ^ hi
38868 var t1slo11 = s[22] ^ lo
38869 var t1shi11 = s[23] ^ hi
38870 var t1slo16 = s[32] ^ lo
38871 var t1shi16 = s[33] ^ hi
38872 var t1slo21 = s[42] ^ lo
38873 var t1shi21 = s[43] ^ hi
38874 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38875 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38876 var t1slo2 = s[4] ^ lo
38877 var t1shi2 = s[5] ^ hi
38878 var t1slo7 = s[14] ^ lo
38879 var t1shi7 = s[15] ^ hi
38880 var t1slo12 = s[24] ^ lo
38881 var t1shi12 = s[25] ^ hi
38882 var t1slo17 = s[34] ^ lo
38883 var t1shi17 = s[35] ^ hi
38884 var t1slo22 = s[44] ^ lo
38885 var t1shi22 = s[45] ^ hi
38886 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38887 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38888 var t1slo3 = s[6] ^ lo
38889 var t1shi3 = s[7] ^ hi
38890 var t1slo8 = s[16] ^ lo
38891 var t1shi8 = s[17] ^ hi
38892 var t1slo13 = s[26] ^ lo
38893 var t1shi13 = s[27] ^ hi
38894 var t1slo18 = s[36] ^ lo
38895 var t1shi18 = s[37] ^ hi
38896 var t1slo23 = s[46] ^ lo
38897 var t1shi23 = s[47] ^ hi
38898 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38899 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38900 var t1slo4 = s[8] ^ lo
38901 var t1shi4 = s[9] ^ hi
38902 var t1slo9 = s[18] ^ lo
38903 var t1shi9 = s[19] ^ hi
38904 var t1slo14 = s[28] ^ lo
38905 var t1shi14 = s[29] ^ hi
38906 var t1slo19 = s[38] ^ lo
38907 var t1shi19 = s[39] ^ hi
38908 var t1slo24 = s[48] ^ lo
38909 var t1shi24 = s[49] ^ hi
38910
38911 // rho & pi
38912 var t2slo0 = t1slo0
38913 var t2shi0 = t1shi0
38914 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
38915 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
38916 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
38917 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
38918 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
38919 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
38920 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
38921 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
38922 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
38923 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
38924 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
38925 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
38926 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
38927 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
38928 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
38929 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
38930 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
38931 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
38932 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
38933 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
38934 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
38935 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
38936 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
38937 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
38938 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
38939 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
38940 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
38941 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
38942 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
38943 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
38944 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
38945 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
38946 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
38947 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
38948 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
38949 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
38950 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
38951 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
38952 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
38953 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
38954 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
38955 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
38956 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
38957 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
38958 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
38959 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
38960 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
38961 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
38962
38963 // chi
38964 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
38965 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
38966 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
38967 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
38968 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
38969 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
38970 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
38971 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
38972 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
38973 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
38974 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
38975 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
38976 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
38977 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
38978 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
38979 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
38980 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
38981 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
38982 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
38983 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
38984 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
38985 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
38986 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
38987 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
38988 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
38989 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
38990 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
38991 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
38992 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
38993 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
38994 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
38995 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
38996 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
38997 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
38998 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
38999 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
39000 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
39001 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
39002 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
39003 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
39004 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
39005 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
39006 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
39007 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
39008 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
39009 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
39010 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
39011 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
39012 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
39013 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
39014
39015 // iota
39016 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
39017 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
39018 }
39019 }
39020
39021 },{}],70:[function(require,module,exports){
39022 (function (Buffer){
39023 'use strict'
39024 var keccakState = require('./keccak-state-unroll')
39025
39026 function Keccak () {
39027 // much faster than `new Array(50)`
39028 this.state = [
39029 0, 0, 0, 0, 0,
39030 0, 0, 0, 0, 0,
39031 0, 0, 0, 0, 0,
39032 0, 0, 0, 0, 0,
39033 0, 0, 0, 0, 0
39034 ]
39035
39036 this.blockSize = null
39037 this.count = 0
39038 this.squeezing = false
39039 }
39040
39041 Keccak.prototype.initialize = function (rate, capacity) {
39042 for (var i = 0; i < 50; ++i) this.state[i] = 0
39043 this.blockSize = rate / 8
39044 this.count = 0
39045 this.squeezing = false
39046 }
39047
39048 Keccak.prototype.absorb = function (data) {
39049 for (var i = 0; i < data.length; ++i) {
39050 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39051 this.count += 1
39052 if (this.count === this.blockSize) {
39053 keccakState.p1600(this.state)
39054 this.count = 0
39055 }
39056 }
39057 }
39058
39059 Keccak.prototype.absorbLastFewBits = function (bits) {
39060 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39061 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39062 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39063 keccakState.p1600(this.state)
39064 this.count = 0
39065 this.squeezing = true
39066 }
39067
39068 Keccak.prototype.squeeze = function (length) {
39069 if (!this.squeezing) this.absorbLastFewBits(0x01)
39070
39071 var output = Buffer.allocUnsafe(length)
39072 for (var i = 0; i < length; ++i) {
39073 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39074 this.count += 1
39075 if (this.count === this.blockSize) {
39076 keccakState.p1600(this.state)
39077 this.count = 0
39078 }
39079 }
39080
39081 return output
39082 }
39083
39084 Keccak.prototype.copy = function (dest) {
39085 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39086 dest.blockSize = this.blockSize
39087 dest.count = this.count
39088 dest.squeezing = this.squeezing
39089 }
39090
39091 module.exports = Keccak
39092
39093 }).call(this,require("buffer").Buffer)
39094 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39095 (function (Buffer){
39096 /*
39097 CryptoJS v3.1.2
39098 code.google.com/p/crypto-js
39099 (c) 2009-2013 by Jeff Mott. All rights reserved.
39100 code.google.com/p/crypto-js/wiki/License
39101 */
39102 /** @preserve
39103 (c) 2012 by Cédric Mesnil. All rights reserved.
39104
39105 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39106
39107 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39108 - 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.
39109
39110 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.
39111 */
39112
39113 // constants table
39114 var zl = [
39115 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39116 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39117 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39118 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39119 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39120 ]
39121
39122 var zr = [
39123 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39124 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39125 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39126 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39127 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39128 ]
39129
39130 var sl = [
39131 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39132 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39133 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39134 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39135 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39136 ]
39137
39138 var sr = [
39139 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39140 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39141 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39142 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39143 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39144 ]
39145
39146 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39147 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39148
39149 function bytesToWords (bytes) {
39150 var words = []
39151 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39152 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39153 }
39154 return words
39155 }
39156
39157 function wordsToBytes (words) {
39158 var bytes = []
39159 for (var b = 0; b < words.length * 32; b += 8) {
39160 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39161 }
39162 return bytes
39163 }
39164
39165 function processBlock (H, M, offset) {
39166 // swap endian
39167 for (var i = 0; i < 16; i++) {
39168 var offset_i = offset + i
39169 var M_offset_i = M[offset_i]
39170
39171 // Swap
39172 M[offset_i] = (
39173 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39174 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39175 )
39176 }
39177
39178 // Working variables
39179 var al, bl, cl, dl, el
39180 var ar, br, cr, dr, er
39181
39182 ar = al = H[0]
39183 br = bl = H[1]
39184 cr = cl = H[2]
39185 dr = dl = H[3]
39186 er = el = H[4]
39187
39188 // computation
39189 var t
39190 for (i = 0; i < 80; i += 1) {
39191 t = (al + M[offset + zl[i]]) | 0
39192 if (i < 16) {
39193 t += f1(bl, cl, dl) + hl[0]
39194 } else if (i < 32) {
39195 t += f2(bl, cl, dl) + hl[1]
39196 } else if (i < 48) {
39197 t += f3(bl, cl, dl) + hl[2]
39198 } else if (i < 64) {
39199 t += f4(bl, cl, dl) + hl[3]
39200 } else {// if (i<80) {
39201 t += f5(bl, cl, dl) + hl[4]
39202 }
39203 t = t | 0
39204 t = rotl(t, sl[i])
39205 t = (t + el) | 0
39206 al = el
39207 el = dl
39208 dl = rotl(cl, 10)
39209 cl = bl
39210 bl = t
39211
39212 t = (ar + M[offset + zr[i]]) | 0
39213 if (i < 16) {
39214 t += f5(br, cr, dr) + hr[0]
39215 } else if (i < 32) {
39216 t += f4(br, cr, dr) + hr[1]
39217 } else if (i < 48) {
39218 t += f3(br, cr, dr) + hr[2]
39219 } else if (i < 64) {
39220 t += f2(br, cr, dr) + hr[3]
39221 } else {// if (i<80) {
39222 t += f1(br, cr, dr) + hr[4]
39223 }
39224
39225 t = t | 0
39226 t = rotl(t, sr[i])
39227 t = (t + er) | 0
39228 ar = er
39229 er = dr
39230 dr = rotl(cr, 10)
39231 cr = br
39232 br = t
39233 }
39234
39235 // intermediate hash value
39236 t = (H[1] + cl + dr) | 0
39237 H[1] = (H[2] + dl + er) | 0
39238 H[2] = (H[3] + el + ar) | 0
39239 H[3] = (H[4] + al + br) | 0
39240 H[4] = (H[0] + bl + cr) | 0
39241 H[0] = t
39242 }
39243
39244 function f1 (x, y, z) {
39245 return ((x) ^ (y) ^ (z))
39246 }
39247
39248 function f2 (x, y, z) {
39249 return (((x) & (y)) | ((~x) & (z)))
39250 }
39251
39252 function f3 (x, y, z) {
39253 return (((x) | (~(y))) ^ (z))
39254 }
39255
39256 function f4 (x, y, z) {
39257 return (((x) & (z)) | ((y) & (~(z))))
39258 }
39259
39260 function f5 (x, y, z) {
39261 return ((x) ^ ((y) | (~(z))))
39262 }
39263
39264 function rotl (x, n) {
39265 return (x << n) | (x >>> (32 - n))
39266 }
39267
39268 function ripemd160 (message) {
39269 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
39270
39271 if (typeof message === 'string') {
39272 message = new Buffer(message, 'utf8')
39273 }
39274
39275 var m = bytesToWords(message)
39276
39277 var nBitsLeft = message.length * 8
39278 var nBitsTotal = message.length * 8
39279
39280 // Add padding
39281 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39282 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39283 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39284 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39285 )
39286
39287 for (var i = 0; i < m.length; i += 16) {
39288 processBlock(H, m, i)
39289 }
39290
39291 // swap endian
39292 for (i = 0; i < 5; i++) {
39293 // shortcut
39294 var H_i = H[i]
39295
39296 // Swap
39297 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39298 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
39299 }
39300
39301 var digestbytes = wordsToBytes(H)
39302 return new Buffer(digestbytes)
39303 }
39304
39305 module.exports = ripemd160
39306
39307 }).call(this,require("buffer").Buffer)
39308 },{"buffer":5}],72:[function(require,module,exports){
39309 (function (Buffer){
39310 const assert = require('assert')
39311 /**
39312 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39313 * This function takes in a data, convert it to buffer if not, and a length for recursion
39314 *
39315 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39316 * @returns {Buffer} - returns buffer of encoded data
39317 **/
39318 exports.encode = function (input) {
39319 if (input instanceof Array) {
39320 var output = []
39321 for (var i = 0; i < input.length; i++) {
39322 output.push(exports.encode(input[i]))
39323 }
39324 var buf = Buffer.concat(output)
39325 return Buffer.concat([encodeLength(buf.length, 192), buf])
39326 } else {
39327 input = toBuffer(input)
39328 if (input.length === 1 && input[0] < 128) {
39329 return input
39330 } else {
39331 return Buffer.concat([encodeLength(input.length, 128), input])
39332 }
39333 }
39334 }
39335
39336 function safeParseInt (v, base) {
39337 if (v.slice(0, 2) === '00') {
39338 throw (new Error('invalid RLP: extra zeros'))
39339 }
39340
39341 return parseInt(v, base)
39342 }
39343
39344 function encodeLength (len, offset) {
39345 if (len < 56) {
39346 return new Buffer([len + offset])
39347 } else {
39348 var hexLength = intToHex(len)
39349 var lLength = hexLength.length / 2
39350 var firstByte = intToHex(offset + 55 + lLength)
39351 return new Buffer(firstByte + hexLength, 'hex')
39352 }
39353 }
39354
39355 /**
39356 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39357 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39358 * @returns {Array} - returns decode Array of Buffers containg the original message
39359 **/
39360 exports.decode = function (input, stream) {
39361 if (!input || input.length === 0) {
39362 return new Buffer([])
39363 }
39364
39365 input = toBuffer(input)
39366 var decoded = _decode(input)
39367
39368 if (stream) {
39369 return decoded
39370 }
39371
39372 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39373 return decoded.data
39374 }
39375
39376 exports.getLength = function (input) {
39377 if (!input || input.length === 0) {
39378 return new Buffer([])
39379 }
39380
39381 input = toBuffer(input)
39382 var firstByte = input[0]
39383 if (firstByte <= 0x7f) {
39384 return input.length
39385 } else if (firstByte <= 0xb7) {
39386 return firstByte - 0x7f
39387 } else if (firstByte <= 0xbf) {
39388 return firstByte - 0xb6
39389 } else if (firstByte <= 0xf7) {
39390 // a list between 0-55 bytes long
39391 return firstByte - 0xbf
39392 } else {
39393 // a list over 55 bytes long
39394 var llength = firstByte - 0xf6
39395 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39396 return llength + length
39397 }
39398 }
39399
39400 function _decode (input) {
39401 var length, llength, data, innerRemainder, d
39402 var decoded = []
39403 var firstByte = input[0]
39404
39405 if (firstByte <= 0x7f) {
39406 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39407 return {
39408 data: input.slice(0, 1),
39409 remainder: input.slice(1)
39410 }
39411 } else if (firstByte <= 0xb7) {
39412 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39413 // The range of the first byte is [0x80, 0xb7]
39414 length = firstByte - 0x7f
39415
39416 // set 0x80 null to 0
39417 if (firstByte === 0x80) {
39418 data = new Buffer([])
39419 } else {
39420 data = input.slice(1, length)
39421 }
39422
39423 if (length === 2 && data[0] < 0x80) {
39424 throw new Error('invalid rlp encoding: byte must be less 0x80')
39425 }
39426
39427 return {
39428 data: data,
39429 remainder: input.slice(length)
39430 }
39431 } else if (firstByte <= 0xbf) {
39432 llength = firstByte - 0xb6
39433 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39434 data = input.slice(llength, length + llength)
39435 if (data.length < length) {
39436 throw (new Error('invalid RLP'))
39437 }
39438
39439 return {
39440 data: data,
39441 remainder: input.slice(length + llength)
39442 }
39443 } else if (firstByte <= 0xf7) {
39444 // a list between 0-55 bytes long
39445 length = firstByte - 0xbf
39446 innerRemainder = input.slice(1, length)
39447 while (innerRemainder.length) {
39448 d = _decode(innerRemainder)
39449 decoded.push(d.data)
39450 innerRemainder = d.remainder
39451 }
39452
39453 return {
39454 data: decoded,
39455 remainder: input.slice(length)
39456 }
39457 } else {
39458 // a list over 55 bytes long
39459 llength = firstByte - 0xf6
39460 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39461 var totalLength = llength + length
39462 if (totalLength > input.length) {
39463 throw new Error('invalid rlp: total length is larger than the data')
39464 }
39465
39466 innerRemainder = input.slice(llength, totalLength)
39467 if (innerRemainder.length === 0) {
39468 throw new Error('invalid rlp, List has a invalid length')
39469 }
39470
39471 while (innerRemainder.length) {
39472 d = _decode(innerRemainder)
39473 decoded.push(d.data)
39474 innerRemainder = d.remainder
39475 }
39476 return {
39477 data: decoded,
39478 remainder: input.slice(totalLength)
39479 }
39480 }
39481 }
39482
39483 function isHexPrefixed (str) {
39484 return str.slice(0, 2) === '0x'
39485 }
39486
39487 // Removes 0x from a given String
39488 function stripHexPrefix (str) {
39489 if (typeof str !== 'string') {
39490 return str
39491 }
39492 return isHexPrefixed(str) ? str.slice(2) : str
39493 }
39494
39495 function intToHex (i) {
39496 var hex = i.toString(16)
39497 if (hex.length % 2) {
39498 hex = '0' + hex
39499 }
39500
39501 return hex
39502 }
39503
39504 function padToEven (a) {
39505 if (a.length % 2) a = '0' + a
39506 return a
39507 }
39508
39509 function intToBuffer (i) {
39510 var hex = intToHex(i)
39511 return new Buffer(hex, 'hex')
39512 }
39513
39514 function toBuffer (v) {
39515 if (!Buffer.isBuffer(v)) {
39516 if (typeof v === 'string') {
39517 if (isHexPrefixed(v)) {
39518 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39519 } else {
39520 v = new Buffer(v)
39521 }
39522 } else if (typeof v === 'number') {
39523 if (!v) {
39524 v = new Buffer([])
39525 } else {
39526 v = intToBuffer(v)
39527 }
39528 } else if (v === null || v === undefined) {
39529 v = new Buffer([])
39530 } else if (v.toArray) {
39531 // converts a BN to a Buffer
39532 v = new Buffer(v.toArray())
39533 } else {
39534 throw new Error('invalid type')
39535 }
39536 }
39537 return v
39538 }
39539
39540 }).call(this,require("buffer").Buffer)
39541 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
39542 'use strict'
39543 module.exports = require('./lib')(require('./lib/elliptic'))
39544
39545 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39546 (function (Buffer){
39547 'use strict'
39548 var toString = Object.prototype.toString
39549
39550 // TypeError
39551 exports.isArray = function (value, message) {
39552 if (!Array.isArray(value)) throw TypeError(message)
39553 }
39554
39555 exports.isBoolean = function (value, message) {
39556 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39557 }
39558
39559 exports.isBuffer = function (value, message) {
39560 if (!Buffer.isBuffer(value)) throw TypeError(message)
39561 }
39562
39563 exports.isFunction = function (value, message) {
39564 if (toString.call(value) !== '[object Function]') throw TypeError(message)
39565 }
39566
39567 exports.isNumber = function (value, message) {
39568 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39569 }
39570
39571 exports.isObject = function (value, message) {
39572 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39573 }
39574
39575 // RangeError
39576 exports.isBufferLength = function (buffer, length, message) {
39577 if (buffer.length !== length) throw RangeError(message)
39578 }
39579
39580 exports.isBufferLength2 = function (buffer, length1, length2, message) {
39581 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
39582 }
39583
39584 exports.isLengthGTZero = function (value, message) {
39585 if (value.length === 0) throw RangeError(message)
39586 }
39587
39588 exports.isNumberInInterval = function (number, x, y, message) {
39589 if (number <= x || number >= y) throw RangeError(message)
39590 }
39591
39592 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39593 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
39594 (function (Buffer){
39595 'use strict'
39596 var bip66 = require('bip66')
39597
39598 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39599 // begin
39600 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39601 // private key
39602 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39603 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39604 // middle
39605 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39606 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39607 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39608 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39609 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39610 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39611 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39612 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39613 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39614 // public key
39615 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39616 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39617 0x00
39618 ])
39619
39620 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39621 // begin
39622 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39623 // private key
39624 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39625 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39626 // middle
39627 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39628 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39629 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39630 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39631 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39632 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39633 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39634 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39635 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39636 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39637 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39638 // public key
39639 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39640 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39641 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39642 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39643 0x00
39644 ])
39645
39646 var ZERO_BUFFER_32 = new Buffer([
39647 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39648 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39649 ])
39650
39651 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39652 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39653 privateKey.copy(result, compressed ? 8 : 9)
39654 publicKey.copy(result, compressed ? 181 : 214)
39655 return result
39656 }
39657
39658 exports.privateKeyImport = function (privateKey) {
39659 var length = privateKey.length
39660
39661 // sequence header
39662 var index = 0
39663 if (length < index + 1 || privateKey[index] !== 0x30) return
39664 index += 1
39665
39666 // sequence length constructor
39667 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39668
39669 var lenb = privateKey[index] & 0x7f
39670 index += 1
39671 if (lenb < 1 || lenb > 2) return
39672 if (length < index + lenb) return
39673
39674 // sequence length
39675 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39676 index += lenb
39677 if (length < index + len) return
39678
39679 // sequence element 0: version number (=1)
39680 if (length < index + 3 ||
39681 privateKey[index] !== 0x02 ||
39682 privateKey[index + 1] !== 0x01 ||
39683 privateKey[index + 2] !== 0x01) {
39684 return
39685 }
39686 index += 3
39687
39688 // sequence element 1: octet string, up to 32 bytes
39689 if (length < index + 2 ||
39690 privateKey[index] !== 0x04 ||
39691 privateKey[index + 1] > 0x20 ||
39692 length < index + 2 + privateKey[index + 1]) {
39693 return
39694 }
39695
39696 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
39697 }
39698
39699 exports.signatureExport = function (sigObj) {
39700 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39701 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
39702
39703 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39704 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
39705
39706 return bip66.encode(r.slice(posR), s.slice(posS))
39707 }
39708
39709 exports.signatureImport = function (sig) {
39710 var r = new Buffer(ZERO_BUFFER_32)
39711 var s = new Buffer(ZERO_BUFFER_32)
39712
39713 try {
39714 var sigObj = bip66.decode(sig)
39715 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39716 if (sigObj.r.length > 32) throw new Error('R length is too long')
39717 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39718 if (sigObj.s.length > 32) throw new Error('S length is too long')
39719 } catch (err) {
39720 return
39721 }
39722
39723 sigObj.r.copy(r, 32 - sigObj.r.length)
39724 sigObj.s.copy(s, 32 - sigObj.s.length)
39725
39726 return { r: r, s: s }
39727 }
39728
39729 exports.signatureImportLax = function (sig) {
39730 var r = new Buffer(ZERO_BUFFER_32)
39731 var s = new Buffer(ZERO_BUFFER_32)
39732
39733 var length = sig.length
39734 var index = 0
39735
39736 // sequence tag byte
39737 if (sig[index++] !== 0x30) return
39738
39739 // sequence length byte
39740 var lenbyte = sig[index++]
39741 if (lenbyte & 0x80) {
39742 index += lenbyte - 0x80
39743 if (index > length) return
39744 }
39745
39746 // sequence tag byte for r
39747 if (sig[index++] !== 0x02) return
39748
39749 // length for r
39750 var rlen = sig[index++]
39751 if (rlen & 0x80) {
39752 lenbyte = rlen - 0x80
39753 if (index + lenbyte > length) return
39754 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39755 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
39756 }
39757 if (rlen > length - index) return
39758 var rindex = index
39759 index += rlen
39760
39761 // sequence tag byte for s
39762 if (sig[index++] !== 0x02) return
39763
39764 // length for s
39765 var slen = sig[index++]
39766 if (slen & 0x80) {
39767 lenbyte = slen - 0x80
39768 if (index + lenbyte > length) return
39769 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39770 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
39771 }
39772 if (slen > length - index) return
39773 var sindex = index
39774 index += slen
39775
39776 // ignore leading zeros in r
39777 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39778 // copy r value
39779 if (rlen > 32) return
39780 var rvalue = sig.slice(rindex, rindex + rlen)
39781 rvalue.copy(r, 32 - rvalue.length)
39782
39783 // ignore leading zeros in s
39784 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39785 // copy s value
39786 if (slen > 32) return
39787 var svalue = sig.slice(sindex, sindex + slen)
39788 svalue.copy(s, 32 - svalue.length)
39789
39790 return { r: r, s: s }
39791 }
39792
39793 }).call(this,require("buffer").Buffer)
39794 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39795 (function (Buffer){
39796 'use strict'
39797 var createHash = require('create-hash')
39798 var BN = require('bn.js')
39799 var EC = require('elliptic').ec
39800
39801 var messages = require('../messages.json')
39802
39803 var ec = new EC('secp256k1')
39804 var ecparams = ec.curve
39805
39806 function loadCompressedPublicKey (first, xBuffer) {
39807 var x = new BN(xBuffer)
39808
39809 // overflow
39810 if (x.cmp(ecparams.p) >= 0) return null
39811 x = x.toRed(ecparams.red)
39812
39813 // compute corresponding Y
39814 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39815 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39816
39817 return ec.keyPair({ pub: { x: x, y: y } })
39818 }
39819
39820 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39821 var x = new BN(xBuffer)
39822 var y = new BN(yBuffer)
39823
39824 // overflow
39825 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
39826
39827 x = x.toRed(ecparams.red)
39828 y = y.toRed(ecparams.red)
39829
39830 // is odd flag
39831 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
39832
39833 // x*x*x + b = y*y
39834 var x3 = x.redSqr().redIMul(x)
39835 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
39836
39837 return ec.keyPair({ pub: { x: x, y: y } })
39838 }
39839
39840 function loadPublicKey (publicKey) {
39841 var first = publicKey[0]
39842 switch (first) {
39843 case 0x02:
39844 case 0x03:
39845 if (publicKey.length !== 33) return null
39846 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39847 case 0x04:
39848 case 0x06:
39849 case 0x07:
39850 if (publicKey.length !== 65) return null
39851 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39852 default:
39853 return null
39854 }
39855 }
39856
39857 exports.privateKeyVerify = function (privateKey) {
39858 var bn = new BN(privateKey)
39859 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39860 }
39861
39862 exports.privateKeyExport = function (privateKey, compressed) {
39863 var d = new BN(privateKey)
39864 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
39865
39866 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39867 }
39868
39869 exports.privateKeyTweakAdd = function (privateKey, tweak) {
39870 var bn = new BN(tweak)
39871 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39872
39873 bn.iadd(new BN(privateKey))
39874 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39875 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39876
39877 return bn.toArrayLike(Buffer, 'be', 32)
39878 }
39879
39880 exports.privateKeyTweakMul = function (privateKey, tweak) {
39881 var bn = new BN(tweak)
39882 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39883
39884 bn.imul(new BN(privateKey))
39885 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39886
39887 return bn.toArrayLike(Buffer, 'be', 32)
39888 }
39889
39890 exports.publicKeyCreate = function (privateKey, compressed) {
39891 var d = new BN(privateKey)
39892 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39893
39894 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39895 }
39896
39897 exports.publicKeyConvert = function (publicKey, compressed) {
39898 var pair = loadPublicKey(publicKey)
39899 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39900
39901 return new Buffer(pair.getPublic(compressed, true))
39902 }
39903
39904 exports.publicKeyVerify = function (publicKey) {
39905 return loadPublicKey(publicKey) !== null
39906 }
39907
39908 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
39909 var pair = loadPublicKey(publicKey)
39910 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39911
39912 tweak = new BN(tweak)
39913 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
39914
39915 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
39916 }
39917
39918 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
39919 var pair = loadPublicKey(publicKey)
39920 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39921
39922 tweak = new BN(tweak)
39923 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
39924
39925 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
39926 }
39927
39928 exports.publicKeyCombine = function (publicKeys, compressed) {
39929 var pairs = new Array(publicKeys.length)
39930 for (var i = 0; i < publicKeys.length; ++i) {
39931 pairs[i] = loadPublicKey(publicKeys[i])
39932 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39933 }
39934
39935 var point = pairs[0].pub
39936 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
39937 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
39938
39939 return new Buffer(point.encode(true, compressed))
39940 }
39941
39942 exports.signatureNormalize = function (signature) {
39943 var r = new BN(signature.slice(0, 32))
39944 var s = new BN(signature.slice(32, 64))
39945 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39946
39947 var result = new Buffer(signature)
39948 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
39949
39950 return result
39951 }
39952
39953 exports.signatureExport = function (signature) {
39954 var r = signature.slice(0, 32)
39955 var s = signature.slice(32, 64)
39956 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39957
39958 return { r: r, s: s }
39959 }
39960
39961 exports.signatureImport = function (sigObj) {
39962 var r = new BN(sigObj.r)
39963 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
39964
39965 var s = new BN(sigObj.s)
39966 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
39967
39968 return Buffer.concat([
39969 r.toArrayLike(Buffer, 'be', 32),
39970 s.toArrayLike(Buffer, 'be', 32)
39971 ])
39972 }
39973
39974 exports.sign = function (message, privateKey, noncefn, data) {
39975 if (typeof noncefn === 'function') {
39976 var getNonce = noncefn
39977 noncefn = function (counter) {
39978 var nonce = getNonce(message, privateKey, null, data, counter)
39979 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
39980
39981 return new BN(nonce)
39982 }
39983 }
39984
39985 var d = new BN(privateKey)
39986 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
39987
39988 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
39989 return {
39990 signature: Buffer.concat([
39991 result.r.toArrayLike(Buffer, 'be', 32),
39992 result.s.toArrayLike(Buffer, 'be', 32)
39993 ]),
39994 recovery: result.recoveryParam
39995 }
39996 }
39997
39998 exports.verify = function (message, signature, publicKey) {
39999 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40000
40001 var sigr = new BN(sigObj.r)
40002 var sigs = new BN(sigObj.s)
40003 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40004 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
40005
40006 var pair = loadPublicKey(publicKey)
40007 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40008
40009 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
40010 }
40011
40012 exports.recover = function (message, signature, recovery, compressed) {
40013 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40014
40015 var sigr = new BN(sigObj.r)
40016 var sigs = new BN(sigObj.s)
40017 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40018
40019 try {
40020 if (sigr.isZero() || sigs.isZero()) throw new Error()
40021
40022 var point = ec.recoverPubKey(message, sigObj, recovery)
40023 return new Buffer(point.encode(true, compressed))
40024 } catch (err) {
40025 throw new Error(messages.ECDSA_RECOVER_FAIL)
40026 }
40027 }
40028
40029 exports.ecdh = function (publicKey, privateKey) {
40030 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
40031 return createHash('sha256').update(shared).digest()
40032 }
40033
40034 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
40035 var pair = loadPublicKey(publicKey)
40036 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40037
40038 var scalar = new BN(privateKey)
40039 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
40040
40041 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
40042 }
40043
40044 }).call(this,require("buffer").Buffer)
40045 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
40046 'use strict'
40047 var assert = require('./assert')
40048 var der = require('./der')
40049 var messages = require('./messages.json')
40050
40051 function initCompressedValue (value, defaultValue) {
40052 if (value === undefined) return defaultValue
40053
40054 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40055 return value
40056 }
40057
40058 module.exports = function (secp256k1) {
40059 return {
40060 privateKeyVerify: function (privateKey) {
40061 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40062 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40063 },
40064
40065 privateKeyExport: function (privateKey, compressed) {
40066 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40067 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40068
40069 compressed = initCompressedValue(compressed, true)
40070 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
40071
40072 return der.privateKeyExport(privateKey, publicKey, compressed)
40073 },
40074
40075 privateKeyImport: function (privateKey) {
40076 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40077
40078 privateKey = der.privateKeyImport(privateKey)
40079 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
40080
40081 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40082 },
40083
40084 privateKeyTweakAdd: function (privateKey, tweak) {
40085 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40086 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40087
40088 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40089 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40090
40091 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40092 },
40093
40094 privateKeyTweakMul: function (privateKey, tweak) {
40095 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40096 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40097
40098 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40099 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40100
40101 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40102 },
40103
40104 publicKeyCreate: function (privateKey, compressed) {
40105 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40106 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40107
40108 compressed = initCompressedValue(compressed, true)
40109
40110 return secp256k1.publicKeyCreate(privateKey, compressed)
40111 },
40112
40113 publicKeyConvert: function (publicKey, compressed) {
40114 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40115 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40116
40117 compressed = initCompressedValue(compressed, true)
40118
40119 return secp256k1.publicKeyConvert(publicKey, compressed)
40120 },
40121
40122 publicKeyVerify: function (publicKey) {
40123 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40124 return secp256k1.publicKeyVerify(publicKey)
40125 },
40126
40127 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40128 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40129 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40130
40131 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40132 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40133
40134 compressed = initCompressedValue(compressed, true)
40135
40136 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40137 },
40138
40139 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40140 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40141 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40142
40143 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40144 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40145
40146 compressed = initCompressedValue(compressed, true)
40147
40148 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40149 },
40150
40151 publicKeyCombine: function (publicKeys, compressed) {
40152 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40153 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40154 for (var i = 0; i < publicKeys.length; ++i) {
40155 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40156 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40157 }
40158
40159 compressed = initCompressedValue(compressed, true)
40160
40161 return secp256k1.publicKeyCombine(publicKeys, compressed)
40162 },
40163
40164 signatureNormalize: function (signature) {
40165 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40166 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40167
40168 return secp256k1.signatureNormalize(signature)
40169 },
40170
40171 signatureExport: function (signature) {
40172 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40173 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40174
40175 var sigObj = secp256k1.signatureExport(signature)
40176 return der.signatureExport(sigObj)
40177 },
40178
40179 signatureImport: function (sig) {
40180 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40181 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40182
40183 var sigObj = der.signatureImport(sig)
40184 if (sigObj) return secp256k1.signatureImport(sigObj)
40185
40186 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40187 },
40188
40189 signatureImportLax: function (sig) {
40190 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40191 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40192
40193 var sigObj = der.signatureImportLax(sig)
40194 if (sigObj) return secp256k1.signatureImport(sigObj)
40195
40196 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40197 },
40198
40199 sign: function (message, privateKey, options) {
40200 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40201 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40202
40203 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40204 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40205
40206 var data = null
40207 var noncefn = null
40208 if (options !== undefined) {
40209 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40210
40211 if (options.data !== undefined) {
40212 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40213 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40214 data = options.data
40215 }
40216
40217 if (options.noncefn !== undefined) {
40218 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40219 noncefn = options.noncefn
40220 }
40221 }
40222
40223 return secp256k1.sign(message, privateKey, noncefn, data)
40224 },
40225
40226 verify: function (message, signature, publicKey) {
40227 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40228 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40229
40230 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40231 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40232
40233 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40234 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40235
40236 return secp256k1.verify(message, signature, publicKey)
40237 },
40238
40239 recover: function (message, signature, recovery, compressed) {
40240 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40241 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40242
40243 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40244 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40245
40246 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40247 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
40248
40249 compressed = initCompressedValue(compressed, true)
40250
40251 return secp256k1.recover(message, signature, recovery, compressed)
40252 },
40253
40254 ecdh: function (publicKey, privateKey) {
40255 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40256 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40257
40258 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40259 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40260
40261 return secp256k1.ecdh(publicKey, privateKey)
40262 },
40263
40264 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40265 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40266 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40267
40268 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40269 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40270
40271 compressed = initCompressedValue(compressed, true)
40272
40273 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40274 }
40275 }
40276 }
40277
40278 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40279 module.exports={
40280 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40281 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40282 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40283 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40284 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40285 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40286 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40287 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40288 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40289 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40290 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40291 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40292 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40293 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40294 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40295 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40296 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40297 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40298 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40299 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40300 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40301 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40302 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40303 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40304 "MSG32_TYPE_INVALID": "message should be a Buffer",
40305 "MSG32_LENGTH_INVALID": "message length is invalid",
40306 "OPTIONS_TYPE_INVALID": "options should be an Object",
40307 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40308 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40309 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40310 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40311 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40312 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40313 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40314 }
40315
40316 },{}],79:[function(require,module,exports){
40317 (function (Buffer){
40318 // prototype class for hash functions
40319 function Hash (blockSize, finalSize) {
40320 this._block = new Buffer(blockSize)
40321 this._finalSize = finalSize
40322 this._blockSize = blockSize
40323 this._len = 0
40324 this._s = 0
40325 }
40326
40327 Hash.prototype.update = function (data, enc) {
40328 if (typeof data === 'string') {
40329 enc = enc || 'utf8'
40330 data = new Buffer(data, enc)
40331 }
40332
40333 var l = this._len += data.length
40334 var s = this._s || 0
40335 var f = 0
40336 var buffer = this._block
40337
40338 while (s < l) {
40339 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40340 var ch = (t - f)
40341
40342 for (var i = 0; i < ch; i++) {
40343 buffer[(s % this._blockSize) + i] = data[i + f]
40344 }
40345
40346 s += ch
40347 f += ch
40348
40349 if ((s % this._blockSize) === 0) {
40350 this._update(buffer)
40351 }
40352 }
40353 this._s = s
40354
40355 return this
40356 }
40357
40358 Hash.prototype.digest = function (enc) {
40359 // Suppose the length of the message M, in bits, is l
40360 var l = this._len * 8
40361
40362 // Append the bit 1 to the end of the message
40363 this._block[this._len % this._blockSize] = 0x80
40364
40365 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40366 this._block.fill(0, this._len % this._blockSize + 1)
40367
40368 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40369 this._update(this._block)
40370 this._block.fill(0)
40371 }
40372
40373 // to this append the block which is equal to the number l written in binary
40374 // TODO: handle case where l is > Math.pow(2, 29)
40375 this._block.writeInt32BE(l, this._blockSize - 4)
40376
40377 var hash = this._update(this._block) || this._hash()
40378
40379 return enc ? hash.toString(enc) : hash
40380 }
40381
40382 Hash.prototype._update = function () {
40383 throw new Error('_update must be implemented by subclass')
40384 }
40385
40386 module.exports = Hash
40387
40388 }).call(this,require("buffer").Buffer)
40389 },{"buffer":5}],80:[function(require,module,exports){
40390 var exports = module.exports = function SHA (algorithm) {
40391 algorithm = algorithm.toLowerCase()
40392
40393 var Algorithm = exports[algorithm]
40394 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40395
40396 return new Algorithm()
40397 }
40398
40399 exports.sha = require('./sha')
40400 exports.sha1 = require('./sha1')
40401 exports.sha224 = require('./sha224')
40402 exports.sha256 = require('./sha256')
40403 exports.sha384 = require('./sha384')
40404 exports.sha512 = require('./sha512')
40405
40406 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40407 (function (Buffer){
40408 /*
40409 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40410 * in FIPS PUB 180-1
40411 * This source code is derived from sha1.js of the same repository.
40412 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40413 * operation was added.
40414 */
40415
40416 var inherits = require('inherits')
40417 var Hash = require('./hash')
40418
40419 var K = [
40420 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40421 ]
40422
40423 var W = new Array(80)
40424
40425 function Sha () {
40426 this.init()
40427 this._w = W
40428
40429 Hash.call(this, 64, 56)
40430 }
40431
40432 inherits(Sha, Hash)
40433
40434 Sha.prototype.init = function () {
40435 this._a = 0x67452301
40436 this._b = 0xefcdab89
40437 this._c = 0x98badcfe
40438 this._d = 0x10325476
40439 this._e = 0xc3d2e1f0
40440
40441 return this
40442 }
40443
40444 function rotl5 (num) {
40445 return (num << 5) | (num >>> 27)
40446 }
40447
40448 function rotl30 (num) {
40449 return (num << 30) | (num >>> 2)
40450 }
40451
40452 function ft (s, b, c, d) {
40453 if (s === 0) return (b & c) | ((~b) & d)
40454 if (s === 2) return (b & c) | (b & d) | (c & d)
40455 return b ^ c ^ d
40456 }
40457
40458 Sha.prototype._update = function (M) {
40459 var W = this._w
40460
40461 var a = this._a | 0
40462 var b = this._b | 0
40463 var c = this._c | 0
40464 var d = this._d | 0
40465 var e = this._e | 0
40466
40467 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40468 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
40469
40470 for (var j = 0; j < 80; ++j) {
40471 var s = ~~(j / 20)
40472 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40473
40474 e = d
40475 d = c
40476 c = rotl30(b)
40477 b = a
40478 a = t
40479 }
40480
40481 this._a = (a + this._a) | 0
40482 this._b = (b + this._b) | 0
40483 this._c = (c + this._c) | 0
40484 this._d = (d + this._d) | 0
40485 this._e = (e + this._e) | 0
40486 }
40487
40488 Sha.prototype._hash = function () {
40489 var H = new Buffer(20)
40490
40491 H.writeInt32BE(this._a | 0, 0)
40492 H.writeInt32BE(this._b | 0, 4)
40493 H.writeInt32BE(this._c | 0, 8)
40494 H.writeInt32BE(this._d | 0, 12)
40495 H.writeInt32BE(this._e | 0, 16)
40496
40497 return H
40498 }
40499
40500 module.exports = Sha
40501
40502 }).call(this,require("buffer").Buffer)
40503 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40504 (function (Buffer){
40505 /*
40506 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40507 * in FIPS PUB 180-1
40508 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40509 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40510 * Distributed under the BSD License
40511 * See http://pajhome.org.uk/crypt/md5 for details.
40512 */
40513
40514 var inherits = require('inherits')
40515 var Hash = require('./hash')
40516
40517 var K = [
40518 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40519 ]
40520
40521 var W = new Array(80)
40522
40523 function Sha1 () {
40524 this.init()
40525 this._w = W
40526
40527 Hash.call(this, 64, 56)
40528 }
40529
40530 inherits(Sha1, Hash)
40531
40532 Sha1.prototype.init = function () {
40533 this._a = 0x67452301
40534 this._b = 0xefcdab89
40535 this._c = 0x98badcfe
40536 this._d = 0x10325476
40537 this._e = 0xc3d2e1f0
40538
40539 return this
40540 }
40541
40542 function rotl1 (num) {
40543 return (num << 1) | (num >>> 31)
40544 }
40545
40546 function rotl5 (num) {
40547 return (num << 5) | (num >>> 27)
40548 }
40549
40550 function rotl30 (num) {
40551 return (num << 30) | (num >>> 2)
40552 }
40553
40554 function ft (s, b, c, d) {
40555 if (s === 0) return (b & c) | ((~b) & d)
40556 if (s === 2) return (b & c) | (b & d) | (c & d)
40557 return b ^ c ^ d
40558 }
40559
40560 Sha1.prototype._update = function (M) {
40561 var W = this._w
40562
40563 var a = this._a | 0
40564 var b = this._b | 0
40565 var c = this._c | 0
40566 var d = this._d | 0
40567 var e = this._e | 0
40568
40569 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40570 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40571
40572 for (var j = 0; j < 80; ++j) {
40573 var s = ~~(j / 20)
40574 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40575
40576 e = d
40577 d = c
40578 c = rotl30(b)
40579 b = a
40580 a = t
40581 }
40582
40583 this._a = (a + this._a) | 0
40584 this._b = (b + this._b) | 0
40585 this._c = (c + this._c) | 0
40586 this._d = (d + this._d) | 0
40587 this._e = (e + this._e) | 0
40588 }
40589
40590 Sha1.prototype._hash = function () {
40591 var H = new Buffer(20)
40592
40593 H.writeInt32BE(this._a | 0, 0)
40594 H.writeInt32BE(this._b | 0, 4)
40595 H.writeInt32BE(this._c | 0, 8)
40596 H.writeInt32BE(this._d | 0, 12)
40597 H.writeInt32BE(this._e | 0, 16)
40598
40599 return H
40600 }
40601
40602 module.exports = Sha1
40603
40604 }).call(this,require("buffer").Buffer)
40605 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40606 (function (Buffer){
40607 /**
40608 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40609 * in FIPS 180-2
40610 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40611 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40612 *
40613 */
40614
40615 var inherits = require('inherits')
40616 var Sha256 = require('./sha256')
40617 var Hash = require('./hash')
40618
40619 var W = new Array(64)
40620
40621 function Sha224 () {
40622 this.init()
40623
40624 this._w = W // new Array(64)
40625
40626 Hash.call(this, 64, 56)
40627 }
40628
40629 inherits(Sha224, Sha256)
40630
40631 Sha224.prototype.init = function () {
40632 this._a = 0xc1059ed8
40633 this._b = 0x367cd507
40634 this._c = 0x3070dd17
40635 this._d = 0xf70e5939
40636 this._e = 0xffc00b31
40637 this._f = 0x68581511
40638 this._g = 0x64f98fa7
40639 this._h = 0xbefa4fa4
40640
40641 return this
40642 }
40643
40644 Sha224.prototype._hash = function () {
40645 var H = new Buffer(28)
40646
40647 H.writeInt32BE(this._a, 0)
40648 H.writeInt32BE(this._b, 4)
40649 H.writeInt32BE(this._c, 8)
40650 H.writeInt32BE(this._d, 12)
40651 H.writeInt32BE(this._e, 16)
40652 H.writeInt32BE(this._f, 20)
40653 H.writeInt32BE(this._g, 24)
40654
40655 return H
40656 }
40657
40658 module.exports = Sha224
40659
40660 }).call(this,require("buffer").Buffer)
40661 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40662 (function (Buffer){
40663 /**
40664 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40665 * in FIPS 180-2
40666 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40667 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40668 *
40669 */
40670
40671 var inherits = require('inherits')
40672 var Hash = require('./hash')
40673
40674 var K = [
40675 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40676 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40677 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40678 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40679 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40680 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40681 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40682 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40683 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40684 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40685 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40686 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40687 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40688 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40689 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40690 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40691 ]
40692
40693 var W = new Array(64)
40694
40695 function Sha256 () {
40696 this.init()
40697
40698 this._w = W // new Array(64)
40699
40700 Hash.call(this, 64, 56)
40701 }
40702
40703 inherits(Sha256, Hash)
40704
40705 Sha256.prototype.init = function () {
40706 this._a = 0x6a09e667
40707 this._b = 0xbb67ae85
40708 this._c = 0x3c6ef372
40709 this._d = 0xa54ff53a
40710 this._e = 0x510e527f
40711 this._f = 0x9b05688c
40712 this._g = 0x1f83d9ab
40713 this._h = 0x5be0cd19
40714
40715 return this
40716 }
40717
40718 function ch (x, y, z) {
40719 return z ^ (x & (y ^ z))
40720 }
40721
40722 function maj (x, y, z) {
40723 return (x & y) | (z & (x | y))
40724 }
40725
40726 function sigma0 (x) {
40727 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40728 }
40729
40730 function sigma1 (x) {
40731 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40732 }
40733
40734 function gamma0 (x) {
40735 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40736 }
40737
40738 function gamma1 (x) {
40739 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40740 }
40741
40742 Sha256.prototype._update = function (M) {
40743 var W = this._w
40744
40745 var a = this._a | 0
40746 var b = this._b | 0
40747 var c = this._c | 0
40748 var d = this._d | 0
40749 var e = this._e | 0
40750 var f = this._f | 0
40751 var g = this._g | 0
40752 var h = this._h | 0
40753
40754 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40755 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
40756
40757 for (var j = 0; j < 64; ++j) {
40758 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40759 var T2 = (sigma0(a) + maj(a, b, c)) | 0
40760
40761 h = g
40762 g = f
40763 f = e
40764 e = (d + T1) | 0
40765 d = c
40766 c = b
40767 b = a
40768 a = (T1 + T2) | 0
40769 }
40770
40771 this._a = (a + this._a) | 0
40772 this._b = (b + this._b) | 0
40773 this._c = (c + this._c) | 0
40774 this._d = (d + this._d) | 0
40775 this._e = (e + this._e) | 0
40776 this._f = (f + this._f) | 0
40777 this._g = (g + this._g) | 0
40778 this._h = (h + this._h) | 0
40779 }
40780
40781 Sha256.prototype._hash = function () {
40782 var H = new Buffer(32)
40783
40784 H.writeInt32BE(this._a, 0)
40785 H.writeInt32BE(this._b, 4)
40786 H.writeInt32BE(this._c, 8)
40787 H.writeInt32BE(this._d, 12)
40788 H.writeInt32BE(this._e, 16)
40789 H.writeInt32BE(this._f, 20)
40790 H.writeInt32BE(this._g, 24)
40791 H.writeInt32BE(this._h, 28)
40792
40793 return H
40794 }
40795
40796 module.exports = Sha256
40797
40798 }).call(this,require("buffer").Buffer)
40799 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40800 (function (Buffer){
40801 var inherits = require('inherits')
40802 var SHA512 = require('./sha512')
40803 var Hash = require('./hash')
40804
40805 var W = new Array(160)
40806
40807 function Sha384 () {
40808 this.init()
40809 this._w = W
40810
40811 Hash.call(this, 128, 112)
40812 }
40813
40814 inherits(Sha384, SHA512)
40815
40816 Sha384.prototype.init = function () {
40817 this._ah = 0xcbbb9d5d
40818 this._bh = 0x629a292a
40819 this._ch = 0x9159015a
40820 this._dh = 0x152fecd8
40821 this._eh = 0x67332667
40822 this._fh = 0x8eb44a87
40823 this._gh = 0xdb0c2e0d
40824 this._hh = 0x47b5481d
40825
40826 this._al = 0xc1059ed8
40827 this._bl = 0x367cd507
40828 this._cl = 0x3070dd17
40829 this._dl = 0xf70e5939
40830 this._el = 0xffc00b31
40831 this._fl = 0x68581511
40832 this._gl = 0x64f98fa7
40833 this._hl = 0xbefa4fa4
40834
40835 return this
40836 }
40837
40838 Sha384.prototype._hash = function () {
40839 var H = new Buffer(48)
40840
40841 function writeInt64BE (h, l, offset) {
40842 H.writeInt32BE(h, offset)
40843 H.writeInt32BE(l, offset + 4)
40844 }
40845
40846 writeInt64BE(this._ah, this._al, 0)
40847 writeInt64BE(this._bh, this._bl, 8)
40848 writeInt64BE(this._ch, this._cl, 16)
40849 writeInt64BE(this._dh, this._dl, 24)
40850 writeInt64BE(this._eh, this._el, 32)
40851 writeInt64BE(this._fh, this._fl, 40)
40852
40853 return H
40854 }
40855
40856 module.exports = Sha384
40857
40858 }).call(this,require("buffer").Buffer)
40859 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40860 (function (Buffer){
40861 var inherits = require('inherits')
40862 var Hash = require('./hash')
40863
40864 var K = [
40865 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40866 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40867 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40868 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40869 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40870 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40871 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40872 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40873 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40874 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40875 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40876 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40877 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40878 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40879 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40880 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40881 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40882 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40883 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40884 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40885 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40886 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40887 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40888 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40889 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40890 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40891 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40892 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40893 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40894 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40895 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40896 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40897 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40898 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40899 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40900 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40901 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40902 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40903 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40904 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40905 ]
40906
40907 var W = new Array(160)
40908
40909 function Sha512 () {
40910 this.init()
40911 this._w = W
40912
40913 Hash.call(this, 128, 112)
40914 }
40915
40916 inherits(Sha512, Hash)
40917
40918 Sha512.prototype.init = function () {
40919 this._ah = 0x6a09e667
40920 this._bh = 0xbb67ae85
40921 this._ch = 0x3c6ef372
40922 this._dh = 0xa54ff53a
40923 this._eh = 0x510e527f
40924 this._fh = 0x9b05688c
40925 this._gh = 0x1f83d9ab
40926 this._hh = 0x5be0cd19
40927
40928 this._al = 0xf3bcc908
40929 this._bl = 0x84caa73b
40930 this._cl = 0xfe94f82b
40931 this._dl = 0x5f1d36f1
40932 this._el = 0xade682d1
40933 this._fl = 0x2b3e6c1f
40934 this._gl = 0xfb41bd6b
40935 this._hl = 0x137e2179
40936
40937 return this
40938 }
40939
40940 function Ch (x, y, z) {
40941 return z ^ (x & (y ^ z))
40942 }
40943
40944 function maj (x, y, z) {
40945 return (x & y) | (z & (x | y))
40946 }
40947
40948 function sigma0 (x, xl) {
40949 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
40950 }
40951
40952 function sigma1 (x, xl) {
40953 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
40954 }
40955
40956 function Gamma0 (x, xl) {
40957 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
40958 }
40959
40960 function Gamma0l (x, xl) {
40961 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
40962 }
40963
40964 function Gamma1 (x, xl) {
40965 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
40966 }
40967
40968 function Gamma1l (x, xl) {
40969 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
40970 }
40971
40972 function getCarry (a, b) {
40973 return (a >>> 0) < (b >>> 0) ? 1 : 0
40974 }
40975
40976 Sha512.prototype._update = function (M) {
40977 var W = this._w
40978
40979 var ah = this._ah | 0
40980 var bh = this._bh | 0
40981 var ch = this._ch | 0
40982 var dh = this._dh | 0
40983 var eh = this._eh | 0
40984 var fh = this._fh | 0
40985 var gh = this._gh | 0
40986 var hh = this._hh | 0
40987
40988 var al = this._al | 0
40989 var bl = this._bl | 0
40990 var cl = this._cl | 0
40991 var dl = this._dl | 0
40992 var el = this._el | 0
40993 var fl = this._fl | 0
40994 var gl = this._gl | 0
40995 var hl = this._hl | 0
40996
40997 for (var i = 0; i < 32; i += 2) {
40998 W[i] = M.readInt32BE(i * 4)
40999 W[i + 1] = M.readInt32BE(i * 4 + 4)
41000 }
41001 for (; i < 160; i += 2) {
41002 var xh = W[i - 15 * 2]
41003 var xl = W[i - 15 * 2 + 1]
41004 var gamma0 = Gamma0(xh, xl)
41005 var gamma0l = Gamma0l(xl, xh)
41006
41007 xh = W[i - 2 * 2]
41008 xl = W[i - 2 * 2 + 1]
41009 var gamma1 = Gamma1(xh, xl)
41010 var gamma1l = Gamma1l(xl, xh)
41011
41012 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
41013 var Wi7h = W[i - 7 * 2]
41014 var Wi7l = W[i - 7 * 2 + 1]
41015
41016 var Wi16h = W[i - 16 * 2]
41017 var Wi16l = W[i - 16 * 2 + 1]
41018
41019 var Wil = (gamma0l + Wi7l) | 0
41020 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
41021 Wil = (Wil + gamma1l) | 0
41022 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
41023 Wil = (Wil + Wi16l) | 0
41024 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
41025
41026 W[i] = Wih
41027 W[i + 1] = Wil
41028 }
41029
41030 for (var j = 0; j < 160; j += 2) {
41031 Wih = W[j]
41032 Wil = W[j + 1]
41033
41034 var majh = maj(ah, bh, ch)
41035 var majl = maj(al, bl, cl)
41036
41037 var sigma0h = sigma0(ah, al)
41038 var sigma0l = sigma0(al, ah)
41039 var sigma1h = sigma1(eh, el)
41040 var sigma1l = sigma1(el, eh)
41041
41042 // t1 = h + sigma1 + ch + K[j] + W[j]
41043 var Kih = K[j]
41044 var Kil = K[j + 1]
41045
41046 var chh = Ch(eh, fh, gh)
41047 var chl = Ch(el, fl, gl)
41048
41049 var t1l = (hl + sigma1l) | 0
41050 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41051 t1l = (t1l + chl) | 0
41052 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41053 t1l = (t1l + Kil) | 0
41054 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41055 t1l = (t1l + Wil) | 0
41056 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
41057
41058 // t2 = sigma0 + maj
41059 var t2l = (sigma0l + majl) | 0
41060 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
41061
41062 hh = gh
41063 hl = gl
41064 gh = fh
41065 gl = fl
41066 fh = eh
41067 fl = el
41068 el = (dl + t1l) | 0
41069 eh = (dh + t1h + getCarry(el, dl)) | 0
41070 dh = ch
41071 dl = cl
41072 ch = bh
41073 cl = bl
41074 bh = ah
41075 bl = al
41076 al = (t1l + t2l) | 0
41077 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41078 }
41079
41080 this._al = (this._al + al) | 0
41081 this._bl = (this._bl + bl) | 0
41082 this._cl = (this._cl + cl) | 0
41083 this._dl = (this._dl + dl) | 0
41084 this._el = (this._el + el) | 0
41085 this._fl = (this._fl + fl) | 0
41086 this._gl = (this._gl + gl) | 0
41087 this._hl = (this._hl + hl) | 0
41088
41089 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41090 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41091 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41092 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41093 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41094 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41095 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41096 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
41097 }
41098
41099 Sha512.prototype._hash = function () {
41100 var H = new Buffer(64)
41101
41102 function writeInt64BE (h, l, offset) {
41103 H.writeInt32BE(h, offset)
41104 H.writeInt32BE(l, offset + 4)
41105 }
41106
41107 writeInt64BE(this._ah, this._al, 0)
41108 writeInt64BE(this._bh, this._bl, 8)
41109 writeInt64BE(this._ch, this._cl, 16)
41110 writeInt64BE(this._dh, this._dl, 24)
41111 writeInt64BE(this._eh, this._el, 32)
41112 writeInt64BE(this._fh, this._fl, 40)
41113 writeInt64BE(this._gh, this._gl, 48)
41114 writeInt64BE(this._hh, this._hl, 56)
41115
41116 return H
41117 }
41118
41119 module.exports = Sha512
41120
41121 }).call(this,require("buffer").Buffer)
41122 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41123 var isHexPrefixed = require('is-hex-prefixed');
41124
41125 /**
41126 * Removes '0x' from a given `String` is present
41127 * @param {String} str the string value
41128 * @return {String|Optional} a string by pass if necessary
41129 */
41130 module.exports = function stripHexPrefix(str) {
41131 if (typeof str !== 'string') {
41132 return str;
41133 }
41134
41135 return isHexPrefixed(str) ? str.slice(2) : str;
41136 }
41137
41138 },{"is-hex-prefixed":64}]},{},[31])(31)
41139 });</script>
41140 <script>function convertRippleAdrr(address) {
41141 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41142 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41143 )
41144 }
41145
41146 function convertRipplePriv(priv) {
41147 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
41148 }
41149
41150 </script>
41151 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
41152
41153 //// base.js
41154
41155 /** @fileOverview Javascript cryptography implementation.
41156 *
41157 * Crush to remove comments, shorten variable names and
41158 * generally reduce transmission size.
41159 *
41160 * @author Emily Stark
41161 * @author Mike Hamburg
41162 * @author Dan Boneh
41163 */
41164
41165 "use strict";
41166 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41167 /*global document, window, escape, unescape, module, require, Uint32Array */
41168
41169 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41170 var sjcl = {
41171 /** @namespace Symmetric ciphers. */
41172 cipher: {},
41173
41174 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41175 hash: {},
41176
41177 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41178 keyexchange: {},
41179
41180 /** @namespace Block cipher modes of operation. */
41181 mode: {},
41182
41183 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41184 misc: {},
41185
41186 /**
41187 * @namespace Bit array encoders and decoders.
41188 *
41189 * @description
41190 * The members of this namespace are functions which translate between
41191 * SJCL's bitArrays and other objects (usually strings). Because it
41192 * isn't always clear which direction is encoding and which is decoding,
41193 * the method names are "fromBits" and "toBits".
41194 */
41195 codec: {},
41196
41197 /** @namespace Exceptions. */
41198 exception: {
41199 /** @constructor Ciphertext is corrupt. */
41200 corrupt: function(message) {
41201 this.toString = function() { return "CORRUPT: "+this.message; };
41202 this.message = message;
41203 },
41204
41205 /** @constructor Invalid parameter. */
41206 invalid: function(message) {
41207 this.toString = function() { return "INVALID: "+this.message; };
41208 this.message = message;
41209 },
41210
41211 /** @constructor Bug or missing feature in SJCL. @constructor */
41212 bug: function(message) {
41213 this.toString = function() { return "BUG: "+this.message; };
41214 this.message = message;
41215 },
41216
41217 /** @constructor Something isn't ready. */
41218 notReady: function(message) {
41219 this.toString = function() { return "NOT READY: "+this.message; };
41220 this.message = message;
41221 }
41222 }
41223 };
41224
41225 if(typeof module !== 'undefined' && module.exports){
41226 module.exports = sjcl;
41227 }
41228 if (typeof define === "function") {
41229 define([], function () {
41230 return sjcl;
41231 });
41232 }
41233
41234
41235 //// bitArray.js
41236
41237 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41238 *
41239 * @author Emily Stark
41240 * @author Mike Hamburg
41241 * @author Dan Boneh
41242 */
41243
41244 /** @namespace Arrays of bits, encoded as arrays of Numbers.
41245 *
41246 * @description
41247 * <p>
41248 * These objects are the currency accepted by SJCL's crypto functions.
41249 * </p>
41250 *
41251 * <p>
41252 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41253 * but many of them can take arguments that are not a multiple of 4 bytes.
41254 * This library encodes arrays of bits (whose size need not be a multiple of 8
41255 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41256 * array of words, 32 bits at a time. Since the words are double-precision
41257 * floating point numbers, they fit some extra data. We use this (in a private,
41258 * possibly-changing manner) to encode the number of bits actually present
41259 * in the last word of the array.
41260 * </p>
41261 *
41262 * <p>
41263 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41264 * to ciphers like AES which want arrays of words.
41265 * </p>
41266 */
41267 sjcl.bitArray = {
41268 /**
41269 * Array slices in units of bits.
41270 * @param {bitArray} a The array to slice.
41271 * @param {Number} bstart The offset to the start of the slice, in bits.
41272 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41273 * slice until the end of the array.
41274 * @return {bitArray} The requested slice.
41275 */
41276 bitSlice: function (a, bstart, bend) {
41277 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41278 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41279 },
41280
41281 /**
41282 * Extract a number packed into a bit array.
41283 * @param {bitArray} a The array to slice.
41284 * @param {Number} bstart The offset to the start of the slice, in bits.
41285 * @param {Number} length The length of the number to extract.
41286 * @return {Number} The requested slice.
41287 */
41288 extract: function(a, bstart, blength) {
41289 // FIXME: this Math.floor is not necessary at all, but for some reason
41290 // seems to suppress a bug in the Chromium JIT.
41291 var x, sh = Math.floor((-bstart-blength) & 31);
41292 if ((bstart + blength - 1 ^ bstart) & -32) {
41293 // it crosses a boundary
41294 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41295 } else {
41296 // within a single word
41297 x = a[bstart/32|0] >>> sh;
41298 }
41299 return x & ((1<<blength) - 1);
41300 },
41301
41302 /**
41303 * Concatenate two bit arrays.
41304 * @param {bitArray} a1 The first array.
41305 * @param {bitArray} a2 The second array.
41306 * @return {bitArray} The concatenation of a1 and a2.
41307 */
41308 concat: function (a1, a2) {
41309 if (a1.length === 0 || a2.length === 0) {
41310 return a1.concat(a2);
41311 }
41312
41313 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41314 if (shift === 32) {
41315 return a1.concat(a2);
41316 } else {
41317 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
41318 }
41319 },
41320
41321 /**
41322 * Find the length of an array of bits.
41323 * @param {bitArray} a The array.
41324 * @return {Number} The length of a, in bits.
41325 */
41326 bitLength: function (a) {
41327 var l = a.length, x;
41328 if (l === 0) { return 0; }
41329 x = a[l - 1];
41330 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41331 },
41332
41333 /**
41334 * Truncate an array.
41335 * @param {bitArray} a The array.
41336 * @param {Number} len The length to truncate to, in bits.
41337 * @return {bitArray} A new array, truncated to len bits.
41338 */
41339 clamp: function (a, len) {
41340 if (a.length * 32 < len) { return a; }
41341 a = a.slice(0, Math.ceil(len / 32));
41342 var l = a.length;
41343 len = len & 31;
41344 if (l > 0 && len) {
41345 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41346 }
41347 return a;
41348 },
41349
41350 /**
41351 * Make a partial word for a bit array.
41352 * @param {Number} len The number of bits in the word.
41353 * @param {Number} x The bits.
41354 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41355 * @return {Number} The partial word.
41356 */
41357 partial: function (len, x, _end) {
41358 if (len === 32) { return x; }
41359 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41360 },
41361
41362 /**
41363 * Get the number of bits used by a partial word.
41364 * @param {Number} x The partial word.
41365 * @return {Number} The number of bits used by the partial word.
41366 */
41367 getPartial: function (x) {
41368 return Math.round(x/0x10000000000) || 32;
41369 },
41370
41371 /**
41372 * Compare two arrays for equality in a predictable amount of time.
41373 * @param {bitArray} a The first array.
41374 * @param {bitArray} b The second array.
41375 * @return {boolean} true if a == b; false otherwise.
41376 */
41377 equal: function (a, b) {
41378 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41379 return false;
41380 }
41381 var x = 0, i;
41382 for (i=0; i<a.length; i++) {
41383 x |= a[i]^b[i];
41384 }
41385 return (x === 0);
41386 },
41387
41388 /** Shift an array right.
41389 * @param {bitArray} a The array to shift.
41390 * @param {Number} shift The number of bits to shift.
41391 * @param {Number} [carry=0] A byte to carry in
41392 * @param {bitArray} [out=[]] An array to prepend to the output.
41393 * @private
41394 */
41395 _shiftRight: function (a, shift, carry, out) {
41396 var i, last2=0, shift2;
41397 if (out === undefined) { out = []; }
41398
41399 for (; shift >= 32; shift -= 32) {
41400 out.push(carry);
41401 carry = 0;
41402 }
41403 if (shift === 0) {
41404 return out.concat(a);
41405 }
41406
41407 for (i=0; i<a.length; i++) {
41408 out.push(carry | a[i]>>>shift);
41409 carry = a[i] << (32-shift);
41410 }
41411 last2 = a.length ? a[a.length-1] : 0;
41412 shift2 = sjcl.bitArray.getPartial(last2);
41413 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41414 return out;
41415 },
41416
41417 /** xor a block of 4 words together.
41418 * @private
41419 */
41420 _xor4: function(x,y) {
41421 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41422 },
41423
41424 /** byteswap a word array inplace.
41425 * (does not handle partial words)
41426 * @param {sjcl.bitArray} a word array
41427 * @return {sjcl.bitArray} byteswapped array
41428 */
41429 byteswapM: function(a) {
41430 var i, v, m = 0xff00;
41431 for (i = 0; i < a.length; ++i) {
41432 v = a[i];
41433 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
41434 }
41435 return a;
41436 }
41437 };
41438
41439
41440 //// codecString.js
41441
41442 /** @fileOverview Bit array codec implementations.
41443 *
41444 * @author Emily Stark
41445 * @author Mike Hamburg
41446 * @author Dan Boneh
41447 */
41448
41449 /** @namespace UTF-8 strings */
41450 sjcl.codec.utf8String = {
41451 /** Convert from a bitArray to a UTF-8 string. */
41452 fromBits: function (arr) {
41453 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41454 for (i=0; i<bl/8; i++) {
41455 if ((i&3) === 0) {
41456 tmp = arr[i/4];
41457 }
41458 out += String.fromCharCode(tmp >>> 24);
41459 tmp <<= 8;
41460 }
41461 return decodeURIComponent(escape(out));
41462 },
41463
41464 /** Convert from a UTF-8 string to a bitArray. */
41465 toBits: function (str) {
41466 str = unescape(encodeURIComponent(str));
41467 var out = [], i, tmp=0;
41468 for (i=0; i<str.length; i++) {
41469 tmp = tmp << 8 | str.charCodeAt(i);
41470 if ((i&3) === 3) {
41471 out.push(tmp);
41472 tmp = 0;
41473 }
41474 }
41475 if (i&3) {
41476 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
41477 }
41478 return out;
41479 }
41480 };
41481
41482
41483 //// codecHex.js
41484
41485 /** @fileOverview Bit array codec implementations.
41486 *
41487 * @author Emily Stark
41488 * @author Mike Hamburg
41489 * @author Dan Boneh
41490 */
41491
41492 /** @namespace Hexadecimal */
41493 sjcl.codec.hex = {
41494 /** Convert from a bitArray to a hex string. */
41495 fromBits: function (arr) {
41496 var out = "", i;
41497 for (i=0; i<arr.length; i++) {
41498 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
41499 }
41500 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41501 },
41502 /** Convert from a hex string to a bitArray. */
41503 toBits: function (str) {
41504 var i, out=[], len;
41505 str = str.replace(/\s|0x/g, "");
41506 len = str.length;
41507 str = str + "00000000";
41508 for (i=0; i<str.length; i+=8) {
41509 out.push(parseInt(str.substr(i,8),16)^0);
41510 }
41511 return sjcl.bitArray.clamp(out, len*4);
41512 }
41513 };
41514
41515
41516 //// sha512.js
41517
41518 /** @fileOverview Javascript SHA-512 implementation.
41519 *
41520 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41521 * SJCL by Stefan Thomas.
41522 *
41523 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
41524 * Released with New BSD License
41525 *
41526 * @author Emily Stark
41527 * @author Mike Hamburg
41528 * @author Dan Boneh
41529 * @author Jeff Mott
41530 * @author Stefan Thomas
41531 */
41532
41533 /**
41534 * Context for a SHA-512 operation in progress.
41535 * @constructor
41536 * @class Secure Hash Algorithm, 512 bits.
41537 */
41538 sjcl.hash.sha512 = function (hash) {
41539 if (!this._key[0]) { this._precompute(); }
41540 if (hash) {
41541 this._h = hash._h.slice(0);
41542 this._buffer = hash._buffer.slice(0);
41543 this._length = hash._length;
41544 } else {
41545 this.reset();
41546 }
41547 };
41548
41549 /**
41550 * Hash a string or an array of words.
41551 * @static
41552 * @param {bitArray|String} data the data to hash.
41553 * @return {bitArray} The hash value, an array of 16 big-endian words.
41554 */
41555 sjcl.hash.sha512.hash = function (data) {
41556 return (new sjcl.hash.sha512()).update(data).finalize();
41557 };
41558
41559 sjcl.hash.sha512.prototype = {
41560 /**
41561 * The hash's block size, in bits.
41562 * @constant
41563 */
41564 blockSize: 1024,
41565
41566 /**
41567 * Reset the hash state.
41568 * @return this
41569 */
41570 reset:function () {
41571 this._h = this._init.slice(0);
41572 this._buffer = [];
41573 this._length = 0;
41574 return this;
41575 },
41576
41577 /**
41578 * Input several words to the hash.
41579 * @param {bitArray|String} data the data to hash.
41580 * @return this
41581 */
41582 update: function (data) {
41583 if (typeof data === "string") {
41584 data = sjcl.codec.utf8String.toBits(data);
41585 }
41586 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41587 ol = this._length,
41588 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41589 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41590 this._block(b.splice(0,32));
41591 }
41592 return this;
41593 },
41594
41595 /**
41596 * Complete hashing and output the hash value.
41597 * @return {bitArray} The hash value, an array of 16 big-endian words.
41598 */
41599 finalize:function () {
41600 var i, b = this._buffer, h = this._h;
41601
41602 // Round out and push the buffer
41603 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41604
41605 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41606 for (i = b.length + 4; i & 31; i++) {
41607 b.push(0);
41608 }
41609
41610 // append the length
41611 b.push(0);
41612 b.push(0);
41613 b.push(Math.floor(this._length / 0x100000000));
41614 b.push(this._length | 0);
41615
41616 while (b.length) {
41617 this._block(b.splice(0,32));
41618 }
41619
41620 this.reset();
41621 return h;
41622 },
41623
41624 /**
41625 * The SHA-512 initialization vector, to be precomputed.
41626 * @private
41627 */
41628 _init:[],
41629
41630 /**
41631 * Least significant 24 bits of SHA512 initialization values.
41632 *
41633 * Javascript only has 53 bits of precision, so we compute the 40 most
41634 * significant bits and add the remaining 24 bits as constants.
41635 *
41636 * @private
41637 */
41638 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41639
41640 /*
41641 _init:
41642 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41643 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41644 */
41645
41646 /**
41647 * The SHA-512 hash key, to be precomputed.
41648 * @private
41649 */
41650 _key:[],
41651
41652 /**
41653 * Least significant 24 bits of SHA512 key values.
41654 * @private
41655 */
41656 _keyr:
41657 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41658 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41659 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41660 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41661 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41662 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41663 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41664 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41665 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41666 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41667
41668 /*
41669 _key:
41670 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41671 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41672 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41673 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41674 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41675 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41676 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41677 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41678 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41679 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41680 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41681 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41682 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41683 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41684 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41685 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41686 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41687 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41688 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41689 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41690 */
41691
41692 /**
41693 * Function to precompute _init and _key.
41694 * @private
41695 */
41696 _precompute: function () {
41697 // XXX: This code is for precomputing the SHA256 constants, change for
41698 // SHA512 and re-enable.
41699 var i = 0, prime = 2, factor;
41700
41701 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41702 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41703
41704 outer: for (; i<80; prime++) {
41705 for (factor=2; factor*factor <= prime; factor++) {
41706 if (prime % factor === 0) {
41707 // not a prime
41708 continue outer;
41709 }
41710 }
41711
41712 if (i<8) {
41713 this._init[i*2] = frac(Math.pow(prime, 1/2));
41714 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41715 }
41716 this._key[i*2] = frac(Math.pow(prime, 1/3));
41717 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41718 i++;
41719 }
41720 },
41721
41722 /**
41723 * Perform one cycle of SHA-512.
41724 * @param {bitArray} words one block of words.
41725 * @private
41726 */
41727 _block:function (words) {
41728 var i, wrh, wrl,
41729 w = words.slice(0),
41730 h = this._h,
41731 k = this._key,
41732 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41733 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41734 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41735 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41736
41737 // Working variables
41738 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41739 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41740 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41741 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41742
41743 for (i=0; i<80; i++) {
41744 // load up the input word for this round
41745 if (i<16) {
41746 wrh = w[i * 2];
41747 wrl = w[i * 2 + 1];
41748 } else {
41749 // Gamma0
41750 var gamma0xh = w[(i-15) * 2];
41751 var gamma0xl = w[(i-15) * 2 + 1];
41752 var gamma0h =
41753 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41754 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41755 (gamma0xh >>> 7);
41756 var gamma0l =
41757 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41758 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41759 ((gamma0xh << 25) | (gamma0xl >>> 7));
41760
41761 // Gamma1
41762 var gamma1xh = w[(i-2) * 2];
41763 var gamma1xl = w[(i-2) * 2 + 1];
41764 var gamma1h =
41765 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41766 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41767 (gamma1xh >>> 6);
41768 var gamma1l =
41769 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41770 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41771 ((gamma1xh << 26) | (gamma1xl >>> 6));
41772
41773 // Shortcuts
41774 var wr7h = w[(i-7) * 2];
41775 var wr7l = w[(i-7) * 2 + 1];
41776
41777 var wr16h = w[(i-16) * 2];
41778 var wr16l = w[(i-16) * 2 + 1];
41779
41780 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41781 wrl = gamma0l + wr7l;
41782 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41783 wrl += gamma1l;
41784 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41785 wrl += wr16l;
41786 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41787 }
41788
41789 w[i*2] = wrh |= 0;
41790 w[i*2 + 1] = wrl |= 0;
41791
41792 // Ch
41793 var chh = (eh & fh) ^ (~eh & gh);
41794 var chl = (el & fl) ^ (~el & gl);
41795
41796 // Maj
41797 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41798 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41799
41800 // Sigma0
41801 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41802 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41803
41804 // Sigma1
41805 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41806 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41807
41808 // K(round)
41809 var krh = k[i*2];
41810 var krl = k[i*2+1];
41811
41812 // t1 = h + sigma1 + ch + K(round) + W(round)
41813 var t1l = hl + sigma1l;
41814 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41815 t1l += chl;
41816 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41817 t1l += krl;
41818 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41819 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41820 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41821
41822 // t2 = sigma0 + maj
41823 var t2l = sigma0l + majl;
41824 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41825
41826 // Update working variables
41827 hh = gh;
41828 hl = gl;
41829 gh = fh;
41830 gl = fl;
41831 fh = eh;
41832 fl = el;
41833 el = (dl + t1l) | 0;
41834 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41835 dh = ch;
41836 dl = cl;
41837 ch = bh;
41838 cl = bl;
41839 bh = ah;
41840 bl = al;
41841 al = (t1l + t2l) | 0;
41842 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41843 }
41844
41845 // Intermediate hash
41846 h0l = h[1] = (h0l + al) | 0;
41847 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41848 h1l = h[3] = (h1l + bl) | 0;
41849 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41850 h2l = h[5] = (h2l + cl) | 0;
41851 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41852 h3l = h[7] = (h3l + dl) | 0;
41853 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41854 h4l = h[9] = (h4l + el) | 0;
41855 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41856 h5l = h[11] = (h5l + fl) | 0;
41857 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41858 h6l = h[13] = (h6l + gl) | 0;
41859 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41860 h7l = h[15] = (h7l + hl) | 0;
41861 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41862 }
41863 };
41864
41865
41866 //// hmac.js
41867
41868 /** @fileOverview HMAC implementation.
41869 *
41870 * @author Emily Stark
41871 * @author Mike Hamburg
41872 * @author Dan Boneh
41873 */
41874
41875 /** HMAC with the specified hash function.
41876 * @constructor
41877 * @param {bitArray} key the key for HMAC.
41878 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41879 */
41880 sjcl.misc.hmac = function (key, Hash) {
41881 this._hash = Hash = Hash || sjcl.hash.sha256;
41882 var exKey = [[],[]], i,
41883 bs = Hash.prototype.blockSize / 32;
41884 this._baseHash = [new Hash(), new Hash()];
41885
41886 if (key.length > bs) {
41887 key = Hash.hash(key);
41888 }
41889
41890 for (i=0; i<bs; i++) {
41891 exKey[0][i] = key[i]^0x36363636;
41892 exKey[1][i] = key[i]^0x5C5C5C5C;
41893 }
41894
41895 this._baseHash[0].update(exKey[0]);
41896 this._baseHash[1].update(exKey[1]);
41897 this._resultHash = new Hash(this._baseHash[0]);
41898 };
41899
41900 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
41901 * @param {bitArray|String} data The data to mac.
41902 */
41903 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41904 if (!this._updated) {
41905 this.update(data);
41906 return this.digest(data);
41907 } else {
41908 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
41909 }
41910 };
41911
41912 sjcl.misc.hmac.prototype.reset = function () {
41913 this._resultHash = new this._hash(this._baseHash[0]);
41914 this._updated = false;
41915 };
41916
41917 sjcl.misc.hmac.prototype.update = function (data) {
41918 this._updated = true;
41919 this._resultHash.update(data);
41920 };
41921
41922 sjcl.misc.hmac.prototype.digest = function () {
41923 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
41924
41925 this.reset();
41926
41927 return result;
41928 };
41929
41930
41931 //// pbkdf2.js
41932
41933
41934 /** @fileOverview Password-based key-derivation function, version 2.0.
41935 *
41936 * @author Emily Stark
41937 * @author Mike Hamburg
41938 * @author Dan Boneh
41939 */
41940
41941 /** Password-Based Key-Derivation Function, version 2.0.
41942 *
41943 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
41944 *
41945 * This is the method specified by RSA's PKCS #5 standard.
41946 *
41947 * @param {bitArray|String} password The password.
41948 * @param {bitArray|String} salt The salt. Should have lots of entropy.
41949 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
41950 * @param {Number} [length] The length of the derived key. Defaults to the
41951 output size of the hash function.
41952 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
41953 * @return {bitArray} the derived key.
41954 */
41955 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
41956 count = count || 1000;
41957
41958 if (length < 0 || count < 0) {
41959 throw sjcl.exception.invalid("invalid params to pbkdf2");
41960 }
41961
41962 if (typeof password === "string") {
41963 password = sjcl.codec.utf8String.toBits(password);
41964 }
41965
41966 if (typeof salt === "string") {
41967 salt = sjcl.codec.utf8String.toBits(salt);
41968 }
41969
41970 Prff = Prff || sjcl.misc.hmac;
41971
41972 var prf = new Prff(password),
41973 u, ui, i, j, k, out = [], b = sjcl.bitArray;
41974
41975 for (k = 1; 32 * out.length < (length || 1); k++) {
41976 u = ui = prf.encrypt(b.concat(salt,[k]));
41977
41978 for (i=1; i<count; i++) {
41979 ui = prf.encrypt(ui);
41980 for (j=0; j<ui.length; j++) {
41981 u[j] ^= ui[j];
41982 }
41983 }
41984
41985 out = out.concat(u);
41986 }
41987
41988 if (length) { out = b.clamp(out, length); }
41989
41990 return out;
41991 };
41992
41993
41994 //// sha256.js
41995
41996 /** @fileOverview Javascript SHA-256 implementation.
41997 *
41998 * An older version of this implementation is available in the public
41999 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
42000 * Stanford University 2008-2010 and BSD-licensed for liability
42001 * reasons.
42002 *
42003 * Special thanks to Aldo Cortesi for pointing out several bugs in
42004 * this code.
42005 *
42006 * @author Emily Stark
42007 * @author Mike Hamburg
42008 * @author Dan Boneh
42009 */
42010
42011 /**
42012 * Context for a SHA-256 operation in progress.
42013 * @constructor
42014 * @class Secure Hash Algorithm, 256 bits.
42015 */
42016 sjcl.hash.sha256 = function (hash) {
42017 if (!this._key[0]) { this._precompute(); }
42018 if (hash) {
42019 this._h = hash._h.slice(0);
42020 this._buffer = hash._buffer.slice(0);
42021 this._length = hash._length;
42022 } else {
42023 this.reset();
42024 }
42025 };
42026
42027 /**
42028 * Hash a string or an array of words.
42029 * @static
42030 * @param {bitArray|String} data the data to hash.
42031 * @return {bitArray} The hash value, an array of 16 big-endian words.
42032 */
42033 sjcl.hash.sha256.hash = function (data) {
42034 return (new sjcl.hash.sha256()).update(data).finalize();
42035 };
42036
42037 sjcl.hash.sha256.prototype = {
42038 /**
42039 * The hash's block size, in bits.
42040 * @constant
42041 */
42042 blockSize: 512,
42043
42044 /**
42045 * Reset the hash state.
42046 * @return this
42047 */
42048 reset:function () {
42049 this._h = this._init.slice(0);
42050 this._buffer = [];
42051 this._length = 0;
42052 return this;
42053 },
42054
42055 /**
42056 * Input several words to the hash.
42057 * @param {bitArray|String} data the data to hash.
42058 * @return this
42059 */
42060 update: function (data) {
42061 if (typeof data === "string") {
42062 data = sjcl.codec.utf8String.toBits(data);
42063 }
42064 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42065 ol = this._length,
42066 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42067 for (i = 512+ol & -512; i <= nl; i+= 512) {
42068 this._block(b.splice(0,16));
42069 }
42070 return this;
42071 },
42072
42073 /**
42074 * Complete hashing and output the hash value.
42075 * @return {bitArray} The hash value, an array of 8 big-endian words.
42076 */
42077 finalize:function () {
42078 var i, b = this._buffer, h = this._h;
42079
42080 // Round out and push the buffer
42081 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42082
42083 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42084 for (i = b.length + 2; i & 15; i++) {
42085 b.push(0);
42086 }
42087
42088 // append the length
42089 b.push(Math.floor(this._length / 0x100000000));
42090 b.push(this._length | 0);
42091
42092 while (b.length) {
42093 this._block(b.splice(0,16));
42094 }
42095
42096 this.reset();
42097 return h;
42098 },
42099
42100 /**
42101 * The SHA-256 initialization vector, to be precomputed.
42102 * @private
42103 */
42104 _init:[],
42105 /*
42106 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42107 */
42108
42109 /**
42110 * The SHA-256 hash key, to be precomputed.
42111 * @private
42112 */
42113 _key:[],
42114 /*
42115 _key:
42116 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42117 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42118 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42119 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42120 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42121 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42122 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42123 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42124 */
42125
42126
42127 /**
42128 * Function to precompute _init and _key.
42129 * @private
42130 */
42131 _precompute: function () {
42132 var i = 0, prime = 2, factor;
42133
42134 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42135
42136 outer: for (; i<64; prime++) {
42137 for (factor=2; factor*factor <= prime; factor++) {
42138 if (prime % factor === 0) {
42139 // not a prime
42140 continue outer;
42141 }
42142 }
42143
42144 if (i<8) {
42145 this._init[i] = frac(Math.pow(prime, 1/2));
42146 }
42147 this._key[i] = frac(Math.pow(prime, 1/3));
42148 i++;
42149 }
42150 },
42151
42152 /**
42153 * Perform one cycle of SHA-256.
42154 * @param {bitArray} words one block of words.
42155 * @private
42156 */
42157 _block:function (words) {
42158 var i, tmp, a, b,
42159 w = words.slice(0),
42160 h = this._h,
42161 k = this._key,
42162 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42163 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42164
42165 /* Rationale for placement of |0 :
42166 * If a value can overflow is original 32 bits by a factor of more than a few
42167 * million (2^23 ish), there is a possibility that it might overflow the
42168 * 53-bit mantissa and lose precision.
42169 *
42170 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42171 * propagates around the loop, and on the hash state h[]. I don't believe
42172 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42173 * (for h4 anyway), and better safe than sorry.
42174 *
42175 * The clamps on h[] are necessary for the output to be correct even in the
42176 * common case and for short inputs.
42177 */
42178 for (i=0; i<64; i++) {
42179 // load up the input word for this round
42180 if (i<16) {
42181 tmp = w[i];
42182 } else {
42183 a = w[(i+1 ) & 15];
42184 b = w[(i+14) & 15];
42185 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42186 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42187 w[i&15] + w[(i+9) & 15]) | 0;
42188 }
42189
42190 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42191
42192 // shift register
42193 h7 = h6; h6 = h5; h5 = h4;
42194 h4 = h3 + tmp | 0;
42195 h3 = h2; h2 = h1; h1 = h0;
42196
42197 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42198 }
42199
42200 h[0] = h[0]+h0 | 0;
42201 h[1] = h[1]+h1 | 0;
42202 h[2] = h[2]+h2 | 0;
42203 h[3] = h[3]+h3 | 0;
42204 h[4] = h[4]+h4 | 0;
42205 h[5] = h[5]+h5 | 0;
42206 h[6] = h[6]+h6 | 0;
42207 h[7] = h[7]+h7 | 0;
42208 }
42209 };
42210 </script>
42211 <script>// An extremely basic translation library
42212 //
42213 // Example usage:
42214 //
42215 // Set some html to be translated. Do this using the 'data-translate' attribute:
42216 //
42217 // <div data-translate>Test</div>
42218 // <div data-translate-html><em>keep em tag</em></div>
42219 // <input data-translate-placeholder placeholder="Example placeholder">
42220 // <span data-translate-title title="Example title"></span>
42221 //
42222 // Obtain all the phrases to be translated via js debug console:
42223 //
42224 // Translate.phrasesAsJson();
42225 //
42226 // Use that template to translate the phrases into another language.
42227 // Leave the key the same. Change the value to the new language.
42228 //
42229 // Create a js file to load the new phrases. In this example for Spanish,
42230 // es.js will contain the following code:
42231 //
42232 // Translate.loadForeignPhrases("es", {
42233 // "Test": "Test in Spanish",
42234 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
42235 // "Example placeholder": "Example placeholder in Spanish"
42236 // "Example title": "Example title in Spanish"
42237 // });
42238 //
42239 // In your UI put a listener for clicking on the Spanish button:
42240 //
42241 // mySpanishButton.addEventListener("click", function() {
42242 // Translate.setLanguage("es");
42243 // });
42244 // myEnglishButton.addEventListener("click", function() {
42245 // Translate.setLanguage("en");
42246 // });
42247
42248 Translate = new (function() {
42249
42250 var defaultLanguage = "en";
42251
42252 var allPhrases = {};
42253 allPhrases[defaultLanguage] = {};
42254
42255 // Node types
42256
42257 var text = {
42258 selector: "[data-translate]",
42259 getKey: function() {
42260 return this.textContent.trim().replace(/\s+/g, " ");
42261 },
42262 setPhrase: function(p) {
42263 this.textContent = p;
42264 },
42265 }
42266
42267 var html = {
42268 selector: "[data-translate-html]",
42269 getKey: function() {
42270 return this.innerHTML.trim().replace(/\s+/g, " ");
42271 },
42272 setPhrase: function(p) {
42273 this.innerHTML = p;
42274 },
42275 }
42276
42277 var placeholder = {
42278 selector: "[data-translate-placeholder]",
42279 getKey: function() {
42280 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
42281 },
42282 setPhrase: function(p) {
42283 this.setAttribute("placeholder", p);
42284 },
42285 }
42286
42287 var title = {
42288 selector: "[data-translate-title]",
42289 getKey: function() {
42290 return this.getAttribute("title").trim().replace(/\s+/g, " ");
42291 },
42292 setPhrase: function(p) {
42293 this.setAttribute("title", p);
42294 },
42295 }
42296
42297 // Get elements to be translated
42298 var allEls = getEls(text)
42299 .concat(getEls(html))
42300 .concat(getEls(placeholder))
42301 .concat(getEls(title));
42302
42303 // Provides access to phrases from a non-default language.
42304 // See phrases_en.js for example usage.
42305 this.loadForeignPhrases = function(language, phrases) {
42306 allPhrases[language] = phrases;
42307 }
42308
42309 // Displays a different language, eg "en" or "fr"
42310 this.setLanguage = function(language) {
42311 for (var i=0; i<allEls.length; i++) {
42312 var el = allEls[i];
42313 var key = el.key;
42314 if (!(language in allPhrases)) {
42315 console.log(language + " not in allPhrases");
42316 return;
42317 }
42318 if (!(key in allPhrases[language])) {
42319 console.log(language + " does not contain phrase: " + key);
42320 return;
42321 }
42322 var phrase = allPhrases[language][key];
42323 el.setPhrase(phrase);
42324 }
42325 }
42326
42327 // Converts the phrases to a key-pair json file.
42328 // This is a good way to export phrases for use in translation tools.
42329 this.phrasesAsJson = function(language) {
42330 var keys = [];
42331 for (var i=0; i<allEls.length; i++) {
42332 var el = allEls[i];
42333 var key = el.key;
42334 keys.push(key);
42335 }
42336 keys.sort();
42337 var output = {};
42338 for (var i=0; i<keys.length; i++) {
42339 var key = keys[i];
42340 var translated = "";
42341 if (language in allPhrases && key in allPhrases[language]) {
42342 translated = allPhrases[language][key];
42343 }
42344 output[key] = translated;
42345 }
42346 return JSON.stringify(output, null, 2);
42347 }
42348
42349 function getEls(nodeType) {
42350 var nodes = document.querySelectorAll(nodeType.selector);
42351 var els = [];
42352 for (var i=0; i<nodes.length; i++) {
42353 var node = nodes[i];
42354 node.getKey = nodeType.getKey;
42355 node.setPhrase = nodeType.setPhrase;
42356 node.key = node.getKey();
42357 allPhrases[defaultLanguage][node.key] = node.key;
42358 els.push(node);
42359 }
42360 return els;
42361 }
42362
42363 })();
42364 </script>
42365 <script>Translate.loadForeignPhrases("en",
42366 {
42367 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
42368 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
42369 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
42370 "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).": "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).",
42371 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
42372 "Account": "Account",
42373 "Address": "Address",
42374 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
42375 "BIP32 Derivation Path": "BIP32 Derivation Path",
42376 "BIP32 Extended Key": "BIP32 Extended Key",
42377 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
42378 "BIP32 Root Key": "BIP32 Root Key",
42379 "BIP39 Mnemonic": "BIP39 Mnemonic",
42380 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
42381 "BIP39 Seed": "BIP39 Seed",
42382 "Base 10": "Base 10",
42383 "Base 6": "Base 6",
42384 "Be careful - it can be easy to make mistakes if you don't know what you're doing.": "Be careful - it can be easy to make mistakes if you don't know what you're doing.",
42385 "Binary": "Binary",
42386 "Bitcoin Core": "Bitcoin Core",
42387 "Bits Per Event": "Bits Per Event",
42388 "Block Explorers": "Block Explorers",
42389 "Can be used with": "Can be used with",
42390 "Card": "Card",
42391 "Coin": "Coin",
42392 "Dice": "Dice",
42393 "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.": "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.",
42394 "Double-click that file to open it in a browser on any offline computer.": "Double-click that file to open it in a browser on any offline computer.",
42395 "Entropy": "Entropy",
42396 "Entropy Type": "Entropy Type",
42397 "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.": "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.",
42398 "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.": "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.",
42399 "Event Count": "Event Count",
42400 "External / Internal": "External / Internal",
42401 "Filtered Entropy": "Filtered Entropy",
42402 "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>": "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>",
42403 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.",
42404 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.",
42405 "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>": "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>",
42406 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
42407 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
42408 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
42409 "Get the source code from the repository": "Get the source code from the repository",
42410 "Hex": "Hex",
42411 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
42412 "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.": "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.",
42413 "In that case you might choose to use your own source of entropy.": "In that case you might choose to use your own source of entropy.",
42414 "In your browser, select file save-as, and save this page as a file.": "In your browser, select file save-as, and save this page as a file.",
42415 "Libraries": "Libraries",
42416 "Mnemonic Language": "Mnemonic Language",
42417 "Mnemonic Length": "Mnemonic Length",
42418 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
42419 "More info": "More info",
42420 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
42421 "Mycelium Wallet": "Mycelium Wallet",
42422 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
42423 "Offline Usage": "Offline Usage",
42424 "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.": "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.",
42425 "Path": "Path",
42426 "Private Key": "Private Key",
42427 "Private Keys": "Private Keys",
42428 "Public Key": "Public Key",
42429 "Purpose": "Purpose",
42430 "Raw Binary": "Raw Binary",
42431 "Read more": "Read more",
42432 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>",
42433 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>",
42434 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>",
42435 "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>": "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>",
42436 "Show": "Show",
42437 "Show more rows": "Show more rows",
42438 "Strength": "Strength",
42439 "Supply my own source of entropy": "Supply my own source of entropy",
42440 "The built in random generator can generally be trusted more than your own intuition about randomness.": "The built in random generator can generally be trusted more than your own intuition about randomness.",
42441 "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.": "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.",
42442 "This means flipping a fair coin, rolling a fair dice, noise measurements etc.": "This means flipping a fair coin, rolling a fair dice, noise measurements etc.",
42443 "This project is 100% open-source code": "This project is 100% open-source code",
42444 "Toggle": "Toggle",
42445 "Total Bits": "Total Bits",
42446 "Use hardened addresses": "Use hardened addresses",
42447 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
42448 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
42449 "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.": "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.",
42450 "Valid entropy values include:": "Valid entropy values include:",
42451 "Warning": "Warning",
42452 "Word Count": "Word Count",
42453 "You are not a good source of entropy.": "You are not a good source of entropy.",
42454 "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).": "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).",
42455 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
42456 "words": "words"
42457 }
42458 );
42459 </script>
42460 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42461 WORDLISTS["english"] = [
42462 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42463 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42464 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42465 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42466 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42467 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42468 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42469 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42470 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42471 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42472 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42473 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42474 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42475 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42476 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42477 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42478 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42479 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42480 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42481 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42482 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42483 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42484 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42485 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42486 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42487 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42488 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42489 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42490 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42491 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42492 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42493 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42494 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42495 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42496 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42497 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42498 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42499 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42500 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42501 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42502 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42503 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42504 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42505 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42506 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42507 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42508 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42509 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42510 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42511 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42512 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42513 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42514 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42515 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42516 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42517 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42518 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42519 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42520 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42521 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42522 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42523 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42524 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42525 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42526 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42527 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42528 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42529 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42530 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42531 "film","filter","final","find","fine","finger","finish","fire","firm","first",
42532 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42533 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42534 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42535 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42536 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42537 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42538 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42539 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42540 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42541 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42542 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42543 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42544 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42545 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42546 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42547 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42548 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42549 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42550 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42551 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42552 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42553 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42554 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42555 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42556 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42557 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42558 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42559 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42560 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42561 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42562 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42563 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42564 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42565 "liar","liberty","library","license","life","lift","light","like","limb","limit",
42566 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42567 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42568 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42569 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42570 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42571 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42572 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42573 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42574 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42575 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42576 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42577 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42578 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42579 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42580 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42581 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
42582 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42583 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42584 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42585 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
42586 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42587 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42588 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42589 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42590 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42591 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42592 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42593 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42594 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42595 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42596 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
42597 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42598 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42599 "prize","problem","process","produce","profit","program","project","promote","proof","property",
42600 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42601 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42602 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42603 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42604 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42605 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42606 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42607 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42608 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42609 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42610 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42611 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42612 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42613 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42614 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42615 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42616 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42617 "scrub","sea","search","season","seat","second","secret","section","security","seed",
42618 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42619 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42620 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42621 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42622 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42623 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42624 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42625 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42626 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42627 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42628 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42629 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42630 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42631 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42632 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42633 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42634 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42635 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42636 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42637 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42638 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42639 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42640 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42641 "thank","that","theme","then","theory","there","they","thing","this","thought",
42642 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42643 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42644 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42645 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42646 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42647 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42648 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42649 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42650 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42651 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42652 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42653 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42654 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42655 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42656 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42657 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42658 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42659 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42660 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42661 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42662 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42663 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42664 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42665 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42666 "yellow","you","young","youth","zebra","zero","zone","zoo"]
42667 </script>
42668 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42669 WORDLISTS["japanese"] = [
42670 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42671 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42672 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42673 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42674 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42675 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42676 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42677 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42678 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42679 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42680 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42681 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42682 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42683 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42684 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42685 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42686 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42687 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42688 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42689 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42690 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42691 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42692 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42693 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42694 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42695 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42696 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42697 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42698 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42699 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42700 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42701 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42702 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42703 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42704 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42705 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42706 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42707 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42708 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42709 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42710 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42711 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42712 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42713 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42714 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42715 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42716 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42717 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42718 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42719 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42720 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42721 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42722 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42723 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42724 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42725 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42726 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42727 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42728 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42729 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42730 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42731 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42732 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42733 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42734 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42735 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42736 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42737 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42738 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42739 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42740 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42741 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42742 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42743 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42744 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42745 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42746 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42747 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42748 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42749 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42750 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42751 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42752 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42753 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42754 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42755 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42756 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42757 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42758 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42759 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42760 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42761 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42762 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42763 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42764 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42765 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42766 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42767 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42768 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42769 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42770 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42771 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42772 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42773 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42774 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42775 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42776 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42777 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
42778 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
42779 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
42780 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
42781 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
42782 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
42783 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
42784 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
42785 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
42786 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
42787 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
42788 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
42789 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
42790 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
42791 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
42792 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
42793 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
42794 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
42795 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
42796 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
42797 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
42798 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
42799 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
42800 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
42801 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
42802 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
42803 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
42804 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
42805 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
42806 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
42807 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
42808 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
42809 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
42810 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
42811 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
42812 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
42813 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
42814 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
42815 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
42816 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
42817 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
42818 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
42819 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
42820 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
42821 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
42822 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
42823 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
42824 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
42825 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
42826 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
42827 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
42828 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
42829 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
42830 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
42831 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
42832 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
42833 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
42834 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
42835 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
42836 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
42837 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
42838 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
42839 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
42840 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
42841 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
42842 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
42843 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
42844 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
42845 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
42846 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
42847 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
42848 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
42849 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
42850 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
42851 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
42852 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
42853 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
42854 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
42855 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
42856 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
42857 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
42858 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
42859 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
42860 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
42861 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
42862 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
42863 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
42864 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
42865 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
42866 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
42867 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
42868 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
42869 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
42870 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
42871 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
42872 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
42873 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
42874 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
42875 </script>
42876 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42877 WORDLISTS["spanish"] = [
42878 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42879 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42880 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42881 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42882 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42883 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42884 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42885 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42886 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42887 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42888 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42889 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42890 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42891 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42892 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42893 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42894 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42895 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42896 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42897 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42898 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42899 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42900 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42901 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42902 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42903 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42904 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42905 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42906 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42907 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42908 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42909 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42910 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42911 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42912 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42913 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42914 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42915 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42916 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42917 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42918 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42919 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42920 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42921 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42922 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42923 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42924 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42925 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42926 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42927 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42928 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42929 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42930 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42931 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42932 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42933 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42934 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42935 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42936 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42937 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42938 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42939 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42940 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42941 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42942 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42943 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42944 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42945 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42946 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42947 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42948 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42949 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42950 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42951 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42952 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42953 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42954 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42955 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42956 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42957 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42958 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42959 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42960 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42961 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42962 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42963 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42964 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42965 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42966 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42967 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42968 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42969 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42970 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42971 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42972 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42973 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42974 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42975 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42976 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42977 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42978 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42979 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42980 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42981 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42982 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42983 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42984 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42985 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42986 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42987 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42988 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42989 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42990 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42991 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42992 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42993 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42994 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42995 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42996 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42997 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42998 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42999 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
43000 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
43001 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
43002 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
43003 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
43004 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
43005 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
43006 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
43007 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
43008 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
43009 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
43010 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
43011 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
43012 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
43013 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
43014 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
43015 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
43016 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
43017 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
43018 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
43019 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
43020 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
43021 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
43022 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
43023 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
43024 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
43025 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
43026 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
43027 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
43028 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
43029 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
43030 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
43031 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
43032 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
43033 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
43034 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
43035 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
43036 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
43037 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
43038 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
43039 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
43040 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
43041 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
43042 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
43043 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
43044 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
43045 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
43046 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
43047 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
43048 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
43049 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
43050 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
43051 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
43052 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
43053 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
43054 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
43055 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
43056 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
43057 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
43058 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
43059 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
43060 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
43061 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
43062 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
43063 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
43064 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
43065 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
43066 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
43067 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
43068 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
43069 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
43070 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
43071 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
43072 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
43073 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
43074 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
43075 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
43076 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
43077 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
43078 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
43079 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
43080 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
43081 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
43082 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
43083 </script>
43084 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43085 WORDLISTS["chinese_simplified"] = [
43086 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
43087 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
43088 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
43089 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
43090 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
43091 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
43092 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
43093 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
43094 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
43095 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
43096 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
43097 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43098 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
43099 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
43100 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
43101 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
43102 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
43103 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
43104 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
43105 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
43106 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
43107 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
43108 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
43109 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
43110 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
43111 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
43112 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
43113 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
43114 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
43115 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
43116 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
43117 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
43118 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
43119 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
43120 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
43121 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
43122 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
43123 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
43124 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
43125 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
43126 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
43127 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
43128 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
43129 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
43130 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
43131 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
43132 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
43133 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
43134 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
43135 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
43136 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
43137 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
43138 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
43139 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
43140 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
43141 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
43142 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
43143 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
43144 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
43145 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
43146 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
43147 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
43148 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
43149 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
43150 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
43151 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
43152 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
43153 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
43154 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
43155 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
43156 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
43157 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
43158 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
43159 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
43160 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
43161 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43162 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
43163 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
43164 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
43165 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
43166 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
43167 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
43168 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
43169 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
43170 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
43171 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
43172 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
43173 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
43174 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
43175 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
43176 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
43177 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
43178 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43179 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
43180 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
43181 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
43182 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
43183 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
43184 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
43185 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
43186 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
43187 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
43188 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
43189 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
43190 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
43191 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
43192 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
43193 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
43194 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43195 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43196 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
43197 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
43198 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
43199 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
43200 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
43201 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
43202 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
43203 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
43204 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
43205 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
43206 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
43207 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43208 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
43209 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
43210 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
43211 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
43212 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
43213 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
43214 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
43215 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
43216 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
43217 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
43218 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
43219 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
43220 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
43221 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
43222 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
43223 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
43224 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
43225 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
43226 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
43227 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
43228 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
43229 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
43230 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
43231 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
43232 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
43233 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
43234 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
43235 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
43236 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
43237 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
43238 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
43239 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
43240 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
43241 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
43242 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
43243 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
43244 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
43245 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
43246 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
43247 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
43248 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
43249 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
43250 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
43251 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
43252 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
43253 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
43254 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
43255 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
43256 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
43257 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
43258 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
43259 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
43260 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
43261 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
43262 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
43263 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
43264 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
43265 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
43266 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
43267 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
43268 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
43269 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
43270 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
43271 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
43272 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
43273 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
43274 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
43275 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
43276 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
43277 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
43278 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
43279 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
43280 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
43281 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
43282 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
43283 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
43284 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
43285 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
43286 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
43287 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
43288 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
43289 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
43290 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
43291 </script>
43292 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43293 WORDLISTS["chinese_traditional"] = [
43294 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
43295 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
43296 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
43297 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
43298 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
43299 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
43300 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
43301 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
43302 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
43303 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
43304 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
43305 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43306 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
43307 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
43308 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
43309 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
43310 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
43311 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
43312 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
43313 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
43314 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
43315 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
43316 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
43317 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
43318 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
43319 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
43320 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
43321 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
43322 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
43323 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
43324 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
43325 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
43326 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
43327 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
43328 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
43329 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
43330 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
43331 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
43332 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
43333 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
43334 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43335 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43336 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43337 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43338 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43339 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43340 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43341 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43342 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43343 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43344 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43345 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43346 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43347 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43348 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43349 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43350 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43351 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43352 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43353 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43354 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43355 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43356 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43357 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43358 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43359 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43360 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43361 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43362 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43363 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43364 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43365 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43366 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43367 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43368 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43369 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43370 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43371 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43372 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43373 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43374 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43375 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43376 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43377 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43378 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43379 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43380 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43381 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43382 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43383 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43384 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43385 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43386 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43387 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43388 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43389 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43390 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43391 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43392 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43393 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43394 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43395 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43396 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43397 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43398 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43399 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43400 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43401 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43402 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43403 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43404 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43405 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43406 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43407 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43408 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43409 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43410 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43411 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43412 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43413 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43414 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43415 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43416 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43417 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43418 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43419 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43420 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43421 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43422 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43423 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43424 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43425 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43426 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43427 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43428 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43429 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43430 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43431 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43432 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43433 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43434 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43435 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43436 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43437 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43438 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43439 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43440 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43441 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43442 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
43443 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
43444 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
43445 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
43446 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
43447 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
43448 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
43449 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
43450 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
43451 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
43452 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
43453 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
43454 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
43455 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
43456 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
43457 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
43458 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
43459 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
43460 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
43461 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
43462 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
43463 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
43464 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
43465 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
43466 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
43467 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
43468 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
43469 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
43470 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
43471 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
43472 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
43473 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
43474 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
43475 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
43476 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
43477 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
43478 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
43479 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
43480 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
43481 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
43482 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
43483 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
43484 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
43485 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
43486 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
43487 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
43488 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
43489 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
43490 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
43491 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
43492 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
43493 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
43494 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
43495 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
43496 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
43497 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
43498 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
43499 </script>
43500 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43501 WORDLISTS["french"] = [
43502 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43503 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43504 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43505 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43506 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43507 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43508 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43509 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43510 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43511 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43512 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43513 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43514 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43515 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43516 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43517 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43518 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43519 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43520 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43521 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43522 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43523 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43524 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43525 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43526 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43527 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43528 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43529 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43530 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43531 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43532 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43533 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43534 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43535 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43536 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43537 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43538 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43539 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43540 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43541 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43542 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43543 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43544 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43545 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43546 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43547 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43548 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43549 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43550 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43551 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43552 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43553 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43554 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43555 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43556 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43557 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43558 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43559 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43560 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43561 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43562 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43563 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43564 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43565 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43566 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43567 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43568 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43569 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43570 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43571 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43572 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43573 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43574 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43575 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43576 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43577 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43578 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43579 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43580 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43581 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43582 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43583 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43584 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43585 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43586 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43587 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43588 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43589 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43590 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43591 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43592 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43593 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43594 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43595 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43596 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43597 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43598 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43599 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43600 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43601 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43602 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43603 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43604 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43605 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43606 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43607 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43608 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43609 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43610 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43611 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43612 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43613 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43614 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43615 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43616 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43617 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43618 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43619 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43620 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43621 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43622 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43623 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43624 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43625 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43626 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43627 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43628 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43629 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43630 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43631 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43632 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43633 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43634 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43635 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43636 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43637 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43638 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43639 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43640 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43641 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43642 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43643 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43644 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43645 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43646 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43647 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43648 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43649 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43650 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43651 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43652 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43653 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43654 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43655 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43656 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43657 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43658 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43659 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43660 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43661 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43662 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43663 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43664 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43665 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43666 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43667 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43668 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43669 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43670 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43671 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43672 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43673 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43674 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43675 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43676 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43677 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43678 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43679 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43680 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43681 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43682 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43683 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43684 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43685 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43686 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43687 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43688 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43689 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43690 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43691 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43692 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43693 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43694 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43695 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43696 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43697 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43698 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43699 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43700 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43701 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43702 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43703 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43704 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43705 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43706 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43707 </script>
43708 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43709 WORDLISTS["italian"] = [
43710 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43711 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43712 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43713 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43714 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43715 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43716 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43717 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43718 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43719 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43720 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43721 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43722 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43723 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43724 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43725 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43726 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43727 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43728 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43729 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43730 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43731 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43732 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43733 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43734 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43735 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43736 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43737 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43738 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43739 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43740 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43741 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43742 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43743 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43744 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43745 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43746 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43747 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43748 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43749 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43750 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43751 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43752 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43753 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43754 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43755 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43756 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43757 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43758 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43759 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43760 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43761 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43762 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43763 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43764 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43765 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43766 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43767 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43768 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43769 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43770 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43771 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43772 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43773 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43774 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43775 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43776 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43777 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43778 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43779 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43780 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43781 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43782 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43783 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43784 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43785 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43786 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43787 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43788 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43789 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43790 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43791 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43792 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43793 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43794 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43795 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43796 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43797 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43798 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43799 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43800 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43801 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43802 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43803 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43804 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43805 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43806 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43807 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43808 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43809 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43810 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43811 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43812 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43813 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43814 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43815 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43816 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43817 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43818 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43819 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43820 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43821 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43822 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43823 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43824 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43825 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43826 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43827 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43828 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43829 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43830 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43831 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43832 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43833 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43834 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43835 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43836 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43837 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43838 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43839 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43840 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43841 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43842 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43843 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43844 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43845 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43846 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43847 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43848 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43849 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43850 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43851 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43852 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43853 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43854 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43855 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43856 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43857 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43858 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43859 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43860 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43861 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43862 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43863 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43864 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43865 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43866 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43867 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43868 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43869 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43870 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43871 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43872 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43873 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43874 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43875 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43876 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43877 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43878 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43879 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43880 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43881 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43882 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43883 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43884 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43885 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43886 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43887 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43888 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43889 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43890 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43891 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43892 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43893 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43894 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43895 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43896 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43897 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43898 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43899 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43900 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43901 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43902 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43903 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43904 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43905 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43906 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43907 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43908 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43909 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43910 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43911 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43912 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43913 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43914 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
43915 </script>
43916 <script>/*
43917 * Copyright (c) 2013 Pavol Rusnak
43918 *
43919 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43920 * this software and associated documentation files (the "Software"), to deal in
43921 * the Software without restriction, including without limitation the rights to
43922 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43923 * of the Software, and to permit persons to whom the Software is furnished to do
43924 * so, subject to the following conditions:
43925 *
43926 * The above copyright notice and this permission notice shall be included in all
43927 * copies or substantial portions of the Software.
43928 *
43929 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43930 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43931 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43932 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43933 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43934 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43935 */
43936
43937 /*
43938 * Javascript port from python by Ian Coleman
43939 *
43940 * Requires code from sjcl
43941 * https://github.com/bitwiseshiftleft/sjcl
43942 */
43943
43944 var Mnemonic = function(language) {
43945
43946 var PBKDF2_ROUNDS = 2048;
43947 var RADIX = 2048;
43948
43949 var self = this;
43950 var wordlist = [];
43951
43952 var hmacSHA512 = function(key) {
43953 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43954 this.encrypt = function() {
43955 return hasher.encrypt.apply(hasher, arguments);
43956 };
43957 };
43958
43959 function init() {
43960 wordlist = WORDLISTS[language];
43961 if (wordlist.length != RADIX) {
43962 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43963 throw err;
43964 }
43965 }
43966
43967 self.generate = function(strength) {
43968 strength = strength || 128;
43969 var r = strength % 32;
43970 if (r > 0) {
43971 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43972 }
43973 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43974 if (!hasStrongCrypto) {
43975 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43976 }
43977 var buffer = new Uint8Array(strength / 8);
43978 var data = crypto.getRandomValues(buffer);
43979 return self.toMnemonic(data);
43980 }
43981
43982 self.toMnemonic = function(byteArray) {
43983 if (byteArray.length % 4 > 0) {
43984 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
43985 }
43986
43987 //h = hashlib.sha256(data).hexdigest()
43988 var data = byteArrayToWordArray(byteArray);
43989 var hash = sjcl.hash.sha256.hash(data);
43990 var h = sjcl.codec.hex.fromBits(hash);
43991
43992 // b is a binary string, eg '00111010101100...'
43993 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43994 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43995 //
43996 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43997 // c = bin(int(h, 16))[2:].zfill(256)
43998 // d = c[:len(data) * 8 / 32]
43999 var a = byteArrayToBinaryString(byteArray);
44000 var c = zfill(hexStringToBinaryString(h), 256);
44001 var d = c.substring(0, byteArray.length * 8 / 32);
44002 // b = line1 + line2
44003 var b = a + d;
44004
44005 var result = [];
44006 var blen = b.length / 11;
44007 for (var i=0; i<blen; i++) {
44008 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
44009 result.push(wordlist[idx]);
44010 }
44011 return self.joinWords(result);
44012 }
44013
44014 self.check = function(mnemonic) {
44015 var mnemonic = self.splitWords(mnemonic);
44016 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
44017 return false
44018 }
44019 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
44020 var idx = [];
44021 for (var i=0; i<mnemonic.length; i++) {
44022 var word = mnemonic[i];
44023 var wordIndex = wordlist.indexOf(word);
44024 if (wordIndex == -1) {
44025 return false;
44026 }
44027 var binaryIndex = zfill(wordIndex.toString(2), 11);
44028 idx.push(binaryIndex);
44029 }
44030 var b = idx.join('');
44031 var l = b.length;
44032 //d = b[:l / 33 * 32]
44033 //h = b[-l / 33:]
44034 var d = b.substring(0, l / 33 * 32);
44035 var h = b.substring(l - l / 33, l);
44036 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
44037 var nd = binaryStringToWordArray(d);
44038 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
44039 var ndHash = sjcl.hash.sha256.hash(nd);
44040 var ndHex = sjcl.codec.hex.fromBits(ndHash);
44041 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
44042 var nh = ndBstr.substring(0,l/33);
44043 return h == nh;
44044 }
44045
44046 self.toSeed = function(mnemonic, passphrase) {
44047 passphrase = passphrase || '';
44048 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
44049 var mnemonicNormalized = self.normalizeString(mnemonic);
44050 passphrase = self.normalizeString(passphrase)
44051 passphrase = "mnemonic" + passphrase;
44052 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
44053 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
44054 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
44055 var hashHex = sjcl.codec.hex.fromBits(result);
44056 return hashHex;
44057 }
44058
44059 self.splitWords = function(mnemonic) {
44060 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
44061 }
44062
44063 self.joinWords = function(words) {
44064 // Set space correctly depending on the language
44065 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
44066 var space = " ";
44067 if (language == "japanese") {
44068 space = "\u3000"; // ideographic space
44069 }
44070 return words.join(space);
44071 }
44072
44073 self.normalizeString = function(str) {
44074 if (typeof str.normalize == "function") {
44075 return str.normalize("NFKD");
44076 }
44077 else {
44078 // TODO decide how to handle this in the future.
44079 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
44080 return str;
44081 }
44082 }
44083
44084 function byteArrayToWordArray(data) {
44085 var a = [];
44086 for (var i=0; i<data.length/4; i++) {
44087 v = 0;
44088 v += data[i*4 + 0] << 8 * 3;
44089 v += data[i*4 + 1] << 8 * 2;
44090 v += data[i*4 + 2] << 8 * 1;
44091 v += data[i*4 + 3] << 8 * 0;
44092 a.push(v);
44093 }
44094 return a;
44095 }
44096
44097 function byteArrayToBinaryString(data) {
44098 var bin = "";
44099 for (var i=0; i<data.length; i++) {
44100 bin += zfill(data[i].toString(2), 8);
44101 }
44102 return bin;
44103 }
44104
44105 function hexStringToBinaryString(hexString) {
44106 binaryString = "";
44107 for (var i=0; i<hexString.length; i++) {
44108 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
44109 }
44110 return binaryString;
44111 }
44112
44113 function binaryStringToWordArray(binary) {
44114 var aLen = binary.length / 32;
44115 var a = [];
44116 for (var i=0; i<aLen; i++) {
44117 var valueStr = binary.substring(0,32);
44118 var value = parseInt(valueStr, 2);
44119 a.push(value);
44120 binary = binary.slice(32);
44121 }
44122 return a;
44123 }
44124
44125 // Pad a numeric string on the left with zero digits until the given width
44126 // is reached.
44127 // Note this differs to the python implementation because it does not
44128 // handle numbers starting with a sign.
44129 function zfill(source, length) {
44130 source = source.toString();
44131 while (source.length < length) {
44132 source = '0' + source;
44133 }
44134 return source;
44135 }
44136
44137 init();
44138
44139 }
44140 </script>
44141 <script>/*
44142 JavaScript BigInteger library version 0.9.1
44143 http://silentmatt.com/biginteger/
44144
44145 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
44146 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
44147 Licensed under the MIT license.
44148
44149 Support for arbitrary internal representation base was added by
44150 Vitaly Magerya.
44151 */
44152
44153 /*
44154 File: biginteger.js
44155
44156 Exports:
44157
44158 <BigInteger>
44159 */
44160 (function(exports) {
44161 "use strict";
44162 /*
44163 Class: BigInteger
44164 An arbitrarily-large integer.
44165
44166 <BigInteger> objects should be considered immutable. None of the "built-in"
44167 methods modify *this* or their arguments. All properties should be
44168 considered private.
44169
44170 All the methods of <BigInteger> instances can be called "statically". The
44171 static versions are convenient if you don't already have a <BigInteger>
44172 object.
44173
44174 As an example, these calls are equivalent.
44175
44176 > BigInteger(4).multiply(5); // returns BigInteger(20);
44177 > BigInteger.multiply(4, 5); // returns BigInteger(20);
44178
44179 > var a = 42;
44180 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
44181 */
44182
44183 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
44184
44185 /*
44186 Constructor: BigInteger()
44187 Convert a value to a <BigInteger>.
44188
44189 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
44190 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
44191 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
44192 without a radix argument.
44193
44194 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
44195 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
44196 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
44197 > var n3 = BigInteger(n2); // Return n2, unchanged
44198
44199 The constructor form only takes an array and a sign. *n* must be an
44200 array of numbers in little-endian order, where each digit is between 0
44201 and BigInteger.base. The second parameter sets the sign: -1 for
44202 negative, +1 for positive, or 0 for zero. The array is *not copied and
44203 may be modified*. If the array contains only zeros, the sign parameter
44204 is ignored and is forced to zero.
44205
44206 > new BigInteger([5], -1): create a new BigInteger with value -5
44207
44208 Parameters:
44209
44210 n - Value to convert to a <BigInteger>.
44211
44212 Returns:
44213
44214 A <BigInteger> value.
44215
44216 See Also:
44217
44218 <parse>, <BigInteger>
44219 */
44220 function BigInteger(n, s, token) {
44221 if (token !== CONSTRUCT) {
44222 if (n instanceof BigInteger) {
44223 return n;
44224 }
44225 else if (typeof n === "undefined") {
44226 return ZERO;
44227 }
44228 return BigInteger.parse(n);
44229 }
44230
44231 n = n || []; // Provide the nullary constructor for subclasses.
44232 while (n.length && !n[n.length - 1]) {
44233 --n.length;
44234 }
44235 this._d = n;
44236 this._s = n.length ? (s || 1) : 0;
44237 }
44238
44239 BigInteger._construct = function(n, s) {
44240 return new BigInteger(n, s, CONSTRUCT);
44241 };
44242
44243 // Base-10 speedup hacks in parse, toString, exp10 and log functions
44244 // require base to be a power of 10. 10^7 is the largest such power
44245 // that won't cause a precision loss when digits are multiplied.
44246 var BigInteger_base = 10000000;
44247 var BigInteger_base_log10 = 7;
44248
44249 BigInteger.base = BigInteger_base;
44250 BigInteger.base_log10 = BigInteger_base_log10;
44251
44252 var ZERO = new BigInteger([], 0, CONSTRUCT);
44253 // Constant: ZERO
44254 // <BigInteger> 0.
44255 BigInteger.ZERO = ZERO;
44256
44257 var ONE = new BigInteger([1], 1, CONSTRUCT);
44258 // Constant: ONE
44259 // <BigInteger> 1.
44260 BigInteger.ONE = ONE;
44261
44262 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44263 // Constant: M_ONE
44264 // <BigInteger> -1.
44265 BigInteger.M_ONE = M_ONE;
44266
44267 // Constant: _0
44268 // Shortcut for <ZERO>.
44269 BigInteger._0 = ZERO;
44270
44271 // Constant: _1
44272 // Shortcut for <ONE>.
44273 BigInteger._1 = ONE;
44274
44275 /*
44276 Constant: small
44277 Array of <BigIntegers> from 0 to 36.
44278
44279 These are used internally for parsing, but useful when you need a "small"
44280 <BigInteger>.
44281
44282 See Also:
44283
44284 <ZERO>, <ONE>, <_0>, <_1>
44285 */
44286 BigInteger.small = [
44287 ZERO,
44288 ONE,
44289 /* Assuming BigInteger_base > 36 */
44290 new BigInteger( [2], 1, CONSTRUCT),
44291 new BigInteger( [3], 1, CONSTRUCT),
44292 new BigInteger( [4], 1, CONSTRUCT),
44293 new BigInteger( [5], 1, CONSTRUCT),
44294 new BigInteger( [6], 1, CONSTRUCT),
44295 new BigInteger( [7], 1, CONSTRUCT),
44296 new BigInteger( [8], 1, CONSTRUCT),
44297 new BigInteger( [9], 1, CONSTRUCT),
44298 new BigInteger([10], 1, CONSTRUCT),
44299 new BigInteger([11], 1, CONSTRUCT),
44300 new BigInteger([12], 1, CONSTRUCT),
44301 new BigInteger([13], 1, CONSTRUCT),
44302 new BigInteger([14], 1, CONSTRUCT),
44303 new BigInteger([15], 1, CONSTRUCT),
44304 new BigInteger([16], 1, CONSTRUCT),
44305 new BigInteger([17], 1, CONSTRUCT),
44306 new BigInteger([18], 1, CONSTRUCT),
44307 new BigInteger([19], 1, CONSTRUCT),
44308 new BigInteger([20], 1, CONSTRUCT),
44309 new BigInteger([21], 1, CONSTRUCT),
44310 new BigInteger([22], 1, CONSTRUCT),
44311 new BigInteger([23], 1, CONSTRUCT),
44312 new BigInteger([24], 1, CONSTRUCT),
44313 new BigInteger([25], 1, CONSTRUCT),
44314 new BigInteger([26], 1, CONSTRUCT),
44315 new BigInteger([27], 1, CONSTRUCT),
44316 new BigInteger([28], 1, CONSTRUCT),
44317 new BigInteger([29], 1, CONSTRUCT),
44318 new BigInteger([30], 1, CONSTRUCT),
44319 new BigInteger([31], 1, CONSTRUCT),
44320 new BigInteger([32], 1, CONSTRUCT),
44321 new BigInteger([33], 1, CONSTRUCT),
44322 new BigInteger([34], 1, CONSTRUCT),
44323 new BigInteger([35], 1, CONSTRUCT),
44324 new BigInteger([36], 1, CONSTRUCT)
44325 ];
44326
44327 // Used for parsing/radix conversion
44328 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44329
44330 /*
44331 Method: toString
44332 Convert a <BigInteger> to a string.
44333
44334 When *base* is greater than 10, letters are upper case.
44335
44336 Parameters:
44337
44338 base - Optional base to represent the number in (default is base 10).
44339 Must be between 2 and 36 inclusive, or an Error will be thrown.
44340
44341 Returns:
44342
44343 The string representation of the <BigInteger>.
44344 */
44345 BigInteger.prototype.toString = function(base) {
44346 base = +base || 10;
44347 if (base < 2 || base > 36) {
44348 throw new Error("illegal radix " + base + ".");
44349 }
44350 if (this._s === 0) {
44351 return "0";
44352 }
44353 if (base === 10) {
44354 var str = this._s < 0 ? "-" : "";
44355 str += this._d[this._d.length - 1].toString();
44356 for (var i = this._d.length - 2; i >= 0; i--) {
44357 var group = this._d[i].toString();
44358 while (group.length < BigInteger_base_log10) group = '0' + group;
44359 str += group;
44360 }
44361 return str;
44362 }
44363 else {
44364 var numerals = BigInteger.digits;
44365 base = BigInteger.small[base];
44366 var sign = this._s;
44367
44368 var n = this.abs();
44369 var digits = [];
44370 var digit;
44371
44372 while (n._s !== 0) {
44373 var divmod = n.divRem(base);
44374 n = divmod[0];
44375 digit = divmod[1];
44376 // TODO: This could be changed to unshift instead of reversing at the end.
44377 // Benchmark both to compare speeds.
44378 digits.push(numerals[digit.valueOf()]);
44379 }
44380 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44381 }
44382 };
44383
44384 // Verify strings for parsing
44385 BigInteger.radixRegex = [
44386 /^$/,
44387 /^$/,
44388 /^[01]*$/,
44389 /^[012]*$/,
44390 /^[0-3]*$/,
44391 /^[0-4]*$/,
44392 /^[0-5]*$/,
44393 /^[0-6]*$/,
44394 /^[0-7]*$/,
44395 /^[0-8]*$/,
44396 /^[0-9]*$/,
44397 /^[0-9aA]*$/,
44398 /^[0-9abAB]*$/,
44399 /^[0-9abcABC]*$/,
44400 /^[0-9a-dA-D]*$/,
44401 /^[0-9a-eA-E]*$/,
44402 /^[0-9a-fA-F]*$/,
44403 /^[0-9a-gA-G]*$/,
44404 /^[0-9a-hA-H]*$/,
44405 /^[0-9a-iA-I]*$/,
44406 /^[0-9a-jA-J]*$/,
44407 /^[0-9a-kA-K]*$/,
44408 /^[0-9a-lA-L]*$/,
44409 /^[0-9a-mA-M]*$/,
44410 /^[0-9a-nA-N]*$/,
44411 /^[0-9a-oA-O]*$/,
44412 /^[0-9a-pA-P]*$/,
44413 /^[0-9a-qA-Q]*$/,
44414 /^[0-9a-rA-R]*$/,
44415 /^[0-9a-sA-S]*$/,
44416 /^[0-9a-tA-T]*$/,
44417 /^[0-9a-uA-U]*$/,
44418 /^[0-9a-vA-V]*$/,
44419 /^[0-9a-wA-W]*$/,
44420 /^[0-9a-xA-X]*$/,
44421 /^[0-9a-yA-Y]*$/,
44422 /^[0-9a-zA-Z]*$/
44423 ];
44424
44425 /*
44426 Function: parse
44427 Parse a string into a <BigInteger>.
44428
44429 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44430 *base* is not provided, it will be guessed based on the leading characters
44431 of *s* as follows:
44432
44433 - "0x" or "0X": *base* = 16
44434 - "0c" or "0C": *base* = 8
44435 - "0b" or "0B": *base* = 2
44436 - else: *base* = 10
44437
44438 If no base is provided, or *base* is 10, the number can be in exponential
44439 form. For example, these are all valid:
44440
44441 > BigInteger.parse("1e9"); // Same as "1000000000"
44442 > BigInteger.parse("1.234*10^3"); // Same as 1234
44443 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44444
44445 If any characters fall outside the range defined by the radix, an exception
44446 will be thrown.
44447
44448 Parameters:
44449
44450 s - The string to parse.
44451 base - Optional radix (default is to guess based on *s*).
44452
44453 Returns:
44454
44455 a <BigInteger> instance.
44456 */
44457 BigInteger.parse = function(s, base) {
44458 // Expands a number in exponential form to decimal form.
44459 // expandExponential("-13.441*10^5") === "1344100";
44460 // expandExponential("1.12300e-1") === "0.112300";
44461 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44462 function expandExponential(str) {
44463 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44464
44465 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44466 c = +c;
44467 var l = c < 0;
44468 var i = n.length + c;
44469 x = (l ? n : f).length;
44470 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44471 var z = (new Array(c + 1)).join("0");
44472 var r = n + f;
44473 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44474 });
44475 }
44476
44477 s = s.toString();
44478 if (typeof base === "undefined" || +base === 10) {
44479 s = expandExponential(s);
44480 }
44481
44482 var prefixRE;
44483 if (typeof base === "undefined") {
44484 prefixRE = '0[xcb]';
44485 }
44486 else if (base == 16) {
44487 prefixRE = '0x';
44488 }
44489 else if (base == 8) {
44490 prefixRE = '0c';
44491 }
44492 else if (base == 2) {
44493 prefixRE = '0b';
44494 }
44495 else {
44496 prefixRE = '';
44497 }
44498 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44499 if (parts) {
44500 var sign = parts[1] || "+";
44501 var baseSection = parts[2] || "";
44502 var digits = parts[3] || "";
44503
44504 if (typeof base === "undefined") {
44505 // Guess base
44506 if (baseSection === "0x" || baseSection === "0X") { // Hex
44507 base = 16;
44508 }
44509 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44510 base = 8;
44511 }
44512 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44513 base = 2;
44514 }
44515 else {
44516 base = 10;
44517 }
44518 }
44519 else if (base < 2 || base > 36) {
44520 throw new Error("Illegal radix " + base + ".");
44521 }
44522
44523 base = +base;
44524
44525 // Check for digits outside the range
44526 if (!(BigInteger.radixRegex[base].test(digits))) {
44527 throw new Error("Bad digit for radix " + base);
44528 }
44529
44530 // Strip leading zeros, and convert to array
44531 digits = digits.replace(/^0+/, "").split("");
44532 if (digits.length === 0) {
44533 return ZERO;
44534 }
44535
44536 // Get the sign (we know it's not zero)
44537 sign = (sign === "-") ? -1 : 1;
44538
44539 // Optimize 10
44540 if (base == 10) {
44541 var d = [];
44542 while (digits.length >= BigInteger_base_log10) {
44543 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44544 }
44545 d.push(parseInt(digits.join(''), 10));
44546 return new BigInteger(d, sign, CONSTRUCT);
44547 }
44548
44549 // Do the conversion
44550 var d = ZERO;
44551 base = BigInteger.small[base];
44552 var small = BigInteger.small;
44553 for (var i = 0; i < digits.length; i++) {
44554 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44555 }
44556 return new BigInteger(d._d, sign, CONSTRUCT);
44557 }
44558 else {
44559 throw new Error("Invalid BigInteger format: " + s);
44560 }
44561 };
44562
44563 /*
44564 Function: add
44565 Add two <BigIntegers>.
44566
44567 Parameters:
44568
44569 n - The number to add to *this*. Will be converted to a <BigInteger>.
44570
44571 Returns:
44572
44573 The numbers added together.
44574
44575 See Also:
44576
44577 <subtract>, <multiply>, <quotient>, <next>
44578 */
44579 BigInteger.prototype.add = function(n) {
44580 if (this._s === 0) {
44581 return BigInteger(n);
44582 }
44583
44584 n = BigInteger(n);
44585 if (n._s === 0) {
44586 return this;
44587 }
44588 if (this._s !== n._s) {
44589 n = n.negate();
44590 return this.subtract(n);
44591 }
44592
44593 var a = this._d;
44594 var b = n._d;
44595 var al = a.length;
44596 var bl = b.length;
44597 var sum = new Array(Math.max(al, bl) + 1);
44598 var size = Math.min(al, bl);
44599 var carry = 0;
44600 var digit;
44601
44602 for (var i = 0; i < size; i++) {
44603 digit = a[i] + b[i] + carry;
44604 sum[i] = digit % BigInteger_base;
44605 carry = (digit / BigInteger_base) | 0;
44606 }
44607 if (bl > al) {
44608 a = b;
44609 al = bl;
44610 }
44611 for (i = size; carry && i < al; i++) {
44612 digit = a[i] + carry;
44613 sum[i] = digit % BigInteger_base;
44614 carry = (digit / BigInteger_base) | 0;
44615 }
44616 if (carry) {
44617 sum[i] = carry;
44618 }
44619
44620 for ( ; i < al; i++) {
44621 sum[i] = a[i];
44622 }
44623
44624 return new BigInteger(sum, this._s, CONSTRUCT);
44625 };
44626
44627 /*
44628 Function: negate
44629 Get the additive inverse of a <BigInteger>.
44630
44631 Returns:
44632
44633 A <BigInteger> with the same magnatude, but with the opposite sign.
44634
44635 See Also:
44636
44637 <abs>
44638 */
44639 BigInteger.prototype.negate = function() {
44640 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44641 };
44642
44643 /*
44644 Function: abs
44645 Get the absolute value of a <BigInteger>.
44646
44647 Returns:
44648
44649 A <BigInteger> with the same magnatude, but always positive (or zero).
44650
44651 See Also:
44652
44653 <negate>
44654 */
44655 BigInteger.prototype.abs = function() {
44656 return (this._s < 0) ? this.negate() : this;
44657 };
44658
44659 /*
44660 Function: subtract
44661 Subtract two <BigIntegers>.
44662
44663 Parameters:
44664
44665 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44666
44667 Returns:
44668
44669 The *n* subtracted from *this*.
44670
44671 See Also:
44672
44673 <add>, <multiply>, <quotient>, <prev>
44674 */
44675 BigInteger.prototype.subtract = function(n) {
44676 if (this._s === 0) {
44677 return BigInteger(n).negate();
44678 }
44679
44680 n = BigInteger(n);
44681 if (n._s === 0) {
44682 return this;
44683 }
44684 if (this._s !== n._s) {
44685 n = n.negate();
44686 return this.add(n);
44687 }
44688
44689 var m = this;
44690 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44691 if (this._s < 0) {
44692 m = new BigInteger(n._d, 1, CONSTRUCT);
44693 n = new BigInteger(this._d, 1, CONSTRUCT);
44694 }
44695
44696 // Both are positive => a - b
44697 var sign = m.compareAbs(n);
44698 if (sign === 0) {
44699 return ZERO;
44700 }
44701 else if (sign < 0) {
44702 // swap m and n
44703 var t = n;
44704 n = m;
44705 m = t;
44706 }
44707
44708 // a > b
44709 var a = m._d;
44710 var b = n._d;
44711 var al = a.length;
44712 var bl = b.length;
44713 var diff = new Array(al); // al >= bl since a > b
44714 var borrow = 0;
44715 var i;
44716 var digit;
44717
44718 for (i = 0; i < bl; i++) {
44719 digit = a[i] - borrow - b[i];
44720 if (digit < 0) {
44721 digit += BigInteger_base;
44722 borrow = 1;
44723 }
44724 else {
44725 borrow = 0;
44726 }
44727 diff[i] = digit;
44728 }
44729 for (i = bl; i < al; i++) {
44730 digit = a[i] - borrow;
44731 if (digit < 0) {
44732 digit += BigInteger_base;
44733 }
44734 else {
44735 diff[i++] = digit;
44736 break;
44737 }
44738 diff[i] = digit;
44739 }
44740 for ( ; i < al; i++) {
44741 diff[i] = a[i];
44742 }
44743
44744 return new BigInteger(diff, sign, CONSTRUCT);
44745 };
44746
44747 (function() {
44748 function addOne(n, sign) {
44749 var a = n._d;
44750 var sum = a.slice();
44751 var carry = true;
44752 var i = 0;
44753
44754 while (true) {
44755 var digit = (a[i] || 0) + 1;
44756 sum[i] = digit % BigInteger_base;
44757 if (digit <= BigInteger_base - 1) {
44758 break;
44759 }
44760 ++i;
44761 }
44762
44763 return new BigInteger(sum, sign, CONSTRUCT);
44764 }
44765
44766 function subtractOne(n, sign) {
44767 var a = n._d;
44768 var sum = a.slice();
44769 var borrow = true;
44770 var i = 0;
44771
44772 while (true) {
44773 var digit = (a[i] || 0) - 1;
44774 if (digit < 0) {
44775 sum[i] = digit + BigInteger_base;
44776 }
44777 else {
44778 sum[i] = digit;
44779 break;
44780 }
44781 ++i;
44782 }
44783
44784 return new BigInteger(sum, sign, CONSTRUCT);
44785 }
44786
44787 /*
44788 Function: next
44789 Get the next <BigInteger> (add one).
44790
44791 Returns:
44792
44793 *this* + 1.
44794
44795 See Also:
44796
44797 <add>, <prev>
44798 */
44799 BigInteger.prototype.next = function() {
44800 switch (this._s) {
44801 case 0:
44802 return ONE;
44803 case -1:
44804 return subtractOne(this, -1);
44805 // case 1:
44806 default:
44807 return addOne(this, 1);
44808 }
44809 };
44810
44811 /*
44812 Function: prev
44813 Get the previous <BigInteger> (subtract one).
44814
44815 Returns:
44816
44817 *this* - 1.
44818
44819 See Also:
44820
44821 <next>, <subtract>
44822 */
44823 BigInteger.prototype.prev = function() {
44824 switch (this._s) {
44825 case 0:
44826 return M_ONE;
44827 case -1:
44828 return addOne(this, -1);
44829 // case 1:
44830 default:
44831 return subtractOne(this, 1);
44832 }
44833 };
44834 })();
44835
44836 /*
44837 Function: compareAbs
44838 Compare the absolute value of two <BigIntegers>.
44839
44840 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44841
44842 Parameters:
44843
44844 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44845
44846 Returns:
44847
44848 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44849
44850 See Also:
44851
44852 <compare>, <abs>
44853 */
44854 BigInteger.prototype.compareAbs = function(n) {
44855 if (this === n) {
44856 return 0;
44857 }
44858
44859 if (!(n instanceof BigInteger)) {
44860 if (!isFinite(n)) {
44861 return(isNaN(n) ? n : -1);
44862 }
44863 n = BigInteger(n);
44864 }
44865
44866 if (this._s === 0) {
44867 return (n._s !== 0) ? -1 : 0;
44868 }
44869 if (n._s === 0) {
44870 return 1;
44871 }
44872
44873 var l = this._d.length;
44874 var nl = n._d.length;
44875 if (l < nl) {
44876 return -1;
44877 }
44878 else if (l > nl) {
44879 return 1;
44880 }
44881
44882 var a = this._d;
44883 var b = n._d;
44884 for (var i = l-1; i >= 0; i--) {
44885 if (a[i] !== b[i]) {
44886 return a[i] < b[i] ? -1 : 1;
44887 }
44888 }
44889
44890 return 0;
44891 };
44892
44893 /*
44894 Function: compare
44895 Compare two <BigIntegers>.
44896
44897 Parameters:
44898
44899 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44900
44901 Returns:
44902
44903 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44904
44905 See Also:
44906
44907 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44908 */
44909 BigInteger.prototype.compare = function(n) {
44910 if (this === n) {
44911 return 0;
44912 }
44913
44914 n = BigInteger(n);
44915
44916 if (this._s === 0) {
44917 return -n._s;
44918 }
44919
44920 if (this._s === n._s) { // both positive or both negative
44921 var cmp = this.compareAbs(n);
44922 return cmp * this._s;
44923 }
44924 else {
44925 return this._s;
44926 }
44927 };
44928
44929 /*
44930 Function: isUnit
44931 Return true iff *this* is either 1 or -1.
44932
44933 Returns:
44934
44935 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44936
44937 See Also:
44938
44939 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44940 <BigInteger.ONE>, <BigInteger.M_ONE>
44941 */
44942 BigInteger.prototype.isUnit = function() {
44943 return this === ONE ||
44944 this === M_ONE ||
44945 (this._d.length === 1 && this._d[0] === 1);
44946 };
44947
44948 /*
44949 Function: multiply
44950 Multiply two <BigIntegers>.
44951
44952 Parameters:
44953
44954 n - The number to multiply *this* by. Will be converted to a
44955 <BigInteger>.
44956
44957 Returns:
44958
44959 The numbers multiplied together.
44960
44961 See Also:
44962
44963 <add>, <subtract>, <quotient>, <square>
44964 */
44965 BigInteger.prototype.multiply = function(n) {
44966 // TODO: Consider adding Karatsuba multiplication for large numbers
44967 if (this._s === 0) {
44968 return ZERO;
44969 }
44970
44971 n = BigInteger(n);
44972 if (n._s === 0) {
44973 return ZERO;
44974 }
44975 if (this.isUnit()) {
44976 if (this._s < 0) {
44977 return n.negate();
44978 }
44979 return n;
44980 }
44981 if (n.isUnit()) {
44982 if (n._s < 0) {
44983 return this.negate();
44984 }
44985 return this;
44986 }
44987 if (this === n) {
44988 return this.square();
44989 }
44990
44991 var r = (this._d.length >= n._d.length);
44992 var a = (r ? this : n)._d; // a will be longer than b
44993 var b = (r ? n : this)._d;
44994 var al = a.length;
44995 var bl = b.length;
44996
44997 var pl = al + bl;
44998 var partial = new Array(pl);
44999 var i;
45000 for (i = 0; i < pl; i++) {
45001 partial[i] = 0;
45002 }
45003
45004 for (i = 0; i < bl; i++) {
45005 var carry = 0;
45006 var bi = b[i];
45007 var jlimit = al + i;
45008 var digit;
45009 for (var j = i; j < jlimit; j++) {
45010 digit = partial[j] + bi * a[j - i] + carry;
45011 carry = (digit / BigInteger_base) | 0;
45012 partial[j] = (digit % BigInteger_base) | 0;
45013 }
45014 if (carry) {
45015 digit = partial[j] + carry;
45016 carry = (digit / BigInteger_base) | 0;
45017 partial[j] = digit % BigInteger_base;
45018 }
45019 }
45020 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
45021 };
45022
45023 // Multiply a BigInteger by a single-digit native number
45024 // Assumes that this and n are >= 0
45025 // This is not really intended to be used outside the library itself
45026 BigInteger.prototype.multiplySingleDigit = function(n) {
45027 if (n === 0 || this._s === 0) {
45028 return ZERO;
45029 }
45030 if (n === 1) {
45031 return this;
45032 }
45033
45034 var digit;
45035 if (this._d.length === 1) {
45036 digit = this._d[0] * n;
45037 if (digit >= BigInteger_base) {
45038 return new BigInteger([(digit % BigInteger_base)|0,
45039 (digit / BigInteger_base)|0], 1, CONSTRUCT);
45040 }
45041 return new BigInteger([digit], 1, CONSTRUCT);
45042 }
45043
45044 if (n === 2) {
45045 return this.add(this);
45046 }
45047 if (this.isUnit()) {
45048 return new BigInteger([n], 1, CONSTRUCT);
45049 }
45050
45051 var a = this._d;
45052 var al = a.length;
45053
45054 var pl = al + 1;
45055 var partial = new Array(pl);
45056 for (var i = 0; i < pl; i++) {
45057 partial[i] = 0;
45058 }
45059
45060 var carry = 0;
45061 for (var j = 0; j < al; j++) {
45062 digit = n * a[j] + carry;
45063 carry = (digit / BigInteger_base) | 0;
45064 partial[j] = (digit % BigInteger_base) | 0;
45065 }
45066 if (carry) {
45067 partial[j] = carry;
45068 }
45069
45070 return new BigInteger(partial, 1, CONSTRUCT);
45071 };
45072
45073 /*
45074 Function: square
45075 Multiply a <BigInteger> by itself.
45076
45077 This is slightly faster than regular multiplication, since it removes the
45078 duplicated multiplcations.
45079
45080 Returns:
45081
45082 > this.multiply(this)
45083
45084 See Also:
45085 <multiply>
45086 */
45087 BigInteger.prototype.square = function() {
45088 // Normally, squaring a 10-digit number would take 100 multiplications.
45089 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
45090 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
45091 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
45092
45093 if (this._s === 0) {
45094 return ZERO;
45095 }
45096 if (this.isUnit()) {
45097 return ONE;
45098 }
45099
45100 var digits = this._d;
45101 var length = digits.length;
45102 var imult1 = new Array(length + length + 1);
45103 var product, carry, k;
45104 var i;
45105
45106 // Calculate diagonal
45107 for (i = 0; i < length; i++) {
45108 k = i * 2;
45109 product = digits[i] * digits[i];
45110 carry = (product / BigInteger_base) | 0;
45111 imult1[k] = product % BigInteger_base;
45112 imult1[k + 1] = carry;
45113 }
45114
45115 // Calculate repeating part
45116 for (i = 0; i < length; i++) {
45117 carry = 0;
45118 k = i * 2 + 1;
45119 for (var j = i + 1; j < length; j++, k++) {
45120 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
45121 carry = (product / BigInteger_base) | 0;
45122 imult1[k] = product % BigInteger_base;
45123 }
45124 k = length + i;
45125 var digit = carry + imult1[k];
45126 carry = (digit / BigInteger_base) | 0;
45127 imult1[k] = digit % BigInteger_base;
45128 imult1[k + 1] += carry;
45129 }
45130
45131 return new BigInteger(imult1, 1, CONSTRUCT);
45132 };
45133
45134 /*
45135 Function: quotient
45136 Divide two <BigIntegers> and truncate towards zero.
45137
45138 <quotient> throws an exception if *n* is zero.
45139
45140 Parameters:
45141
45142 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45143
45144 Returns:
45145
45146 The *this* / *n*, truncated to an integer.
45147
45148 See Also:
45149
45150 <add>, <subtract>, <multiply>, <divRem>, <remainder>
45151 */
45152 BigInteger.prototype.quotient = function(n) {
45153 return this.divRem(n)[0];
45154 };
45155
45156 /*
45157 Function: divide
45158 Deprecated synonym for <quotient>.
45159 */
45160 BigInteger.prototype.divide = BigInteger.prototype.quotient;
45161
45162 /*
45163 Function: remainder
45164 Calculate the remainder of two <BigIntegers>.
45165
45166 <remainder> throws an exception if *n* is zero.
45167
45168 Parameters:
45169
45170 n - The remainder after *this* is divided *this* by *n*. Will be
45171 converted to a <BigInteger>.
45172
45173 Returns:
45174
45175 *this* % *n*.
45176
45177 See Also:
45178
45179 <divRem>, <quotient>
45180 */
45181 BigInteger.prototype.remainder = function(n) {
45182 return this.divRem(n)[1];
45183 };
45184
45185 /*
45186 Function: divRem
45187 Calculate the integer quotient and remainder of two <BigIntegers>.
45188
45189 <divRem> throws an exception if *n* is zero.
45190
45191 Parameters:
45192
45193 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45194
45195 Returns:
45196
45197 A two-element array containing the quotient and the remainder.
45198
45199 > a.divRem(b)
45200
45201 is exactly equivalent to
45202
45203 > [a.quotient(b), a.remainder(b)]
45204
45205 except it is faster, because they are calculated at the same time.
45206
45207 See Also:
45208
45209 <quotient>, <remainder>
45210 */
45211 BigInteger.prototype.divRem = function(n) {
45212 n = BigInteger(n);
45213 if (n._s === 0) {
45214 throw new Error("Divide by zero");
45215 }
45216 if (this._s === 0) {
45217 return [ZERO, ZERO];
45218 }
45219 if (n._d.length === 1) {
45220 return this.divRemSmall(n._s * n._d[0]);
45221 }
45222
45223 // Test for easy cases -- |n1| <= |n2|
45224 switch (this.compareAbs(n)) {
45225 case 0: // n1 == n2
45226 return [this._s === n._s ? ONE : M_ONE, ZERO];
45227 case -1: // |n1| < |n2|
45228 return [ZERO, this];
45229 }
45230
45231 var sign = this._s * n._s;
45232 var a = n.abs();
45233 var b_digits = this._d;
45234 var b_index = b_digits.length;
45235 var digits = n._d.length;
45236 var quot = [];
45237 var guess;
45238
45239 var part = new BigInteger([], 0, CONSTRUCT);
45240
45241 while (b_index) {
45242 part._d.unshift(b_digits[--b_index]);
45243 part = new BigInteger(part._d, 1, CONSTRUCT);
45244
45245 if (part.compareAbs(n) < 0) {
45246 quot.push(0);
45247 continue;
45248 }
45249 if (part._s === 0) {
45250 guess = 0;
45251 }
45252 else {
45253 var xlen = part._d.length, ylen = a._d.length;
45254 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45255 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45256 if (part._d.length > a._d.length) {
45257 // The length of part._d can either match a._d length,
45258 // or exceed it by one.
45259 highx = (highx+1)*BigInteger_base;
45260 }
45261 guess = Math.ceil(highx/highy);
45262 }
45263 do {
45264 var check = a.multiplySingleDigit(guess);
45265 if (check.compareAbs(part) <= 0) {
45266 break;
45267 }
45268 guess--;
45269 } while (guess);
45270
45271 quot.push(guess);
45272 if (!guess) {
45273 continue;
45274 }
45275 var diff = part.subtract(check);
45276 part._d = diff._d.slice();
45277 }
45278
45279 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45280 new BigInteger(part._d, this._s, CONSTRUCT)];
45281 };
45282
45283 // Throws an exception if n is outside of (-BigInteger.base, -1] or
45284 // [1, BigInteger.base). It's not necessary to call this, since the
45285 // other division functions will call it if they are able to.
45286 BigInteger.prototype.divRemSmall = function(n) {
45287 var r;
45288 n = +n;
45289 if (n === 0) {
45290 throw new Error("Divide by zero");
45291 }
45292
45293 var n_s = n < 0 ? -1 : 1;
45294 var sign = this._s * n_s;
45295 n = Math.abs(n);
45296
45297 if (n < 1 || n >= BigInteger_base) {
45298 throw new Error("Argument out of range");
45299 }
45300
45301 if (this._s === 0) {
45302 return [ZERO, ZERO];
45303 }
45304
45305 if (n === 1 || n === -1) {
45306 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45307 }
45308
45309 // 2 <= n < BigInteger_base
45310
45311 // divide a single digit by a single digit
45312 if (this._d.length === 1) {
45313 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45314 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45315 if (sign < 0) {
45316 q = q.negate();
45317 }
45318 if (this._s < 0) {
45319 r = r.negate();
45320 }
45321 return [q, r];
45322 }
45323
45324 var digits = this._d.slice();
45325 var quot = new Array(digits.length);
45326 var part = 0;
45327 var diff = 0;
45328 var i = 0;
45329 var guess;
45330
45331 while (digits.length) {
45332 part = part * BigInteger_base + digits[digits.length - 1];
45333 if (part < n) {
45334 quot[i++] = 0;
45335 digits.pop();
45336 diff = BigInteger_base * diff + part;
45337 continue;
45338 }
45339 if (part === 0) {
45340 guess = 0;
45341 }
45342 else {
45343 guess = (part / n) | 0;
45344 }
45345
45346 var check = n * guess;
45347 diff = part - check;
45348 quot[i++] = guess;
45349 if (!guess) {
45350 digits.pop();
45351 continue;
45352 }
45353
45354 digits.pop();
45355 part = diff;
45356 }
45357
45358 r = new BigInteger([diff], 1, CONSTRUCT);
45359 if (this._s < 0) {
45360 r = r.negate();
45361 }
45362 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45363 };
45364
45365 /*
45366 Function: isEven
45367 Return true iff *this* is divisible by two.
45368
45369 Note that <BigInteger.ZERO> is even.
45370
45371 Returns:
45372
45373 true if *this* is even, false otherwise.
45374
45375 See Also:
45376
45377 <isOdd>
45378 */
45379 BigInteger.prototype.isEven = function() {
45380 var digits = this._d;
45381 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45382 };
45383
45384 /*
45385 Function: isOdd
45386 Return true iff *this* is not divisible by two.
45387
45388 Returns:
45389
45390 true if *this* is odd, false otherwise.
45391
45392 See Also:
45393
45394 <isEven>
45395 */
45396 BigInteger.prototype.isOdd = function() {
45397 return !this.isEven();
45398 };
45399
45400 /*
45401 Function: sign
45402 Get the sign of a <BigInteger>.
45403
45404 Returns:
45405
45406 * -1 if *this* < 0
45407 * 0 if *this* == 0
45408 * +1 if *this* > 0
45409
45410 See Also:
45411
45412 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45413 */
45414 BigInteger.prototype.sign = function() {
45415 return this._s;
45416 };
45417
45418 /*
45419 Function: isPositive
45420 Return true iff *this* > 0.
45421
45422 Returns:
45423
45424 true if *this*.compare(<BigInteger.ZERO>) == 1.
45425
45426 See Also:
45427
45428 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45429 */
45430 BigInteger.prototype.isPositive = function() {
45431 return this._s > 0;
45432 };
45433
45434 /*
45435 Function: isNegative
45436 Return true iff *this* < 0.
45437
45438 Returns:
45439
45440 true if *this*.compare(<BigInteger.ZERO>) == -1.
45441
45442 See Also:
45443
45444 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45445 */
45446 BigInteger.prototype.isNegative = function() {
45447 return this._s < 0;
45448 };
45449
45450 /*
45451 Function: isZero
45452 Return true iff *this* == 0.
45453
45454 Returns:
45455
45456 true if *this*.compare(<BigInteger.ZERO>) == 0.
45457
45458 See Also:
45459
45460 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45461 */
45462 BigInteger.prototype.isZero = function() {
45463 return this._s === 0;
45464 };
45465
45466 /*
45467 Function: exp10
45468 Multiply a <BigInteger> by a power of 10.
45469
45470 This is equivalent to, but faster than
45471
45472 > if (n >= 0) {
45473 > return this.multiply(BigInteger("1e" + n));
45474 > }
45475 > else { // n <= 0
45476 > return this.quotient(BigInteger("1e" + -n));
45477 > }
45478
45479 Parameters:
45480
45481 n - The power of 10 to multiply *this* by. *n* is converted to a
45482 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45483 (0x7FFFFFFF), or an exception will be thrown.
45484
45485 Returns:
45486
45487 *this* * (10 ** *n*), truncated to an integer if necessary.
45488
45489 See Also:
45490
45491 <pow>, <multiply>
45492 */
45493 BigInteger.prototype.exp10 = function(n) {
45494 n = +n;
45495 if (n === 0) {
45496 return this;
45497 }
45498 if (Math.abs(n) > Number(MAX_EXP)) {
45499 throw new Error("exponent too large in BigInteger.exp10");
45500 }
45501 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45502 if (this._s === 0) {
45503 return ZERO;
45504 }
45505 if (n > 0) {
45506 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45507
45508 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45509 k._d.unshift(0);
45510 }
45511 if (n == 0)
45512 return k;
45513 k._s = 1;
45514 k = k.multiplySingleDigit(Math.pow(10, n));
45515 return (this._s < 0 ? k.negate() : k);
45516 } else if (-n >= this._d.length*BigInteger_base_log10) {
45517 return ZERO;
45518 } else {
45519 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45520
45521 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45522 k._d.shift();
45523 }
45524 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45525 }
45526 };
45527
45528 /*
45529 Function: pow
45530 Raise a <BigInteger> to a power.
45531
45532 In this implementation, 0**0 is 1.
45533
45534 Parameters:
45535
45536 n - The exponent to raise *this* by. *n* must be no greater than
45537 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45538
45539 Returns:
45540
45541 *this* raised to the *nth* power.
45542
45543 See Also:
45544
45545 <modPow>
45546 */
45547 BigInteger.prototype.pow = function(n) {
45548 if (this.isUnit()) {
45549 if (this._s > 0) {
45550 return this;
45551 }
45552 else {
45553 return BigInteger(n).isOdd() ? this : this.negate();
45554 }
45555 }
45556
45557 n = BigInteger(n);
45558 if (n._s === 0) {
45559 return ONE;
45560 }
45561 else if (n._s < 0) {
45562 if (this._s === 0) {
45563 throw new Error("Divide by zero");
45564 }
45565 else {
45566 return ZERO;
45567 }
45568 }
45569 if (this._s === 0) {
45570 return ZERO;
45571 }
45572 if (n.isUnit()) {
45573 return this;
45574 }
45575
45576 if (n.compareAbs(MAX_EXP) > 0) {
45577 throw new Error("exponent too large in BigInteger.pow");
45578 }
45579 var x = this;
45580 var aux = ONE;
45581 var two = BigInteger.small[2];
45582
45583 while (n.isPositive()) {
45584 if (n.isOdd()) {
45585 aux = aux.multiply(x);
45586 if (n.isUnit()) {
45587 return aux;
45588 }
45589 }
45590 x = x.square();
45591 n = n.quotient(two);
45592 }
45593
45594 return aux;
45595 };
45596
45597 /*
45598 Function: modPow
45599 Raise a <BigInteger> to a power (mod m).
45600
45601 Because it is reduced by a modulus, <modPow> is not limited by
45602 <BigInteger.MAX_EXP> like <pow>.
45603
45604 Parameters:
45605
45606 exponent - The exponent to raise *this* by. Must be positive.
45607 modulus - The modulus.
45608
45609 Returns:
45610
45611 *this* ^ *exponent* (mod *modulus*).
45612
45613 See Also:
45614
45615 <pow>, <mod>
45616 */
45617 BigInteger.prototype.modPow = function(exponent, modulus) {
45618 var result = ONE;
45619 var base = this;
45620
45621 while (exponent.isPositive()) {
45622 if (exponent.isOdd()) {
45623 result = result.multiply(base).remainder(modulus);
45624 }
45625
45626 exponent = exponent.quotient(BigInteger.small[2]);
45627 if (exponent.isPositive()) {
45628 base = base.square().remainder(modulus);
45629 }
45630 }
45631
45632 return result;
45633 };
45634
45635 /*
45636 Function: log
45637 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45638
45639 This is equivalent to
45640
45641 > Math.log(this.toJSValue())
45642
45643 but handles values outside of the native number range.
45644
45645 Returns:
45646
45647 log( *this* )
45648
45649 See Also:
45650
45651 <toJSValue>
45652 */
45653 BigInteger.prototype.log = function() {
45654 switch (this._s) {
45655 case 0: return -Infinity;
45656 case -1: return NaN;
45657 default: // Fall through.
45658 }
45659
45660 var l = this._d.length;
45661
45662 if (l*BigInteger_base_log10 < 30) {
45663 return Math.log(this.valueOf());
45664 }
45665
45666 var N = Math.ceil(30/BigInteger_base_log10);
45667 var firstNdigits = this._d.slice(l - N);
45668 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45669 };
45670
45671 /*
45672 Function: valueOf
45673 Convert a <BigInteger> to a native JavaScript integer.
45674
45675 This is called automatically by JavaScipt to convert a <BigInteger> to a
45676 native value.
45677
45678 Returns:
45679
45680 > parseInt(this.toString(), 10)
45681
45682 See Also:
45683
45684 <toString>, <toJSValue>
45685 */
45686 BigInteger.prototype.valueOf = function() {
45687 return parseInt(this.toString(), 10);
45688 };
45689
45690 /*
45691 Function: toJSValue
45692 Convert a <BigInteger> to a native JavaScript integer.
45693
45694 This is the same as valueOf, but more explicitly named.
45695
45696 Returns:
45697
45698 > parseInt(this.toString(), 10)
45699
45700 See Also:
45701
45702 <toString>, <valueOf>
45703 */
45704 BigInteger.prototype.toJSValue = function() {
45705 return parseInt(this.toString(), 10);
45706 };
45707
45708 var MAX_EXP = BigInteger(0x7FFFFFFF);
45709 // Constant: MAX_EXP
45710 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45711 BigInteger.MAX_EXP = MAX_EXP;
45712
45713 (function() {
45714 function makeUnary(fn) {
45715 return function(a) {
45716 return fn.call(BigInteger(a));
45717 };
45718 }
45719
45720 function makeBinary(fn) {
45721 return function(a, b) {
45722 return fn.call(BigInteger(a), BigInteger(b));
45723 };
45724 }
45725
45726 function makeTrinary(fn) {
45727 return function(a, b, c) {
45728 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45729 };
45730 }
45731
45732 (function() {
45733 var i, fn;
45734 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45735 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45736 var trinary = ["modPow"];
45737
45738 for (i = 0; i < unary.length; i++) {
45739 fn = unary[i];
45740 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45741 }
45742
45743 for (i = 0; i < binary.length; i++) {
45744 fn = binary[i];
45745 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45746 }
45747
45748 for (i = 0; i < trinary.length; i++) {
45749 fn = trinary[i];
45750 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45751 }
45752
45753 BigInteger.exp10 = function(x, n) {
45754 return BigInteger(x).exp10(n);
45755 };
45756 })();
45757 })();
45758
45759 exports.BigInteger = BigInteger;
45760 })(typeof exports !== 'undefined' ? exports : this);
45761 </script>
45762 <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){
45763 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;
45764
45765 },{}],2:[function(require,module,exports){
45766 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;
45767
45768 },{"./scoring":6}],3:[function(require,module,exports){
45769 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(","),
45770 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(","),
45771 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(","),
45772 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(","),
45773 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;
45774
45775 },{}],4:[function(require,module,exports){
45776 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;
45777
45778 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45779 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;
45780
45781 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45782 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;
45783
45784 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
45785 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;
45786
45787 },{}]},{},[4])(4)
45788 });
45789
45790 </script>
45791 <script>/*
45792 * Detects entropy from a string.
45793 *
45794 * Formats include:
45795 * binary [0-1]
45796 * base 6 [0-5]
45797 * dice 6 [1-6]
45798 * decimal [0-9]
45799 * hexadecimal [0-9A-F]
45800 * card [A2-9TJQK][CDHS]
45801 *
45802 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45803 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45804 * entropy.
45805 */
45806
45807 window.Entropy = new (function() {
45808
45809 var TWO = new BigInteger(2);
45810
45811 // matchers returns an array of the matched events for each type of entropy.
45812 // eg
45813 // matchers.binary("010") returns ["0", "1", "0"]
45814 // matchers.binary("a10") returns ["1", "0"]
45815 // matchers.hex("a10") returns ["a", "1", "0"]
45816 var matchers = {
45817 binary: function(str) {
45818 return str.match(/[0-1]/gi) || [];
45819 },
45820 base6: function(str) {
45821 return str.match(/[0-5]/gi) || [];
45822 },
45823 dice: function(str) {
45824 return str.match(/[1-6]/gi) || []; // ie dice numbers
45825 },
45826 base10: function(str) {
45827 return str.match(/[0-9]/gi) || [];
45828 },
45829 hex: function(str) {
45830 return str.match(/[0-9A-F]/gi) || [];
45831 },
45832 card: function(str) {
45833 // Format is NumberSuit, eg
45834 // AH ace of hearts
45835 // 8C eight of clubs
45836 // TD ten of diamonds
45837 // JS jack of spades
45838 // QH queen of hearts
45839 // KC king of clubs
45840 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45841 }
45842 }
45843
45844 // Convert array of cards from ["ac", "4d", "ks"]
45845 // to numbers between 0 and 51 [0, 16, 51]
45846 function convertCardsToInts(cards) {
45847 var ints = [];
45848 var values = "a23456789tjqk";
45849 var suits = "cdhs";
45850 for (var i=0; i<cards.length; i++) {
45851 var card = cards[i].toLowerCase();
45852 var value = card[0];
45853 var suit = card[1];
45854 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45855 ints.push(asInt);
45856 }
45857 return ints;
45858 }
45859
45860 this.fromString = function(rawEntropyStr) {
45861 // Find type of entropy being used (binary, hex, dice etc)
45862 var base = getBase(rawEntropyStr);
45863 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45864 // This is done by changing all 6s to 0s
45865 if (base.str == "dice") {
45866 var newParts = [];
45867 var newInts = [];
45868 for (var i=0; i<base.parts.length; i++) {
45869 var c = base.parts[i];
45870 if ("12345".indexOf(c) > -1) {
45871 newParts[i] = base.parts[i];
45872 newInts[i] = base.ints[i];
45873 }
45874 else {
45875 newParts[i] = "0";
45876 newInts[i] = 0;
45877 }
45878 }
45879 base.str = "base 6 (dice)";
45880 base.ints = newInts;
45881 base.parts = newParts;
45882 base.matcher = matchers.base6;
45883 }
45884 // Detect empty entropy
45885 if (base.parts.length == 0) {
45886 return {
45887 binaryStr: "",
45888 cleanStr: "",
45889 cleanHtml: "",
45890 base: base,
45891 };
45892 }
45893 // Convert base.ints to BigInteger.
45894 // Due to using unusual bases, eg cards of base52, this is not as simple as
45895 // using BigInteger.parse()
45896 var entropyInt = BigInteger.ZERO;
45897 for (var i=base.ints.length-1; i>=0; i--) {
45898 var thisInt = BigInteger.parse(base.ints[i]);
45899 var power = (base.ints.length - 1) - i;
45900 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45901 entropyInt = entropyInt.add(additionalEntropy);
45902 }
45903 // Convert entropy to binary
45904 var entropyBin = entropyInt.toString(2);
45905 // If the first integer is small, it must be padded with zeros.
45906 // Otherwise the chance of the first bit being 1 is 100%, which is
45907 // obviously incorrect.
45908 // This is not perfect for non-2^n bases.
45909 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45910 while (entropyBin.length < expectedBits) {
45911 entropyBin = "0" + entropyBin;
45912 }
45913 // Calculate the number of bits per event
45914 var bitsPerEvent = Math.log2(base.asInt);
45915 // Cards binary must be handled differently, since they're not replaced
45916 if (base.asInt == 52) {
45917 var cardEntropy = processCardEntropy(base.parts);
45918 entropyBin = cardEntropy.binaryStr;
45919 bitsPerEvent = cardEntropy.bitsPerEvent;
45920 }
45921 // Supply a 'filtered' entropy string for display purposes
45922 var entropyClean = base.parts.join("");
45923 var entropyHtml = base.parts.join("");
45924 if (base.asInt == 52) {
45925 entropyClean = base.parts.join(" ").toUpperCase();
45926 entropyClean = entropyClean.replace(/C/g, "\u2663");
45927 entropyClean = entropyClean.replace(/D/g, "\u2666");
45928 entropyClean = entropyClean.replace(/H/g, "\u2665");
45929 entropyClean = entropyClean.replace(/S/g, "\u2660");
45930 entropyHtml = base.parts.join(" ").toUpperCase();
45931 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45932 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45933 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45934 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45935 }
45936 // Return the result
45937 var e = {
45938 binaryStr: entropyBin,
45939 cleanStr: entropyClean,
45940 cleanHtml: entropyHtml,
45941 bitsPerEvent: bitsPerEvent,
45942 base: base,
45943 }
45944 return e;
45945 }
45946
45947 function getSortedDeck() {
45948 var s = [];
45949 var suits = "CDHS";
45950 var values = "A23456789TJQK";
45951 for (var i=0; i<suits.length; i++) {
45952 for (var j=0; j<values.length; j++) {
45953 s.push(values[j]+suits[i]);
45954 }
45955 }
45956 return s;
45957 }
45958
45959 function getBase(str) {
45960 // Need to get the lowest base for the supplied entropy.
45961 // This prevents interpreting, say, dice rolls as hexadecimal.
45962 var binaryMatches = matchers.binary(str);
45963 var hexMatches = matchers.hex(str);
45964 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45965 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45966 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45967 return {
45968 ints: ints,
45969 parts: binaryMatches,
45970 matcher: matchers.binary,
45971 asInt: 2,
45972 str: "binary",
45973 }
45974 }
45975 var cardMatches = matchers.card(str);
45976 if (cardMatches.length >= hexMatches.length / 2) {
45977 var ints = convertCardsToInts(cardMatches);
45978 return {
45979 ints: ints,
45980 parts: cardMatches,
45981 matcher: matchers.card,
45982 asInt: 52,
45983 str: "card",
45984 }
45985 }
45986 var diceMatches = matchers.dice(str);
45987 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45988 var ints = diceMatches.map(function(i) { return parseInt(i) });
45989 return {
45990 ints: ints,
45991 parts: diceMatches,
45992 matcher: matchers.dice,
45993 asInt: 6,
45994 str: "dice",
45995 }
45996 }
45997 var base6Matches = matchers.base6(str);
45998 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45999 var ints = base6Matches.map(function(i) { return parseInt(i) });
46000 return {
46001 ints: ints,
46002 parts: base6Matches,
46003 matcher: matchers.base6,
46004 asInt: 6,
46005 str: "base 6",
46006 }
46007 }
46008 var base10Matches = matchers.base10(str);
46009 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
46010 var ints = base10Matches.map(function(i) { return parseInt(i) });
46011 return {
46012 ints: ints,
46013 parts: base10Matches,
46014 matcher: matchers.base10,
46015 asInt: 10,
46016 str: "base 10",
46017 }
46018 }
46019 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
46020 return {
46021 ints: ints,
46022 parts: hexMatches,
46023 matcher: matchers.hex,
46024 asInt: 16,
46025 str: "hexadecimal",
46026 }
46027 }
46028
46029 // Assume cards are NOT replaced.
46030 // Additional entropy decreases as more cards are used. This means
46031 // total possible entropy is measured using n!, not base^n.
46032 // eg the second last card can be only one of two, not one of fifty two
46033 // so the added entropy for that card is only one bit at most
46034 function processCardEntropy(cards) {
46035 // Track how many instances of each card have been used, and thus
46036 // how many decks are in use.
46037 var cardCounts = {};
46038 var numberOfDecks = 0;
46039 // Work out number of decks by max(duplicates)
46040 for (var i=0; i<cards.length; i++) {
46041 // Get the card that was drawn
46042 var cardLower = cards[i];
46043 var card = cardLower.toUpperCase();
46044 // Initialize the count for this card if needed
46045 if (!(card in cardCounts)) {
46046 cardCounts[card] = 0;
46047 }
46048 cardCounts[card] += 1;
46049 // See if this is max(duplicates)
46050 if (cardCounts[card] > numberOfDecks) {
46051 numberOfDecks = cardCounts[card];
46052 }
46053 }
46054 // Work out the total number of bits for this many decks
46055 // See http://crypto.stackexchange.com/q/41886
46056 var gainedBits = 0;
46057 // Equivalent of Math.log2(factorial(52*numberOfDecks))
46058 // which becomes infinity for numberOfDecks > 4
46059 for (var i=1; i<=52*numberOfDecks; i++) {
46060 gainedBits = gainedBits + Math.log2(i);
46061 }
46062 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
46063 var maxBits = gainedBits - lostBits;
46064 // Convert the drawn cards to a binary representation.
46065 // The exact technique for doing this is unclear.
46066 // See
46067 // http://crypto.stackexchange.com/a/41896
46068 // "I even doubt that this is well defined (only the average entropy
46069 // is, I believe)."
46070 // See
46071 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
46072 // "The binary representation can be the first log(permutations,2) bits
46073 // of the sha-2 hash of the normalized deck string."
46074 //
46075 // In this specific implementation, the first N bits of the hash of the
46076 // normalized cards string is being used. Uppercase, no spaces; eg
46077 // sha256("AH8DQSTC2H")
46078 var totalCards = numberOfDecks * 52;
46079 var percentUsed = cards.length / totalCards;
46080 // Calculate the average number of bits of entropy for the number of
46081 // cards drawn.
46082 var numberOfBits = Math.floor(maxBits * percentUsed);
46083 // Create a normalized string of the selected cards
46084 var normalizedCards = cards.join("").toUpperCase();
46085 // Convert to binary using the SHA256 hash of the normalized cards.
46086 // If the number of bits is more than 256, multiple hashes
46087 // are used until the required number of bits is reached.
46088 var entropyBin = "";
46089 var iterations = 0;
46090 while (entropyBin.length < numberOfBits) {
46091 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
46092 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
46093 for (var i=0; i<hashHex.length; i++) {
46094 var decimal = parseInt(hashHex[i], 16);
46095 var binary = decimal.toString(2);
46096 while (binary.length < 4) {
46097 binary = "0" + binary;
46098 }
46099 entropyBin = entropyBin + binary;
46100 }
46101 iterations = iterations + 1;
46102 }
46103 // Truncate to the appropriate number of bits.
46104 entropyBin = entropyBin.substring(0, numberOfBits);
46105 // Get the number of bits per event
46106 bitsPerEvent = maxBits / totalCards;
46107 return {
46108 binaryStr: entropyBin,
46109 bitsPerEvent: bitsPerEvent,
46110 }
46111 }
46112
46113 // Polyfill for Math.log2
46114 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
46115 Math.log2 = Math.log2 || function(x) {
46116 // The polyfill isn't good enough because of the poor accuracy of
46117 // Math.LOG2E
46118 // log2(8) gave 2.9999999999999996 which when floored causes issues.
46119 // So instead use the BigInteger library to get it right.
46120 return BigInteger.log(x) / BigInteger.log(2);
46121 };
46122
46123 // Depends on BigInteger
46124 function factorial(n) {
46125 if (n == 0) {
46126 return 1;
46127 }
46128 f = BigInteger.ONE;
46129 for (var i=1; i<=n; i++) {
46130 f = f.multiply(new BigInteger(i));
46131 }
46132 return f;
46133 }
46134
46135 })();
46136 </script>
46137 <script>(function() {
46138
46139 // mnemonics is populated as required by getLanguage
46140 var mnemonics = { "english": new Mnemonic("english") };
46141 var mnemonic = mnemonics["english"];
46142 var seed = null;
46143 var bip32RootKey = null;
46144 var bip32ExtendedKey = null;
46145 var network = bitcoinjs.bitcoin.networks.bitcoin;
46146 var addressRowTemplate = $("#address-row-template");
46147
46148 var showIndex = true;
46149 var showAddress = true;
46150 var showPubKey = true;
46151 var showPrivKey = true;
46152 var showQr = false;
46153 var litecoinUseLtub = false;
46154
46155 var entropyChangeTimeoutEvent = null;
46156 var phraseChangeTimeoutEvent = null;
46157 var rootKeyChangedTimeoutEvent = null;
46158
46159 var generationProcesses = [];
46160
46161 var DOM = {};
46162 DOM.network = $(".network");
46163 DOM.bip32Client = $("#bip32-client");
46164 DOM.phraseNetwork = $("#network-phrase");
46165 DOM.useEntropy = $(".use-entropy");
46166 DOM.entropyContainer = $(".entropy-container");
46167 DOM.entropy = $(".entropy");
46168 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
46169 DOM.entropyType = DOM.entropyContainer.find(".type");
46170 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
46171 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
46172 DOM.entropyBits = DOM.entropyContainer.find(".bits");
46173 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
46174 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
46175 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
46176 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
46177 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
46178 DOM.phrase = $(".phrase");
46179 DOM.passphrase = $(".passphrase");
46180 DOM.generateContainer = $(".generate-container");
46181 DOM.generate = $(".generate");
46182 DOM.seed = $(".seed");
46183 DOM.rootKey = $(".root-key");
46184 DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
46185 DOM.litecoinUseLtub = $(".litecoin-use-ltub");
46186 DOM.extendedPrivKey = $(".extended-priv-key");
46187 DOM.extendedPubKey = $(".extended-pub-key");
46188 DOM.bip32tab = $("#bip32-tab");
46189 DOM.bip44tab = $("#bip44-tab");
46190 DOM.bip49tab = $("#bip49-tab");
46191 DOM.bip32panel = $("#bip32");
46192 DOM.bip44panel = $("#bip44");
46193 DOM.bip49panel = $("#bip49");
46194 DOM.bip32path = $("#bip32-path");
46195 DOM.bip44path = $("#bip44-path");
46196 DOM.bip44purpose = $("#bip44 .purpose");
46197 DOM.bip44coin = $("#bip44 .coin");
46198 DOM.bip44account = $("#bip44 .account");
46199 DOM.bip44accountXprv = $("#bip44 .account-xprv");
46200 DOM.bip44accountXpub = $("#bip44 .account-xpub");
46201 DOM.bip44change = $("#bip44 .change");
46202 DOM.bip49unavailable = $("#bip49 .unavailable");
46203 DOM.bip49available = $("#bip49 .available");
46204 DOM.bip49path = $("#bip49-path");
46205 DOM.bip49purpose = $("#bip49 .purpose");
46206 DOM.bip49coin = $("#bip49 .coin");
46207 DOM.bip49account = $("#bip49 .account");
46208 DOM.bip49accountXprv = $("#bip49 .account-xprv");
46209 DOM.bip49accountXpub = $("#bip49 .account-xpub");
46210 DOM.bip49change = $("#bip49 .change");
46211 DOM.generatedStrength = $(".generate-container .strength");
46212 DOM.hardenedAddresses = $(".hardened-addresses");
46213 DOM.useP2wpkhNestedInP2sh = $(".p2wpkh-nested-in-p2sh");
46214 DOM.addresses = $(".addresses");
46215 DOM.rowsToAdd = $(".rows-to-add");
46216 DOM.more = $(".more");
46217 DOM.feedback = $(".feedback");
46218 DOM.tab = $(".derivation-type a");
46219 DOM.indexToggle = $(".index-toggle");
46220 DOM.addressToggle = $(".address-toggle");
46221 DOM.publicKeyToggle = $(".public-key-toggle");
46222 DOM.privateKeyToggle = $(".private-key-toggle");
46223 DOM.languages = $(".languages a");
46224 DOM.qrContainer = $(".qr-container");
46225 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
46226 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46227 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46228 DOM.showQrEls = $("[data-show-qr]");
46229
46230 function init() {
46231 // Events
46232 DOM.network.on("change", networkChanged);
46233 DOM.bip32Client.on("change", bip32ClientChanged);
46234 DOM.useEntropy.on("change", setEntropyVisibility);
46235 DOM.entropy.on("input", delayedEntropyChanged);
46236 DOM.entropyMnemonicLength.on("change", entropyChanged);
46237 DOM.phrase.on("input", delayedPhraseChanged);
46238 DOM.passphrase.on("input", delayedPhraseChanged);
46239 DOM.generate.on("click", generateClicked);
46240 DOM.more.on("click", showMore);
46241 DOM.rootKey.on("input", delayedRootKeyChanged);
46242 DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
46243 DOM.bip32path.on("input", calcForDerivationPath);
46244 DOM.bip44account.on("input", calcForDerivationPath);
46245 DOM.bip44change.on("input", calcForDerivationPath);
46246 DOM.bip49account.on("input", calcForDerivationPath);
46247 DOM.bip49change.on("input", calcForDerivationPath);
46248 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
46249 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46250 DOM.useP2wpkhNestedInP2sh.on("change", calcForDerivationPath);
46251 DOM.indexToggle.on("click", toggleIndexes);
46252 DOM.addressToggle.on("click", toggleAddresses);
46253 DOM.publicKeyToggle.on("click", togglePublicKeys);
46254 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46255 DOM.languages.on("click", languageChanged);
46256 setQrEvents(DOM.showQrEls);
46257 disableForms();
46258 hidePending();
46259 hideValidationError();
46260 populateNetworkSelect();
46261 populateClientSelect();
46262 }
46263
46264 // Event handlers
46265
46266 function networkChanged(e) {
46267 clearDerivedKeys();
46268 clearAddressesList();
46269 DOM.litecoinLtubContainer.addClass("hidden");
46270 var networkIndex = e.target.value;
46271 var network = networks[networkIndex];
46272 network.onSelect();
46273 if (network.p2wpkhNestedInP2shAvailable) {
46274 showP2wpkhNestedInP2shAvailable();
46275 }
46276 else {
46277 showP2wpkhNestedInP2shUnavailable();
46278 }
46279 if (seed != null) {
46280 phraseChanged();
46281 }
46282 else {
46283 rootKeyChanged();
46284 }
46285 }
46286
46287 function bip32ClientChanged(e) {
46288 var clientIndex = DOM.bip32Client.val();
46289 if (clientIndex == "custom") {
46290 DOM.bip32path.prop("readonly", false);
46291 }
46292 else {
46293 DOM.bip32path.prop("readonly", true);
46294 clients[clientIndex].onSelect();
46295 if (seed != null) {
46296 phraseChanged();
46297 }
46298 else {
46299 rootKeyChanged();
46300 }
46301 }
46302 }
46303
46304 function setEntropyVisibility() {
46305 if (isUsingOwnEntropy()) {
46306 DOM.entropyContainer.removeClass("hidden");
46307 DOM.generateContainer.addClass("hidden");
46308 DOM.phrase.prop("readonly", true);
46309 DOM.entropy.focus();
46310 entropyChanged();
46311 }
46312 else {
46313 DOM.entropyContainer.addClass("hidden");
46314 DOM.generateContainer.removeClass("hidden");
46315 DOM.phrase.prop("readonly", false);
46316 hidePending();
46317 }
46318 }
46319
46320 function delayedPhraseChanged() {
46321 hideValidationError();
46322 seed = null;
46323 bip32RootKey = null;
46324 bip32ExtendedKey = null;
46325 clearAddressesList();
46326 showPending();
46327 if (phraseChangeTimeoutEvent != null) {
46328 clearTimeout(phraseChangeTimeoutEvent);
46329 }
46330 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46331 }
46332
46333 function phraseChanged() {
46334 showPending();
46335 setMnemonicLanguage();
46336 // Get the mnemonic phrase
46337 var phrase = DOM.phrase.val();
46338 var errorText = findPhraseErrors(phrase);
46339 if (errorText) {
46340 showValidationError(errorText);
46341 return;
46342 }
46343 // Calculate and display
46344 var passphrase = DOM.passphrase.val();
46345 calcBip32RootKeyFromSeed(phrase, passphrase);
46346 calcForDerivationPath();
46347 }
46348
46349 function delayedEntropyChanged() {
46350 hideValidationError();
46351 showPending();
46352 if (entropyChangeTimeoutEvent != null) {
46353 clearTimeout(entropyChangeTimeoutEvent);
46354 }
46355 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46356 }
46357
46358 function entropyChanged() {
46359 // If blank entropy, clear mnemonic, addresses, errors
46360 if (DOM.entropy.val().trim().length == 0) {
46361 clearDisplay();
46362 clearEntropyFeedback();
46363 DOM.phrase.val("");
46364 showValidationError("Blank entropy");
46365 return;
46366 }
46367 // Get the current phrase to detect changes
46368 var phrase = DOM.phrase.val();
46369 // Set the phrase from the entropy
46370 setMnemonicFromEntropy();
46371 // Recalc addresses if the phrase has changed
46372 var newPhrase = DOM.phrase.val();
46373 if (newPhrase != phrase) {
46374 if (newPhrase.length == 0) {
46375 clearDisplay();
46376 }
46377 else {
46378 phraseChanged();
46379 }
46380 }
46381 else {
46382 hidePending();
46383 }
46384 }
46385
46386 function delayedRootKeyChanged() {
46387 // Warn if there is an existing mnemonic or passphrase.
46388 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46389 if (!confirm("This will clear existing mnemonic and passphrase")) {
46390 DOM.rootKey.val(bip32RootKey);
46391 return
46392 }
46393 }
46394 hideValidationError();
46395 showPending();
46396 // Clear existing mnemonic and passphrase
46397 DOM.phrase.val("");
46398 DOM.passphrase.val("");
46399 seed = null;
46400 if (rootKeyChangedTimeoutEvent != null) {
46401 clearTimeout(rootKeyChangedTimeoutEvent);
46402 }
46403 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46404 }
46405
46406 function rootKeyChanged() {
46407 showPending();
46408 hideValidationError();
46409 var rootKeyBase58 = DOM.rootKey.val();
46410 var errorText = validateRootKey(rootKeyBase58);
46411 if (errorText) {
46412 showValidationError(errorText);
46413 return;
46414 }
46415 // Calculate and display
46416 calcBip32RootKeyFromBase58(rootKeyBase58);
46417 calcForDerivationPath();
46418 }
46419
46420 function litecoinUseLtubChanged() {
46421 litecoinUseLtub = DOM.litecoinUseLtub.prop("checked");
46422 if (litecoinUseLtub) {
46423 network = bitcoinjs.bitcoin.networks.litecoinLtub;
46424 }
46425 else {
46426 network = bitcoinjs.bitcoin.networks.litecoin;
46427 }
46428 phraseChanged();
46429 }
46430
46431 function calcForDerivationPath() {
46432 clearDerivedKeys();
46433 clearAddressesList();
46434 showPending();
46435 // Don't show bip49 if it's selected but network doesn't support it
46436 if (bip49TabSelected() && !networkHasBip49()) {
46437 return;
46438 }
46439 // Get the derivation path
46440 var derivationPath = getDerivationPath();
46441 var errorText = findDerivationPathErrors(derivationPath);
46442 if (errorText) {
46443 showValidationError(errorText);
46444 return;
46445 }
46446 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46447 if (bip44TabSelected()) {
46448 displayBip44Info();
46449 }
46450 if (bip49TabSelected()) {
46451 displayBip49Info();
46452 }
46453 displayBip32Info();
46454 }
46455
46456 function generateClicked() {
46457 if (isUsingOwnEntropy()) {
46458 return;
46459 }
46460 clearDisplay();
46461 showPending();
46462 setTimeout(function() {
46463 setMnemonicLanguage();
46464 var phrase = generateRandomPhrase();
46465 if (!phrase) {
46466 return;
46467 }
46468 phraseChanged();
46469 }, 50);
46470 }
46471
46472 function languageChanged() {
46473 setTimeout(function() {
46474 setMnemonicLanguage();
46475 if (DOM.phrase.val().length > 0) {
46476 var newPhrase = convertPhraseToNewLanguage();
46477 DOM.phrase.val(newPhrase);
46478 phraseChanged();
46479 }
46480 else {
46481 DOM.generate.trigger("click");
46482 }
46483 }, 50);
46484 }
46485
46486 function toggleIndexes() {
46487 showIndex = !showIndex;
46488 $("td.index span").toggleClass("invisible");
46489 }
46490
46491 function toggleAddresses() {
46492 showAddress = !showAddress;
46493 $("td.address span").toggleClass("invisible");
46494 }
46495
46496 function togglePublicKeys() {
46497 showPubKey = !showPubKey;
46498 $("td.pubkey span").toggleClass("invisible");
46499 }
46500
46501 function togglePrivateKeys() {
46502 showPrivKey = !showPrivKey;
46503 $("td.privkey span").toggleClass("invisible");
46504 }
46505
46506 // Private methods
46507
46508 function generateRandomPhrase() {
46509 if (!hasStrongRandom()) {
46510 var errorText = "This browser does not support strong randomness";
46511 showValidationError(errorText);
46512 return;
46513 }
46514 var numWords = parseInt(DOM.generatedStrength.val());
46515 var strength = numWords / 3 * 32;
46516 var words = mnemonic.generate(strength);
46517 DOM.phrase.val(words);
46518 return words;
46519 }
46520
46521 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46522 seed = mnemonic.toSeed(phrase, passphrase);
46523 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
46524 }
46525
46526 function calcBip32RootKeyFromBase58(rootKeyBase58) {
46527 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46528 }
46529
46530 function calcBip32ExtendedKey(path) {
46531 // Check there's a root key to derive from
46532 if (!bip32RootKey) {
46533 return bip32RootKey;
46534 }
46535 var extendedKey = bip32RootKey;
46536 // Derive the key from the path
46537 var pathBits = path.split("/");
46538 for (var i=0; i<pathBits.length; i++) {
46539 var bit = pathBits[i];
46540 var index = parseInt(bit);
46541 if (isNaN(index)) {
46542 continue;
46543 }
46544 var hardened = bit[bit.length-1] == "'";
46545 var isPriv = !(extendedKey.isNeutered());
46546 var invalidDerivationPath = hardened && !isPriv;
46547 if (invalidDerivationPath) {
46548 extendedKey = null;
46549 }
46550 else if (hardened) {
46551 extendedKey = extendedKey.deriveHardened(index);
46552 }
46553 else {
46554 extendedKey = extendedKey.derive(index);
46555 }
46556 }
46557 return extendedKey
46558 }
46559
46560 function showValidationError(errorText) {
46561 DOM.feedback
46562 .text(errorText)
46563 .show();
46564 }
46565
46566 function hideValidationError() {
46567 DOM.feedback
46568 .text("")
46569 .hide();
46570 }
46571
46572 function findPhraseErrors(phrase) {
46573 // Preprocess the words
46574 phrase = mnemonic.normalizeString(phrase);
46575 var words = phraseToWordArray(phrase);
46576 // Detect blank phrase
46577 if (words.length == 0) {
46578 return "Blank mnemonic";
46579 }
46580 // Check each word
46581 for (var i=0; i<words.length; i++) {
46582 var word = words[i];
46583 var language = getLanguage();
46584 if (WORDLISTS[language].indexOf(word) == -1) {
46585 console.log("Finding closest match to " + word);
46586 var nearestWord = findNearestWord(word);
46587 return word + " not in wordlist, did you mean " + nearestWord + "?";
46588 }
46589 }
46590 // Check the words are valid
46591 var properPhrase = wordArrayToPhrase(words);
46592 var isValid = mnemonic.check(properPhrase);
46593 if (!isValid) {
46594 return "Invalid mnemonic";
46595 }
46596 return false;
46597 }
46598
46599 function validateRootKey(rootKeyBase58) {
46600 try {
46601 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46602 }
46603 catch (e) {
46604 return "Invalid root key";
46605 }
46606 return "";
46607 }
46608
46609 function getDerivationPath() {
46610 if (bip44TabSelected()) {
46611 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46612 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46613 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46614 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46615 var path = "m/";
46616 path += purpose + "'/";
46617 path += coin + "'/";
46618 path += account + "'/";
46619 path += change;
46620 DOM.bip44path.val(path);
46621 var derivationPath = DOM.bip44path.val();
46622 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46623 return derivationPath;
46624 }
46625 if (bip49TabSelected()) {
46626 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46627 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46628 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46629 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46630 var path = "m/";
46631 path += purpose + "'/";
46632 path += coin + "'/";
46633 path += account + "'/";
46634 path += change;
46635 DOM.bip49path.val(path);
46636 var derivationPath = DOM.bip49path.val();
46637 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46638 return derivationPath;
46639 }
46640 else if (bip32TabSelected()) {
46641 var derivationPath = DOM.bip32path.val();
46642 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46643 return derivationPath;
46644 }
46645 else {
46646 console.log("Unknown derivation path");
46647 }
46648 }
46649
46650 function findDerivationPathErrors(path) {
46651 // TODO is not perfect but is better than nothing
46652 // Inspired by
46653 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46654 // and
46655 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46656 var maxDepth = 255; // TODO verify this!!
46657 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46658 if (path[0] != "m") {
46659 return "First character must be 'm'";
46660 }
46661 if (path.length > 1) {
46662 if (path[1] != "/") {
46663 return "Separator must be '/'";
46664 }
46665 var indexes = path.split("/");
46666 if (indexes.length > maxDepth) {
46667 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46668 }
46669 for (var depth = 1; depth<indexes.length; depth++) {
46670 var index = indexes[depth];
46671 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46672 if (invalidChars.length > 0) {
46673 return "Invalid characters " + invalidChars + " found at depth " + depth;
46674 }
46675 var indexValue = parseInt(index.replace("'", ""));
46676 if (isNaN(depth)) {
46677 return "Invalid number at depth " + depth;
46678 }
46679 if (indexValue > maxIndexValue) {
46680 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46681 }
46682 }
46683 }
46684 // Check root key exists or else derivation path is useless!
46685 if (!bip32RootKey) {
46686 return "No root key";
46687 }
46688 // Check no hardened derivation path when using xpub keys
46689 var hardenedPath = path.indexOf("'") > -1;
46690 var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked");
46691 var hardened = hardenedPath || hardenedAddresses;
46692 var isXpubkey = bip32RootKey.isNeutered();
46693 if (hardened && isXpubkey) {
46694 return "Hardened derivation path is invalid with xpub key";
46695 }
46696 return false;
46697 }
46698
46699 function displayBip44Info() {
46700 // Get the derivation path for the account
46701 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46702 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46703 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46704 var path = "m/";
46705 path += purpose + "'/";
46706 path += coin + "'/";
46707 path += account + "'/";
46708 // Calculate the account extended keys
46709 var accountExtendedKey = calcBip32ExtendedKey(path);
46710 var accountXprv = accountExtendedKey.toBase58();
46711 var accountXpub = accountExtendedKey.neutered().toBase58();
46712 // Display the extended keys
46713 DOM.bip44accountXprv.val(accountXprv);
46714 DOM.bip44accountXpub.val(accountXpub);
46715 }
46716
46717 function displayBip49Info() {
46718 // Get the derivation path for the account
46719 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46720 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46721 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46722 var path = "m/";
46723 path += purpose + "'/";
46724 path += coin + "'/";
46725 path += account + "'/";
46726 // Calculate the account extended keys
46727 var accountExtendedKey = calcBip32ExtendedKey(path);
46728 var accountXprv = accountExtendedKey.toBase58();
46729 var accountXpub = accountExtendedKey.neutered().toBase58();
46730 // Display the extended keys
46731 DOM.bip49accountXprv.val(accountXprv);
46732 DOM.bip49accountXpub.val(accountXpub);
46733 }
46734
46735 function displayBip32Info() {
46736 // Display the key
46737 DOM.seed.val(seed);
46738 var rootKey = bip32RootKey.toBase58();
46739 DOM.rootKey.val(rootKey);
46740 var xprvkeyB58 = "NA";
46741 if (!bip32ExtendedKey.isNeutered()) {
46742 xprvkeyB58 = bip32ExtendedKey.toBase58();
46743 }
46744 var extendedPrivKey = xprvkeyB58;
46745 DOM.extendedPrivKey.val(extendedPrivKey);
46746 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
46747 DOM.extendedPubKey.val(extendedPubKey);
46748 // Display the addresses and privkeys
46749 clearAddressesList();
46750 displayAddresses(0, 20);
46751 }
46752
46753 function displayAddresses(start, total) {
46754 generationProcesses.push(new (function() {
46755
46756 var rows = [];
46757
46758 this.stop = function() {
46759 for (var i=0; i<rows.length; i++) {
46760 rows[i].shouldGenerate = false;
46761 }
46762 hidePending();
46763 }
46764
46765 for (var i=0; i<total; i++) {
46766 var index = i + start;
46767 var isLast = i == total - 1;
46768 rows.push(new TableRow(index, isLast));
46769 }
46770
46771 })());
46772 }
46773
46774 function TableRow(index, isLast) {
46775
46776 var self = this;
46777 this.shouldGenerate = true;
46778 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
46779 var isP2wpkhNestedInP2sh = bip49TabSelected() || (bip32TabSelected() && useP2wpkhNestedInP2sh());
46780 var p2wpkhNestedInP2shAvailable = networkHasBip49();
46781
46782 function init() {
46783 calculateValues();
46784 }
46785
46786 function calculateValues() {
46787 setTimeout(function() {
46788 if (!self.shouldGenerate) {
46789 return;
46790 }
46791 var key = "NA";
46792 if (useHardenedAddresses) {
46793 key = bip32ExtendedKey.deriveHardened(index);
46794 }
46795 else {
46796 key = bip32ExtendedKey.derive(index);
46797 }
46798 var address = key.getAddress().toString();
46799 var privkey = "NA";
46800 if (!key.isNeutered()) {
46801 privkey = key.keyPair.toWIF(network);
46802 }
46803 var pubkey = key.getPublicKeyBuffer().toString('hex');
46804 var indexText = getDerivationPath() + "/" + index;
46805 if (useHardenedAddresses) {
46806 indexText = indexText + "'";
46807 }
46808 // Ethereum values are different
46809 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
46810 var privKeyBuffer = key.keyPair.d.toBuffer();
46811 privkey = privKeyBuffer.toString('hex');
46812 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
46813 var hexAddress = addressBuffer.toString('hex');
46814 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46815 address = ethUtil.addHexPrefix(checksumAddress);
46816 privkey = ethUtil.addHexPrefix(privkey);
46817 pubkey = ethUtil.addHexPrefix(pubkey);
46818 }
46819 // Ripple values are different
46820 if (networks[DOM.network.val()].name == "XRP - Ripple") {
46821 privkey = convertRipplePriv(privkey);
46822 address = convertRippleAdrr(address);
46823 }
46824 // BIP49 addresses are different
46825 if (isP2wpkhNestedInP2sh) {
46826 if (!p2wpkhNestedInP2shAvailable) {
46827 return;
46828 }
46829 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46830 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46831 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46832 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46833 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46834 }
46835 addAddressToList(indexText, address, pubkey, privkey);
46836 if (isLast) {
46837 hidePending();
46838 }
46839 }, 50)
46840 }
46841
46842 init();
46843
46844 }
46845
46846 function showMore() {
46847 var start = DOM.addresses.children().length;
46848 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46849 if (isNaN(rowsToAdd)) {
46850 rowsToAdd = 20;
46851 DOM.rowsToAdd.val("20");
46852 }
46853 if (rowsToAdd > 200) {
46854 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46855 msg += "Do you want to continue?";
46856 if (!confirm(msg)) {
46857 return;
46858 }
46859 }
46860 displayAddresses(start, rowsToAdd);
46861 }
46862
46863 function clearDisplay() {
46864 clearAddressesList();
46865 clearKeys();
46866 hideValidationError();
46867 }
46868
46869 function clearAddressesList() {
46870 DOM.addresses.empty();
46871 stopGenerating();
46872 }
46873
46874 function stopGenerating() {
46875 while (generationProcesses.length > 0) {
46876 var generation = generationProcesses.shift();
46877 generation.stop();
46878 }
46879 }
46880
46881 function clearKeys() {
46882 clearRootKey();
46883 clearDerivedKeys();
46884 }
46885
46886 function clearRootKey() {
46887 DOM.rootKey.val("");
46888 }
46889
46890 function clearDerivedKeys() {
46891 DOM.extendedPrivKey.val("");
46892 DOM.extendedPubKey.val("");
46893 DOM.bip44accountXprv.val("");
46894 DOM.bip44accountXpub.val("");
46895 }
46896
46897 function addAddressToList(indexText, address, pubkey, privkey) {
46898 var row = $(addressRowTemplate.html());
46899 // Elements
46900 var indexCell = row.find(".index span");
46901 var addressCell = row.find(".address span");
46902 var pubkeyCell = row.find(".pubkey span");
46903 var privkeyCell = row.find(".privkey span");
46904 // Content
46905 indexCell.text(indexText);
46906 addressCell.text(address);
46907 pubkeyCell.text(pubkey);
46908 privkeyCell.text(privkey);
46909 // Visibility
46910 if (!showIndex) {
46911 indexCell.addClass("invisible");
46912 }
46913 if (!showAddress) {
46914 addressCell.addClass("invisible");
46915 }
46916 if (!showPubKey) {
46917 pubkeyCell.addClass("invisible");
46918 }
46919 if (!showPrivKey) {
46920 privkeyCell.addClass("invisible");
46921 }
46922 DOM.addresses.append(row);
46923 var rowShowQrEls = row.find("[data-show-qr]");
46924 setQrEvents(rowShowQrEls);
46925 }
46926
46927 function hasStrongRandom() {
46928 return 'crypto' in window && window['crypto'] !== null;
46929 }
46930
46931 function disableForms() {
46932 $("form").on("submit", function(e) {
46933 e.preventDefault();
46934 });
46935 }
46936
46937 function parseIntNoNaN(val, defaultVal) {
46938 var v = parseInt(val);
46939 if (isNaN(v)) {
46940 return defaultVal;
46941 }
46942 return v;
46943 }
46944
46945 function showPending() {
46946 DOM.feedback
46947 .text("Calculating...")
46948 .show();
46949 }
46950
46951 function findNearestWord(word) {
46952 var language = getLanguage();
46953 var words = WORDLISTS[language];
46954 var minDistance = 99;
46955 var closestWord = words[0];
46956 for (var i=0; i<words.length; i++) {
46957 var comparedTo = words[i];
46958 if (comparedTo.indexOf(word) == 0) {
46959 return comparedTo;
46960 }
46961 var distance = Levenshtein.get(word, comparedTo);
46962 if (distance < minDistance) {
46963 closestWord = comparedTo;
46964 minDistance = distance;
46965 }
46966 }
46967 return closestWord;
46968 }
46969
46970 function hidePending() {
46971 DOM.feedback
46972 .text("")
46973 .hide();
46974 }
46975
46976 function populateNetworkSelect() {
46977 for (var i=0; i<networks.length; i++) {
46978 var network = networks[i];
46979 var option = $("<option>");
46980 option.attr("value", i);
46981 option.text(network.name);
46982 if (network.name == "BTC - Bitcoin") {
46983 option.prop("selected", true);
46984 }
46985 DOM.phraseNetwork.append(option);
46986 }
46987 }
46988
46989 function populateClientSelect() {
46990 for (var i=0; i<clients.length; i++) {
46991 var client = clients[i];
46992 var option = $("<option>");
46993 option.attr("value", i);
46994 option.text(client.name);
46995 DOM.bip32Client.append(option);
46996 }
46997 }
46998
46999 function getLanguage() {
47000 var defaultLanguage = "english";
47001 // Try to get from existing phrase
47002 var language = getLanguageFromPhrase();
47003 // Try to get from url if not from phrase
47004 if (language.length == 0) {
47005 language = getLanguageFromUrl();
47006 }
47007 // Default to English if no other option
47008 if (language.length == 0) {
47009 language = defaultLanguage;
47010 }
47011 return language;
47012 }
47013
47014 function getLanguageFromPhrase(phrase) {
47015 // Check if how many words from existing phrase match a language.
47016 var language = "";
47017 if (!phrase) {
47018 phrase = DOM.phrase.val();
47019 }
47020 if (phrase.length > 0) {
47021 var words = phraseToWordArray(phrase);
47022 var languageMatches = {};
47023 for (l in WORDLISTS) {
47024 // Track how many words match in this language
47025 languageMatches[l] = 0;
47026 for (var i=0; i<words.length; i++) {
47027 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
47028 if (wordInLanguage) {
47029 languageMatches[l]++;
47030 }
47031 }
47032 // Find languages with most word matches.
47033 // This is made difficult due to commonalities between Chinese
47034 // simplified vs traditional.
47035 var mostMatches = 0;
47036 var mostMatchedLanguages = [];
47037 for (var l in languageMatches) {
47038 var numMatches = languageMatches[l];
47039 if (numMatches > mostMatches) {
47040 mostMatches = numMatches;
47041 mostMatchedLanguages = [l];
47042 }
47043 else if (numMatches == mostMatches) {
47044 mostMatchedLanguages.push(l);
47045 }
47046 }
47047 }
47048 if (mostMatchedLanguages.length > 0) {
47049 // Use first language and warn if multiple detected
47050 language = mostMatchedLanguages[0];
47051 if (mostMatchedLanguages.length > 1) {
47052 console.warn("Multiple possible languages");
47053 console.warn(mostMatchedLanguages);
47054 }
47055 }
47056 }
47057 return language;
47058 }
47059
47060 function getLanguageFromUrl() {
47061 for (var language in WORDLISTS) {
47062 if (window.location.hash.indexOf(language) > -1) {
47063 return language;
47064 }
47065 }
47066 return "";
47067 }
47068
47069 function setMnemonicLanguage() {
47070 var language = getLanguage();
47071 // Load the bip39 mnemonic generator for this language if required
47072 if (!(language in mnemonics)) {
47073 mnemonics[language] = new Mnemonic(language);
47074 }
47075 mnemonic = mnemonics[language];
47076 }
47077
47078 function convertPhraseToNewLanguage() {
47079 var oldLanguage = getLanguageFromPhrase();
47080 var newLanguage = getLanguageFromUrl();
47081 var oldPhrase = DOM.phrase.val();
47082 var oldWords = phraseToWordArray(oldPhrase);
47083 var newWords = [];
47084 for (var i=0; i<oldWords.length; i++) {
47085 var oldWord = oldWords[i];
47086 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
47087 var newWord = WORDLISTS[newLanguage][index];
47088 newWords.push(newWord);
47089 }
47090 newPhrase = wordArrayToPhrase(newWords);
47091 return newPhrase;
47092 }
47093
47094 // TODO look at jsbip39 - mnemonic.splitWords
47095 function phraseToWordArray(phrase) {
47096 var words = phrase.split(/\s/g);
47097 var noBlanks = [];
47098 for (var i=0; i<words.length; i++) {
47099 var word = words[i];
47100 if (word.length > 0) {
47101 noBlanks.push(word);
47102 }
47103 }
47104 return noBlanks;
47105 }
47106
47107 // TODO look at jsbip39 - mnemonic.joinWords
47108 function wordArrayToPhrase(words) {
47109 var phrase = words.join(" ");
47110 var language = getLanguageFromPhrase(phrase);
47111 if (language == "japanese") {
47112 phrase = words.join("\u3000");
47113 }
47114 return phrase;
47115 }
47116
47117 function isUsingOwnEntropy() {
47118 return DOM.useEntropy.prop("checked");
47119 }
47120
47121 function setMnemonicFromEntropy() {
47122 clearEntropyFeedback();
47123 // Get entropy value
47124 var entropyStr = DOM.entropy.val();
47125 // Work out minimum base for entropy
47126 var entropy = Entropy.fromString(entropyStr);
47127 if (entropy.binaryStr.length == 0) {
47128 return;
47129 }
47130 // Show entropy details
47131 showEntropyFeedback(entropy);
47132 // Use entropy hash if not using raw entropy
47133 var bits = entropy.binaryStr;
47134 var mnemonicLength = DOM.entropyMnemonicLength.val();
47135 if (mnemonicLength != "raw") {
47136 // Get bits by hashing entropy with SHA256
47137 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
47138 var hex = sjcl.codec.hex.fromBits(hash);
47139 bits = BigInteger.parse(hex, 16).toString(2);
47140 while (bits.length % 256 != 0) {
47141 bits = "0" + bits;
47142 }
47143 // Truncate hash to suit number of words
47144 mnemonicLength = parseInt(mnemonicLength);
47145 var numberOfBits = 32 * mnemonicLength / 3;
47146 bits = bits.substring(0, numberOfBits);
47147 }
47148 // Discard trailing entropy
47149 var bitsToUse = Math.floor(bits.length / 32) * 32;
47150 var start = bits.length - bitsToUse;
47151 var binaryStr = bits.substring(start);
47152 // Convert entropy string to numeric array
47153 var entropyArr = [];
47154 for (var i=0; i<binaryStr.length / 8; i++) {
47155 var byteAsBits = binaryStr.substring(i*8, i*8+8);
47156 var entropyByte = parseInt(byteAsBits, 2);
47157 entropyArr.push(entropyByte)
47158 }
47159 // Convert entropy array to mnemonic
47160 var phrase = mnemonic.toMnemonic(entropyArr);
47161 // Set the mnemonic in the UI
47162 DOM.phrase.val(phrase);
47163 }
47164
47165 function clearEntropyFeedback() {
47166 DOM.entropyCrackTime.text("...");
47167 DOM.entropyType.text("");
47168 DOM.entropyWordCount.text("0");
47169 DOM.entropyEventCount.text("0");
47170 DOM.entropyBitsPerEvent.text("0");
47171 DOM.entropyBits.text("0");
47172 DOM.entropyFiltered.html("&nbsp;");
47173 DOM.entropyBinary.html("&nbsp;");
47174 }
47175
47176 function showEntropyFeedback(entropy) {
47177 var numberOfBits = entropy.binaryStr.length;
47178 var timeToCrack = "unknown";
47179 try {
47180 var z = zxcvbn(entropy.base.parts.join(""));
47181 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
47182 if (z.feedback.warning != "") {
47183 timeToCrack = timeToCrack + " - " + z.feedback.warning;
47184 };
47185 }
47186 catch (e) {
47187 console.log("Error detecting entropy strength with zxcvbn:");
47188 console.log(e);
47189 }
47190 var entropyTypeStr = getEntropyTypeStr(entropy);
47191 var wordCount = Math.floor(numberOfBits / 32) * 3;
47192 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
47193 DOM.entropyFiltered.html(entropy.cleanHtml);
47194 DOM.entropyType.text(entropyTypeStr);
47195 DOM.entropyCrackTime.text(timeToCrack);
47196 DOM.entropyEventCount.text(entropy.base.ints.length);
47197 DOM.entropyBits.text(numberOfBits);
47198 DOM.entropyWordCount.text(wordCount);
47199 DOM.entropyBinary.text(entropy.binaryStr);
47200 DOM.entropyBitsPerEvent.text(bitsPerEvent);
47201 // detect and warn of filtering
47202 var rawNoSpaces = DOM.entropy.val().replace(/\s/g, "");
47203 var cleanNoSpaces = entropy.cleanStr.replace(/\s/g, "");
47204 var isFiltered = rawNoSpaces.length != cleanNoSpaces.length;
47205 if (isFiltered) {
47206 DOM.entropyFilterWarning.removeClass('hidden');
47207 }
47208 else {
47209 DOM.entropyFilterWarning.addClass('hidden');
47210 }
47211 }
47212
47213 function getEntropyTypeStr(entropy) {
47214 var typeStr = entropy.base.str;
47215 // Add some detail if these are cards
47216 if (entropy.base.asInt == 52) {
47217 var cardDetail = []; // array of message strings
47218 // Detect duplicates
47219 var dupes = [];
47220 var dupeTracker = {};
47221 for (var i=0; i<entropy.base.parts.length; i++) {
47222 var card = entropy.base.parts[i];
47223 var cardUpper = card.toUpperCase();
47224 if (cardUpper in dupeTracker) {
47225 dupes.push(card);
47226 }
47227 dupeTracker[cardUpper] = true;
47228 }
47229 if (dupes.length > 0) {
47230 var dupeWord = "duplicates";
47231 if (dupes.length == 1) {
47232 dupeWord = "duplicate";
47233 }
47234 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47235 if (dupes.length > 3) {
47236 msg += "...";
47237 }
47238 cardDetail.push(msg);
47239 }
47240 // Detect full deck
47241 var uniqueCards = [];
47242 for (var uniqueCard in dupeTracker) {
47243 uniqueCards.push(uniqueCard);
47244 }
47245 if (uniqueCards.length == 52) {
47246 cardDetail.unshift("full deck");
47247 }
47248 // Detect missing cards
47249 var values = "A23456789TJQK";
47250 var suits = "CDHS";
47251 var missingCards = [];
47252 for (var i=0; i<suits.length; i++) {
47253 for (var j=0; j<values.length; j++) {
47254 var card = values[j] + suits[i];
47255 if (!(card in dupeTracker)) {
47256 missingCards.push(card);
47257 }
47258 }
47259 }
47260 // Display missing cards if six or less, ie clearly going for full deck
47261 if (missingCards.length > 0 && missingCards.length <= 6) {
47262 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47263 if (missingCards.length > 3) {
47264 msg += "...";
47265 }
47266 cardDetail.push(msg);
47267 }
47268 // Add card details to typeStr
47269 if (cardDetail.length > 0) {
47270 typeStr += " (" + cardDetail.join(", ") + ")";
47271 }
47272 }
47273 return typeStr;
47274 }
47275
47276 function setQrEvents(els) {
47277 els.on("mouseenter", createQr);
47278 els.on("mouseleave", destroyQr);
47279 els.on("click", toggleQr);
47280 }
47281
47282 function createQr(e) {
47283 var content = e.target.textContent || e.target.value;
47284 if (content) {
47285 var size = 130;
47286 DOM.qrImage.qrcode({width: size, height: size, text: content});
47287 if (!showQr) {
47288 DOM.qrHider.addClass("hidden");
47289 }
47290 else {
47291 DOM.qrHider.removeClass("hidden");
47292 }
47293 DOM.qrContainer.removeClass("hidden");
47294 }
47295 }
47296
47297 function destroyQr() {
47298 DOM.qrImage.text("");
47299 DOM.qrContainer.addClass("hidden");
47300 }
47301
47302 function toggleQr() {
47303 showQr = !showQr;
47304 DOM.qrHider.toggleClass("hidden");
47305 DOM.qrHint.toggleClass("hidden");
47306 }
47307
47308 function bip44TabSelected() {
47309 return DOM.bip44tab.hasClass("active");
47310 }
47311
47312 function bip32TabSelected() {
47313 return DOM.bip32tab.hasClass("active");
47314 }
47315
47316 function useP2wpkhNestedInP2sh() {
47317 return DOM.useP2wpkhNestedInP2sh.prop("checked");
47318 }
47319
47320 function networkHasBip49() {
47321 return networks[DOM.network.val()].p2wpkhNestedInP2shAvailable;
47322 }
47323
47324 function bip49TabSelected() {
47325 return DOM.bip49tab.hasClass("active");
47326 }
47327
47328 function setHdCoin(coinValue) {
47329 DOM.bip44coin.val(coinValue);
47330 DOM.bip49coin.val(coinValue);
47331 }
47332
47333 function showP2wpkhNestedInP2shAvailable() {
47334 DOM.bip49unavailable.addClass("hidden");
47335 DOM.bip49available.removeClass("hidden");
47336 DOM.useP2wpkhNestedInP2sh.prop("disabled", false);
47337 }
47338
47339 function showP2wpkhNestedInP2shUnavailable() {
47340 DOM.bip49available.addClass("hidden");
47341 DOM.bip49unavailable.removeClass("hidden");
47342 DOM.useP2wpkhNestedInP2sh.prop("disabled", true);
47343 DOM.useP2wpkhNestedInP2sh.prop("checked", false);
47344 }
47345
47346 var networks = [
47347 {
47348 name: "BCH - Bitcoin Cash",
47349 p2wpkhNestedInP2shAvailable: false,
47350 onSelect: function() {
47351 network = bitcoinjs.bitcoin.networks.bitcoin;
47352 setHdCoin(145);
47353 },
47354 },
47355 {
47356 name: "BTC - Bitcoin",
47357 p2wpkhNestedInP2shAvailable: true,
47358 onSelect: function() {
47359 network = bitcoinjs.bitcoin.networks.bitcoin;
47360 setHdCoin(0);
47361 },
47362 },
47363 {
47364 name: "BTC - Bitcoin Testnet",
47365 p2wpkhNestedInP2shAvailable: true,
47366 onSelect: function() {
47367 network = bitcoinjs.bitcoin.networks.testnet;
47368 setHdCoin(1);
47369 },
47370 },
47371 {
47372 name: "CLAM - Clams",
47373 p2wpkhNestedInP2shAvailable: false,
47374 onSelect: function() {
47375 network = bitcoinjs.bitcoin.networks.clam;
47376 setHdCoin(23);
47377 },
47378 },
47379 {
47380 name: "CRW - Crown",
47381 p2wpkhNestedInP2shAvailable: false,
47382 onSelect: function() {
47383 network = bitcoinjs.bitcoin.networks.crown;
47384 setHdCoin(72);
47385 },
47386 },
47387 {
47388 name: "DASH - Dash",
47389 p2wpkhNestedInP2shAvailable: false,
47390 onSelect: function() {
47391 network = bitcoinjs.bitcoin.networks.dash;
47392 setHdCoin(5);
47393 },
47394 },
47395 {
47396 name: "DASH - Dash Testnet",
47397 p2wpkhNestedInP2shAvailable: false,
47398 onSelect: function() {
47399 network = bitcoinjs.bitcoin.networks.dashtn;
47400 setHdCoin(1);
47401 },
47402 },
47403 {
47404 name: "DOGE - Dogecoin",
47405 p2wpkhNestedInP2shAvailable: false,
47406 onSelect: function() {
47407 network = bitcoinjs.bitcoin.networks.dogecoin;
47408 setHdCoin(3);
47409 },
47410 },
47411 {
47412 name: "ETH - Ethereum",
47413 p2wpkhNestedInP2shAvailable: false,
47414 onSelect: function() {
47415 network = bitcoinjs.bitcoin.networks.bitcoin;
47416 setHdCoin(60);
47417 },
47418 },
47419 {
47420 name: "GAME - GameCredits",
47421 p2wpkhNestedInP2shAvailable: false,
47422 onSelect: function() {
47423 network = bitcoinjs.bitcoin.networks.game;
47424 setHdCoin(101);
47425 },
47426 },
47427 {
47428 name: "JBS - Jumbucks",
47429 p2wpkhNestedInP2shAvailable: false,
47430 onSelect: function() {
47431 network = bitcoinjs.bitcoin.networks.jumbucks;
47432 setHdCoin(26);
47433 },
47434 },
47435 {
47436 name: "LTC - Litecoin",
47437 p2wpkhNestedInP2shAvailable: false,
47438 onSelect: function() {
47439 network = bitcoinjs.bitcoin.networks.litecoin;
47440 setHdCoin(2);
47441 DOM.litecoinLtubContainer.removeClass("hidden");
47442 },
47443 },
47444 {
47445 name: "MAZA - Maza",
47446 p2wpkhNestedInP2shAvailable: false,
47447 onSelect: function() {
47448 network = bitcoinjs.bitcoin.networks.maza;
47449 setHdCoin(13);
47450 },
47451 },
47452
47453 {
47454 name: "NMC - Namecoin",
47455 p2wpkhNestedInP2shAvailable: false,
47456 onSelect: function() {
47457 network = bitcoinjs.bitcoin.networks.namecoin;
47458 setHdCoin(7);
47459 },
47460 },
47461 {
47462 name: "PIVX - PIVX",
47463 p2wpkhNestedInP2shAvailable: false,
47464 onSelect: function() {
47465 network = bitcoinjs.bitcoin.networks.pivx;
47466 setHdCoin(119);
47467 },
47468 },
47469 {
47470 name: "PIVX - PIVX Testnet",
47471 p2wpkhNestedInP2shAvailable: false,
47472 onSelect: function() {
47473 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47474 setHdCoin(1);
47475 },
47476 },
47477 {
47478 name: "PPC - Peercoin",
47479 p2wpkhNestedInP2shAvailable: false,
47480 onSelect: function() {
47481 network = bitcoinjs.bitcoin.networks.peercoin;
47482 setHdCoin(6);
47483 },
47484 },
47485 {
47486 name: "SDC - ShadowCash",
47487 p2wpkhNestedInP2shAvailable: false,
47488 onSelect: function() {
47489 network = bitcoinjs.bitcoin.networks.shadow;
47490 setHdCoin(35);
47491 },
47492 },
47493 {
47494 name: "SDC - ShadowCash Testnet",
47495 p2wpkhNestedInP2shAvailable: false,
47496 onSelect: function() {
47497 network = bitcoinjs.bitcoin.networks.shadowtn;
47498 setHdCoin(1);
47499 },
47500 },
47501 {
47502 name: "SLM - Slimcoin",
47503 p2wpkhNestedInP2shAvailable: false,
47504 onSelect: function() {
47505 network = bitcoinjs.bitcoin.networks.slimcoin;
47506 setHdCoin(63);
47507 },
47508 },
47509 {
47510 name: "SLM - Slimcoin Testnet",
47511 p2wpkhNestedInP2shAvailable: false,
47512 onSelect: function() {
47513 network = bitcoinjs.bitcoin.networks.slimcointn;
47514 setHdCoin(111);
47515 },
47516 },
47517 {
47518 name: "VIA - Viacoin",
47519 p2wpkhNestedInP2shAvailable: false,
47520 onSelect: function() {
47521 network = bitcoinjs.bitcoin.networks.viacoin;
47522 setHdCoin(14);
47523 },
47524 },
47525 {
47526 name: "VIA - Viacoin Testnet",
47527 p2wpkhNestedInP2shAvailable: false,
47528 onSelect: function() {
47529 network = bitcoinjs.bitcoin.networks.viacointestnet;
47530 setHdCoin(1);
47531 },
47532 },
47533 {
47534 name: "XMY - Myriadcoin",
47535 p2wpkhNestedInP2shAvailable: false,
47536 onSelect: function() {
47537 network = bitcoinjs.bitcoin.networks.myriadcoin;
47538 setHdCoin(90);
47539 },
47540 },
47541 {
47542 name: "XRP - Ripple",
47543 p2wpkhNestedInP2shAvailable: false,
47544 onSelect: function() {
47545 network = bitcoinjs.bitcoin.networks.bitcoin;
47546 setHdCoin(144);
47547 },
47548 }
47549 ]
47550
47551 var clients = [
47552 {
47553 name: "Bitcoin Core",
47554 onSelect: function() {
47555 DOM.bip32path.val("m/0'/0'");
47556 DOM.hardenedAddresses.prop('checked', true);
47557 },
47558 },
47559 {
47560 name: "blockchain.info",
47561 onSelect: function() {
47562 DOM.bip32path.val("m/44'/0'/0'");
47563 DOM.hardenedAddresses.prop('checked', false);
47564 },
47565 },
47566 {
47567 name: "MultiBit HD",
47568 onSelect: function() {
47569 DOM.bip32path.val("m/0'/0");
47570 DOM.hardenedAddresses.prop('checked', false);
47571 },
47572 }
47573 ]
47574
47575 init();
47576
47577 })();
47578 </script>
47579 </body>
47580 </html>