UNPKG

@ngageoint/mage.web-app

Version:

The MAGE web-app is the UI for interacting with the MAGE service in a web browser.

1 lines 1.8 MB
"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[278],{25022:(Me,$,q)=>{q.d($,{A:()=>o});const o={0:{color:"#F44336",text:"Weak",value:"0"},1:{color:"#F44336",text:"Fair",value:"25"},2:{color:"#F44336",text:"Good",value:"50"},3:{color:"#F44336",text:"Strong",value:"75"},4:{color:"#F44336",text:"Excellent",value:"100"}}},34726:(Me,$,q)=>{q.d($,{tu:()=>za,Mu:()=>j});const o=(d,n)=>d.push.apply(d,n),T=d=>d.sort((n,s)=>n.i-s.i||n.j-s.j),t=d=>{const n={};let s=1;return d.forEach(l=>{n[l]=s,s+=1}),n},re={4:[[1,2],[2,3]],5:[[1,3],[2,3],[2,4]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]},W=/^[A-Z\xbf-\xdf][^A-Z\xbf-\xdf]+$/,pe=/^[^A-Z\xbf-\xdf]+[A-Z\xbf-\xdf]$/,ke=/^[A-Z\xbf-\xdf]+$/,Z=/^[^a-z\xdf-\xff]+$/,I=/^[a-z\xdf-\xff]+$/,V=/^[^A-Z\xbf-\xdf]+$/,A=/[a-z\xdf-\xff]/,G=/[A-Z\xbf-\xdf]/,_=/[^A-Za-z\xbf-\xdf]/gi,P=/^\d+$/,p=(new Date).getFullYear(),w={recentYear:/19\d\d|200\d|201\d|202\d/g},O=[" ",",",";",":","|","/","\\","_",".","-"],X=O.length;class ee{match({password:n}){const s=[...this.getMatchesWithoutSeparator(n),...this.getMatchesWithSeparator(n)],l=this.filterNoise(s);return T(l)}getMatchesWithSeparator(n){const s=[],l=/^(\d{1,4})([\s/\\_.-])(\d{1,2})\2(\d{1,4})$/;for(let c=0;c<=Math.abs(n.length-6);c+=1)for(let m=c+5;m<=c+9&&!(m>=n.length);m+=1){const u=n.slice(c,+m+1||9e9),b=l.exec(u);if(null!=b){const y=this.mapIntegersToDayMonthYear([parseInt(b[1],10),parseInt(b[3],10),parseInt(b[4],10)]);null!=y&&s.push({pattern:"date",token:u,i:c,j:m,separator:b[2],year:y.year,month:y.month,day:y.day})}}return s}getMatchesWithoutSeparator(n){const s=[],l=/^\d{4,8}$/,c=m=>Math.abs(m.year-p);for(let m=0;m<=Math.abs(n.length-4);m+=1)for(let u=m+3;u<=m+7&&!(u>=n.length);u+=1){const b=n.slice(m,+u+1||9e9);if(l.exec(b)){const y=[];if(re[b.length].forEach(([D,R])=>{const B=this.mapIntegersToDayMonthYear([parseInt(b.slice(0,D),10),parseInt(b.slice(D,R),10),parseInt(b.slice(R),10)]);null!=B&&y.push(B)}),y.length>0){let D=y[0],R=c(y[0]);y.slice(1).forEach(B=>{const C=c(B);C<R&&(D=B,R=C)}),s.push({pattern:"date",token:b,i:m,j:u,separator:"",year:D.year,month:D.month,day:D.day})}}}return s}filterNoise(n){return n.filter(s=>{let l=!1;const c=n.length;for(let m=0;m<c;m+=1){const u=n[m];if(s!==u&&u.i<=s.i&&u.j>=s.j){l=!0;break}}return!l})}mapIntegersToDayMonthYear(n){if(n[1]>31||n[1]<=0)return null;let s=0,l=0,c=0;for(let m=0,u=n.length;m<u;m+=1){const b=n[m];if(b>99&&b<1e3||b>2050)return null;b>31&&(l+=1),b>12&&(s+=1),b<=0&&(c+=1)}return l>=2||3===s||c>=2?null:this.getDayMonth(n)}getDayMonth(n){const s=[[n[2],n.slice(0,2)],[n[0],n.slice(1,3)]],l=s.length;for(let c=0;c<l;c+=1){const[m,u]=s[c];if(1e3<=m&&m<=2050){const b=this.mapIntegersToDayMonth(u);return null!=b?{year:m,month:b.month,day:b.day}:null}}for(let c=0;c<l;c+=1){const[m,u]=s[c],b=this.mapIntegersToDayMonth(u);if(null!=b)return{year:this.twoToFourDigitYear(m),month:b.month,day:b.day}}return null}mapIntegersToDayMonth(n){const s=[n,n.slice().reverse()];for(let l=0;l<s.length;l+=1){const c=s[l],m=c[0],u=c[1];if(m>=1&&m<=31&&u>=1&&u<=12)return{day:m,month:u}}return null}twoToFourDigitYear(n){return n>99?n:n>50?n+1900:n+2e3}}const L=new Uint32Array(65536),xe=(d,n,s)=>{let l=0;const c=Object.keys(n).find(m=>{const u=((d,n,s)=>d.length<=n.length||d.length<=s?Math.ceil(d.length/4):s)(d,m,s);if(Math.abs(d.length-m.length)>u)return!1;const b=((d,n)=>{if(d.length<n.length){const s=n;n=d,d=s}return 0===n.length?d.length:d.length<=32?((d,n)=>{const s=d.length,l=n.length,c=1<<s-1;let m=-1,u=0,b=s,y=s;for(;y--;)L[d.charCodeAt(y)]|=1<<y;for(y=0;y<l;y++){let v=L[n.charCodeAt(y)];const x=v|u;v|=(v&m)+m^m,u|=~(v|m),m&=v,u&c&&b++,m&c&&b--,u=u<<1|1,m=m<<1|~(x|u),u&=x}for(y=s;y--;)L[d.charCodeAt(y)]=0;return b})(d,n):((d,n)=>{const s=n.length,l=d.length,c=[],m=[],u=Math.ceil(s/32),b=Math.ceil(l/32);for(let C=0;C<u;C++)m[C]=-1,c[C]=0;let y=0;for(;y<b-1;y++){let C=0,N=-1;const ge=32*y,se=Math.min(32,l)+ge;for(let S=ge;S<se;S++)L[d.charCodeAt(S)]|=1<<S;for(let S=0;S<s;S++){const be=L[n.charCodeAt(S)],me=m[S/32|0]>>>S&1,ye=c[S/32|0]>>>S&1,Va=be|C,ja=((be|ye)&N)+N^N|be|ye;let Se=C|~(ja|N),ua=N&ja;Se>>>31^me&&(m[S/32|0]^=1<<S),ua>>>31^ye&&(c[S/32|0]^=1<<S),Se=Se<<1|me,ua=ua<<1|ye,N=ua|~(Va|Se),C=Se&Va}for(let S=ge;S<se;S++)L[d.charCodeAt(S)]=0}let v=0,x=-1;const D=32*y,R=Math.min(32,l-D)+D;for(let C=D;C<R;C++)L[d.charCodeAt(C)]|=1<<C;let B=l;for(let C=0;C<s;C++){const N=L[n.charCodeAt(C)],ge=m[C/32|0]>>>C&1,se=c[C/32|0]>>>C&1,S=N|v,be=((N|se)&x)+x^x|N|se;let me=v|~(be|x),ye=x&be;B+=me>>>l-1&1,B-=ye>>>l-1&1,me>>>31^ge&&(m[C/32|0]^=1<<C),ye>>>31^se&&(c[C/32|0]^=1<<C),me=me<<1|ge,ye=ye<<1|se,x=ye|~(S|me),v=me&S}for(let C=D;C<R;C++)L[d.charCodeAt(C)]=0;return B})(d,n)})(d,m),y=b<=u;return y&&(l=b),y});return c?{levenshteinDistance:l,levenshteinDistanceEntry:c}:{}};var he={a:["4","@"],b:["8"],c:["(","{","[","<"],d:["6","|)"],e:["3"],f:["#"],g:["6","9","&"],h:["#","|-|"],i:["1","!","|"],k:["<","|<"],l:["!","1","|","7"],m:["^^","nn","2n","/\\\\/\\\\"],n:["//"],o:["0","()"],q:["9"],u:["|_|"],s:["$","5"],t:["+","7"],v:["<",">","/"],w:["^/","uu","vv","2u","2v","\\\\/\\\\/"],x:["%","><"],z:["2"]},ce={warnings:{straightRow:"straightRow",keyPattern:"keyPattern",simpleRepeat:"simpleRepeat",extendedRepeat:"extendedRepeat",sequences:"sequences",recentYears:"recentYears",dates:"dates",topTen:"topTen",topHundred:"topHundred",common:"common",similarToCommon:"similarToCommon",wordByItself:"wordByItself",namesByThemselves:"namesByThemselves",commonNames:"commonNames",userInputs:"userInputs",pwned:"pwned"},suggestions:{l33t:"l33t",reverseWords:"reverseWords",allUppercase:"allUppercase",capitalization:"capitalization",dates:"dates",recentYears:"recentYears",associatedYears:"associatedYears",sequences:"sequences",repeated:"repeated",longerKeyboardPattern:"longerKeyboardPattern",anotherWord:"anotherWord",useWords:"useWords",noNeed:"noNeed",pwned:"pwned"},timeEstimation:{ltSecond:"ltSecond",second:"second",seconds:"seconds",minute:"minute",minutes:"minutes",hour:"hour",hours:"hours",day:"day",days:"days",month:"month",months:"months",year:"year",years:"years",centuries:"centuries"}};class qe{constructor(n=[]){this.parents=n,this.children=new Map}addSub(n,...s){const l=n.charAt(0);this.children.has(l)||this.children.set(l,new qe([...this.parents,l]));let c=this.children.get(l);for(let m=1;m<n.length;m+=1){const u=n.charAt(m);c.hasChild(u)||c.addChild(u),c=c.getChild(u)}return c.subs=(c.subs||[]).concat(s),this}getChild(n){return this.children.get(n)}isTerminal(){return!!this.subs}addChild(n){this.hasChild(n)||this.children.set(n,new qe([...this.parents,n]))}hasChild(n){return this.children.has(n)}}var Oe=(d,n)=>(Object.entries(d).forEach(([s,l])=>{l.forEach(c=>{n.addSub(c,s)})}),n);const j=new class $e{constructor(){this.matchers={},this.l33tTable=he,this.trieNodeRoot=Oe(he,new qe),this.dictionary={userInputs:[]},this.rankedDictionaries={},this.rankedDictionariesMaxWordSize={},this.translations=ce,this.graphs={},this.useLevenshteinDistance=!1,this.levenshteinThreshold=2,this.l33tMaxSubstitutions=100,this.maxLength=256,this.setRankedDictionaries()}setOptions(n={}){n.l33tTable&&(this.l33tTable=n.l33tTable,this.trieNodeRoot=Oe(n.l33tTable,new qe)),n.dictionary&&(this.dictionary=n.dictionary,this.setRankedDictionaries()),n.translations&&this.setTranslations(n.translations),n.graphs&&(this.graphs=n.graphs),void 0!==n.useLevenshteinDistance&&(this.useLevenshteinDistance=n.useLevenshteinDistance),void 0!==n.levenshteinThreshold&&(this.levenshteinThreshold=n.levenshteinThreshold),void 0!==n.l33tMaxSubstitutions&&(this.l33tMaxSubstitutions=n.l33tMaxSubstitutions),void 0!==n.maxLength&&(this.maxLength=n.maxLength)}setTranslations(n){if(!this.checkCustomTranslations(n))throw new Error("Invalid translations object fallback to keys");this.translations=n}checkCustomTranslations(n){let s=!0;return Object.keys(ce).forEach(l=>{if(l in n){const c=l;Object.keys(ce[c]).forEach(m=>{m in n[c]||(s=!1)})}else s=!1}),s}setRankedDictionaries(){const n={},s={};Object.keys(this.dictionary).forEach(l=>{n[l]=t(this.dictionary[l]),s[l]=this.getRankedDictionariesMaxWordSize(this.dictionary[l])}),this.rankedDictionaries=n,this.rankedDictionariesMaxWordSize=s}getRankedDictionariesMaxWordSize(n){const s=n.map(l=>"string"!=typeof l?l.toString().length:l.length);return 0===s.length?0:s.reduce((l,c)=>Math.max(l,c),-1/0)}buildSanitizedRankedDictionary(n){const s=[];return n.forEach(l=>{const c=typeof l;("string"===c||"number"===c||"boolean"===c)&&s.push(l.toString().toLowerCase())}),t(s)}extendUserInputsDictionary(n){this.dictionary.userInputs||(this.dictionary.userInputs=[]);const s=[...this.dictionary.userInputs,...n];this.rankedDictionaries.userInputs=this.buildSanitizedRankedDictionary(s),this.rankedDictionariesMaxWordSize.userInputs=this.getRankedDictionariesMaxWordSize(s)}addMatcher(n,s){this.matchers[n]?console.info(`Matcher ${n} already exists`):this.matchers[n]=s}};class Ze{constructor(n){this.defaultMatch=n}match({password:n}){const s=n.split("").reverse().join("");return this.defaultMatch({password:s}).map(l=>({...l,token:l.token.split("").reverse().join(""),reversed:!0,i:n.length-1-l.j,j:n.length-1-l.i}))}}class Ee{constructor({substr:n,limit:s,trieRoot:l}){this.buffer=[],this.finalPasswords=[],this.substr=n,this.limit=s,this.trieRoot=l}getAllPossibleSubsAtIndex(n){const s=[];let l=this.trieRoot;for(let c=n;c<this.substr.length;c+=1){const m=this.substr.charAt(c);if(l=l.getChild(m),!l)break;s.push(l)}return s}helper({onlyFullSub:n,isFullSub:s,index:l,subIndex:c,changes:m,lastSubLetter:u,consecutiveSubCount:b}){if(this.finalPasswords.length>=this.limit)return;if(l===this.substr.length)return void(n===s&&this.finalPasswords.push({password:this.buffer.join(""),changes:m}));const y=[...this.getAllPossibleSubsAtIndex(l)];let v=!1;for(let x=l+y.length-1;x>=l;x-=1){const D=y[x-l];if(D.isTerminal()){if(u===D.parents.join("")&&b>=3)continue;v=!0;const R=D.subs;for(const B of R){this.buffer.push(B);const C=m.concat({i:c,letter:B,substitution:D.parents.join("")});if(this.helper({onlyFullSub:n,isFullSub:s,index:x+1,subIndex:c+B.length,changes:C,lastSubLetter:D.parents.join(""),consecutiveSubCount:u===D.parents.join("")?b+1:1}),this.buffer.pop(),this.finalPasswords.length>=this.limit)return}}}if(!n||!v){const x=this.substr.charAt(l);this.buffer.push(x),this.helper({onlyFullSub:n,isFullSub:s&&!v,index:l+1,subIndex:c+1,changes:m,lastSubLetter:u,consecutiveSubCount:b}),this.buffer.pop()}}getAll(){return this.helper({onlyFullSub:!0,isFullSub:!0,index:0,subIndex:0,changes:[],lastSubLetter:void 0,consecutiveSubCount:0}),this.helper({onlyFullSub:!1,isFullSub:!0,index:0,subIndex:0,changes:[],lastSubLetter:void 0,consecutiveSubCount:0}),this.finalPasswords}}class Ie{constructor(n){this.defaultMatch=n}isAlreadyIncluded(n,s){return n.some(l=>Object.entries(l).every(([c,m])=>"subs"===c||m===s[c]))}match({password:n}){const s=[],l=((d,n,s)=>new Ee({substr:d,limit:n,trieRoot:s}).getAll())(n,j.l33tMaxSubstitutions,j.trieNodeRoot);let c=!1,m=!0;return l.forEach(u=>{if(c)return;const b=this.defaultMatch({password:u.password,useLevenshtein:m});m=!1,b.forEach(y=>{c||(c=0===y.i&&y.j===n.length-1);const v=((d,n,s)=>{const c=d.changes.filter(v=>v.i<n).reduce((v,x)=>v-x.letter.length+x.substitution.length,n),m=d.changes.filter(v=>v.i>=n&&v.i<=s),u=m.reduce((v,x)=>v-x.letter.length+x.substitution.length,s-n+c),b=[],y=[];return m.forEach(v=>{b.findIndex(D=>D.letter===v.letter&&D.substitution===v.substitution)<0&&(b.push({letter:v.letter,substitution:v.substitution}),y.push(`${v.substitution} -> ${v.letter}`))}),{i:c,j:u,subs:b,subDisplay:y.join(", ")}})(u,y.i,y.j),x=n.slice(v.i,+v.j+1||9e9),D={...y,l33t:!0,token:x,...v},R=this.isAlreadyIncluded(s,D);x.toLowerCase()!==y.matchedWord&&!R&&s.push(D)})}),s.filter(u=>u.token.length>1)}}class Re{constructor(){this.l33t=new Ie(this.defaultMatch),this.reverse=new Ze(this.defaultMatch)}match({password:n}){const s=[...this.defaultMatch({password:n}),...this.reverse.match({password:n}),...this.l33t.match({password:n})];return T(s)}defaultMatch({password:n,useLevenshtein:s=!0}){const l=[],c=n.length,m=n.toLowerCase();return Object.keys(j.rankedDictionaries).forEach(u=>{const b=j.rankedDictionaries[u],v=Math.min(j.rankedDictionariesMaxWordSize[u],c);for(let x=0;x<c;x+=1){const D=Math.min(x+v,c);for(let R=x;R<D;R+=1){const B=m.slice(x,+R+1||9e9),C=B in b;let N={};const ge=0===x&&R===c-1;j.useLevenshteinDistance&&ge&&!C&&s&&(N=xe(B,b,j.levenshteinThreshold));const se=0!==Object.keys(N).length;if(C||se){const be=b[se?N.levenshteinDistanceEntry:B];l.push({pattern:"dictionary",i:x,j:R,token:n.slice(x,+R+1||9e9),matchedWord:B,rank:be,dictionaryName:u,reversed:!1,l33t:!1,...N})}}}}),l}}class Ke{match({password:n,regexes:s=w}){const l=[];return Object.keys(s).forEach(c=>{const m=s[c];let u;for(m.lastIndex=0;u=m.exec(n);)u&&l.push({pattern:"regex",token:u[0],i:u.index,j:u.index+u[0].length-1,regexName:c,regexMatch:u})}),T(l)}}var de={nCk(d,n){let s=d;if(n>s)return 0;if(0===n)return 1;let l=1;for(let c=1;c<=n;c+=1)l*=s,l/=c,s-=1;return l},log10:d=>0===d?0:Math.log(d)/Math.log(10),log2:d=>Math.log(d)/Math.log(2),factorial(d){let n=1;for(let s=2;s<=d;s+=1)n*=s;return n}};const Xe=(d,n)=>{let s=0,l=d.indexOf(n);for(;l>=0;)s+=1,l=d.indexOf(n,l+n.length);return s};const ra={bruteforce:({token:d})=>{let s,n=10**d.length;return n===Number.POSITIVE_INFINITY&&(n=Number.MAX_VALUE),s=1===d.length?11:51,Math.max(n,s)},date:({year:d,separator:n})=>{let l=365*Math.max(Math.abs(d-p),20);return n&&(l*=4),l},dictionary:({rank:d,reversed:n,l33t:s,subs:l,token:c,dictionaryName:m})=>{const u=d,b=(d=>{const n=d.replace(_,"");if(n.match(V)||n.toLowerCase()===n)return 1;const s=[W,pe,Z],l=s.length;for(let c=0;c<l;c+=1)if(n.match(s[c]))return 2;return(d=>{const n=d.split(""),s=n.filter(u=>u.match(G)).length,l=n.filter(u=>u.match(A)).length;let c=0;const m=Math.min(s,l);for(let u=1;u<=m;u+=1)c+=de.nCk(s+l,u);return c})(n)})(c),y=(({l33t:d,subs:n,token:s})=>{if(!d)return 1;let l=1;return n.forEach(c=>{const{subbedCount:m,unsubbedCount:u}=(({sub:d,token:n})=>{const s=n.toLowerCase();return{subbedCount:Xe(s,d.substitution),unsubbedCount:Xe(s,d.letter)}})({sub:c,token:s});if(0===m||0===u)l*=2;else{const b=Math.min(u,m);let y=0;for(let v=1;v<=b;v+=1)y+=de.nCk(u+m,v);l*=y}}),l})({l33t:s,subs:l,token:c});let x;return x="diceware"===m?3888:u*b*y*(n?2:1),{baseGuesses:u,uppercaseVariations:b,l33tVariations:y,calculation:x}},regex:({regexName:d,regexMatch:n,token:s})=>{const l={alphaLower:26,alphaUpper:26,alpha:52,alphanumeric:62,digits:10,symbols:33};return d in l?l[d]**s.length:"recentYear"===d?Math.max(Math.abs(parseInt(n[0],10)-p),20):0},repeat:({baseGuesses:d,repeatCount:n})=>d*n,sequence:({token:d,ascending:n})=>{const s=d.charAt(0);let l=0;return l=["a","A","z","Z","0","1","9"].includes(s)?4:s.match(/\d/)?10:26,n||(l*=2),l*d.length},spatial:({graph:d,token:n,shiftedCount:s,turns:l})=>{let c=(({token:d,graph:n,turns:s})=>{const l=Object.keys(j.graphs[n]).length,c=(d=>{let n=0;return Object.keys(d).forEach(s=>{n+=d[s].filter(c=>!!c).length}),n/=Object.entries(d).length,n})(j.graphs[n]);let m=0;const u=d.length;for(let b=2;b<=u;b+=1){const y=Math.min(s,b-1);for(let v=1;v<=y;v+=1)m+=de.nCk(b-1,v-1)*l*c**v}return m})({token:n,graph:d,turns:l});if(s){const m=n.length-s;if(0===s||0===m)c*=2;else{let u=0;for(let b=1;b<=Math.min(s,m);b+=1)u+=de.nCk(s+m,b);c*=u}}return Math.round(c)},separator:()=>X};const U={password:"",optimal:{},excludeAdditive:!1,separatorRegex:void 0,fillArray(d,n){const s=[];for(let l=0;l<d;l+=1){let c=[];"object"===n&&(c={}),s.push(c)}return s},makeBruteforceMatch(d,n){return{pattern:"bruteforce",token:this.password.slice(d,+n+1||9e9),i:d,j:n}},update(d,n){const s=d.j,l=((d,n)=>{const s={};if("guesses"in d&&null!=d.guesses)return d;const l=((d,n)=>{let s=1;return d.token.length<n.length&&(s=1===d.token.length?10:50),s})(d,n),c=((d,n)=>ra[d]?ra[d](n):j.matchers[d]&&"scoring"in j.matchers[d]?j.matchers[d].scoring(n):0)(d.pattern,d);let m=0;"number"==typeof c?m=c:"dictionary"===d.pattern&&(m=c.calculation,s.baseGuesses=c.baseGuesses,s.uppercaseVariations=c.uppercaseVariations,s.l33tVariations=c.l33tVariations);const u=Math.max(m,l);return{...d,...s,guesses:u,guessesLog10:de.log10(u)}})(d,this.password);let c=l.guesses;n>1&&(c*=this.optimal.pi[l.i-1][n-1]);let m=de.factorial(n)*c;this.excludeAdditive||(m+=1e4**(n-1));let u=!1;Object.keys(this.optimal.g[s]).forEach(b=>{const y=this.optimal.g[s][b];parseInt(b,10)<=n&&y<=m&&(u=!0)}),u||(this.optimal.g[s][n]=m,this.optimal.m[s][n]=l,this.optimal.pi[s][n]=c)},bruteforceUpdate(d){let n=this.makeBruteforceMatch(0,d);this.update(n,1);for(let s=1;s<=d;s+=1){n=this.makeBruteforceMatch(s,d);const l=this.optimal.m[s-1];Object.keys(l).forEach(c=>{"bruteforce"!==l[c].pattern&&this.update(n,parseInt(c,10)+1)})}},unwind(d){const n=[];let s=d-1,l=0,c=1/0;const m=this.optimal.g[s];for(m&&Object.keys(m).forEach(u=>{const b=m[u];b<c&&(l=parseInt(u,10),c=b)});s>=0;){const u=this.optimal.m[s][l];n.unshift(u),s=u.i-1,l-=1}return n}};var Ve={mostGuessableMatchSequence(d,n,s=!1){U.password=d,U.excludeAdditive=s;const l=d.length;let c=U.fillArray(l,"array");n.forEach(y=>{c[y.j].push(y)}),c=c.map(y=>y.sort((v,x)=>v.i-x.i)),U.optimal={m:U.fillArray(l,"object"),pi:U.fillArray(l,"object"),g:U.fillArray(l,"object")};for(let y=0;y<l;y+=1)c[y].forEach(v=>{v.i>0?Object.keys(U.optimal.m[v.i-1]).forEach(x=>{U.update(v,parseInt(x,10)+1)}):U.update(v,1)}),U.bruteforceUpdate(y);const m=U.unwind(l),b=this.getGuesses(d,m.length);return{password:d,guesses:b,guessesLog10:de.log10(b),sequence:m}},getGuesses(d,n){let l=0;return l=0===d.length?1:U.optimal.g[d.length-1][n],l}};class Be{match({password:n,omniMatch:s}){const l=[];let c=0;for(;c<n.length;){const u=this.getGreedyMatch(n,c),b=this.getLazyMatch(n,c);if(null==u)break;const{match:y,baseToken:v}=this.setMatchToken(u,b);if(y){const x=y.index+y[0].length-1,D=this.getBaseGuesses(v,s);l.push(this.normalizeMatch(v,x,y,D)),c=x+1}}return l.some(u=>u instanceof Promise)?Promise.all(l):l}normalizeMatch(n,s,l,c){const m={pattern:"repeat",i:l.index,j:s,token:l[0],baseToken:n,baseGuesses:0,repeatCount:l[0].length/n.length};return c instanceof Promise?c.then(u=>({...m,baseGuesses:u})):{...m,baseGuesses:c}}getGreedyMatch(n,s){const l=/(.+)\1+/g;return l.lastIndex=s,l.exec(n)}getLazyMatch(n,s){const l=/(.+?)\1+/g;return l.lastIndex=s,l.exec(n)}setMatchToken(n,s){let c,m="";if(s&&n[0].length>s[0].length){c=n;const u=/^(.+?)\1+$/.exec(c[0]);u&&(m=u[1])}else c=s,c&&(m=c[1]);return{match:c,baseToken:m}}getBaseGuesses(n,s){const l=s.match(n);return l instanceof Promise?l.then(m=>Ve.mostGuessableMatchSequence(n,m).guesses):Ve.mostGuessableMatchSequence(n,l).guesses}}class Le{constructor(){this.MAX_DELTA=5}match({password:n}){const s=[];if(1===n.length)return[];let l=0,c=null;const m=n.length;for(let u=1;u<m;u+=1){const b=n.charCodeAt(u)-n.charCodeAt(u-1);if(null==c&&(c=b),b!==c){const y=u-1;this.update({i:l,j:y,delta:c,password:n,result:s}),l=y,c=b}}return this.update({i:l,j:m-1,delta:c,password:n,result:s}),s}update({i:n,j:s,delta:l,password:c,result:m}){if(s-n>1||1===Math.abs(l)){const u=Math.abs(l);if(u>0&&u<=this.MAX_DELTA){const b=c.slice(n,+s+1||9e9),{sequenceName:y,sequenceSpace:v}=this.getSequence(b);return m.push({pattern:"sequence",i:n,j:s,token:c.slice(n,+s+1||9e9),sequenceName:y,sequenceSpace:v,ascending:l>0})}}return null}getSequence(n){let s="unicode",l=26;return I.test(n)?(s="lower",l=26):ke.test(n)?(s="upper",l=26):P.test(n)&&(s="digits",l=10),{sequenceName:s,sequenceSpace:l}}}class Ca{constructor(){this.SHIFTED_RX=/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/}match({password:n}){const s=[];return Object.keys(j.graphs).forEach(l=>{o(s,this.helper(n,j.graphs[l],l))}),T(s)}checkIfShifted(n,s,l){return!n.includes("keypad")&&this.SHIFTED_RX.test(s.charAt(l))?1:0}helper(n,s,l){let c;const m=[];let u=0;const b=n.length;for(;u<b-1;){let y=u+1,v=null,x=0;for(c=this.checkIfShifted(l,n,u);;){const R=s[n.charAt(y-1)]||[];let B=!1,C=-1,N=-1;if(y<b){const ge=n.charAt(y),se=R.length;for(let S=0;S<se;S+=1){const be=R[S];if(N+=1,be){const me=be.indexOf(ge);if(-1!==me){B=!0,C=N,1===me&&(c+=1),v!==C&&(x+=1,v=C);break}}}}if(!B){y-u>2&&m.push({pattern:"spatial",i:u,j:y-1,token:n.slice(u,y),graph:l,turns:x,shiftedCount:c}),u=y;break}y+=1}}return m}}const ha=new RegExp(`[${O.join("")}]`);class we{static getMostUsedSeparatorChar(n){const s=[...n.split("").filter(c=>ha.test(c)).reduce((c,m)=>{const u=c.get(m);return c.set(m,u?u+1:1),c},new Map).entries()].sort(([c,m],[u,b])=>b-m);if(!s.length)return;const l=s[0];return l[1]<2?void 0:l[0]}static getSeparatorRegex(n){return new RegExp(`([^${n}\n])(${n})(?!${n})`,"g")}match({password:n}){const s=[];if(0===n.length)return s;const l=we.getMostUsedSeparatorChar(n);if(void 0===l)return s;const c=we.getSeparatorRegex(l);for(const m of n.matchAll(c)){if(void 0===m.index)continue;const u=m.index+1;s.push({pattern:"separator",token:l,i:u,j:u})}return s}}class ia{constructor(){this.matchers={date:ee,dictionary:Re,regex:Ke,repeat:Be,sequence:Le,spatial:Ca,separator:we}}match(n){const s=[],l=[];return[...Object.keys(this.matchers),...Object.keys(j.matchers)].forEach(m=>{if(!this.matchers[m]&&!j.matchers[m])return;const y=(new(this.matchers[m]?this.matchers[m]:j.matchers[m].Matching)).match({password:n,omniMatch:this});y instanceof Promise?(y.then(v=>{o(s,v)}),l.push(y)):o(s,y)}),l.length>0?new Promise((m,u)=>{Promise.all(l).then(()=>{m(T(s))}).catch(b=>{u(b)})}):T(s)}}const la={second:1,minute:60,hour:3600,day:86400,month:2678400,year:32140800,century:321408e4};class ya{translate(n,s){let l=n;void 0!==s&&1!==s&&(l+="s");const{timeEstimation:c}=j.translations;return c[l].replace("{base}",`${s}`)}estimateAttackTimes(n){const s={onlineThrottling100PerHour:n/.027777777777777776,onlineNoThrottling10PerSecond:n/10,offlineSlowHashing1e4PerSecond:n/1e4,offlineFastHashing1e10PerSecond:n/1e10},l={onlineThrottling100PerHour:"",onlineNoThrottling10PerSecond:"",offlineSlowHashing1e4PerSecond:"",offlineFastHashing1e10PerSecond:""};return Object.keys(s).forEach(c=>{l[c]=this.displayTime(s[c])}),{crackTimesSeconds:s,crackTimesDisplay:l,score:this.guessesToScore(n)}}guessesToScore(n){return n<1005?0:n<1000005?1:n<100000005?2:n<10000000005?3:4}displayTime(n){let l,s="centuries";const c=Object.keys(la),m=c.findIndex(u=>n<la[u]);return m>-1&&(s=c[m-1],0!==m?l=Math.round(n/la[s]):s="ltSecond"),this.translate(s,l)}}var ta=()=>null,Ce=()=>({warning:j.translations.warnings.dates,suggestions:[j.translations.suggestions.dates]});var ca=(d,n)=>{const s=((d,n)=>{let s=null;const l=d.dictionaryName,c="lastnames"===l||l.toLowerCase().includes("firstnames");return"passwords"===l?s=((d,n)=>{let s=null;return!n||d.l33t||d.reversed?d.guessesLog10<=4&&(s=j.translations.warnings.similarToCommon):s=d.rank<=10?j.translations.warnings.topTen:d.rank<=100?j.translations.warnings.topHundred:j.translations.warnings.common,s})(d,n):l.includes("wikipedia")?s=((d,n)=>{let s=null;return n&&(s=j.translations.warnings.wordByItself),s})(0,n):c?s=((d,n)=>n?j.translations.warnings.namesByThemselves:j.translations.warnings.commonNames)(0,n):"userInputs"===l&&(s=j.translations.warnings.userInputs),s})(d,n),l=[],c=d.token;return c.match(W)?l.push(j.translations.suggestions.capitalization):c.match(Z)&&c.toLowerCase()!==c&&l.push(j.translations.suggestions.allUppercase),d.reversed&&d.token.length>=4&&l.push(j.translations.suggestions.reverseWords),d.l33t&&l.push(j.translations.suggestions.l33t),{warning:s,suggestions:l}},He=d=>"recentYear"===d.regexName?{warning:j.translations.warnings.recentYears,suggestions:[j.translations.suggestions.recentYears,j.translations.suggestions.associatedYears]}:{warning:null,suggestions:[]},da=d=>{let n=j.translations.warnings.extendedRepeat;return 1===d.baseToken.length&&(n=j.translations.warnings.simpleRepeat),{warning:n,suggestions:[j.translations.suggestions.repeated]}},ma=()=>({warning:j.translations.warnings.sequences,suggestions:[j.translations.suggestions.sequences]}),Aa=d=>{let n=j.translations.warnings.keyPattern;return 1===d.turns&&(n=j.translations.warnings.straightRow),{warning:n,suggestions:[j.translations.suggestions.longerKeyboardPattern]}},pa=()=>null;const Ue={warning:null,suggestions:[]};class Ea{constructor(){this.matchers={bruteforce:ta,date:Ce,dictionary:ca,regex:He,repeat:da,sequence:ma,spatial:Aa,separator:pa},this.defaultFeedback={warning:null,suggestions:[]},this.setDefaultSuggestions()}setDefaultSuggestions(){this.defaultFeedback.suggestions.push(j.translations.suggestions.useWords,j.translations.suggestions.noNeed)}getFeedback(n,s){if(0===s.length)return this.defaultFeedback;if(n>2)return Ue;const l=j.translations.suggestions.anotherWord,c=this.getLongestMatch(s);let m=this.getMatchFeedback(c,1===s.length);return null!=m?m.suggestions.unshift(l):m={warning:null,suggestions:[l]},m}getLongestMatch(n){let s=n[0];return n.slice(1).forEach(c=>{c.token.length>s.token.length&&(s=c)}),s}getMatchFeedback(n,s){return this.matchers[n.pattern]?this.matchers[n.pattern](n,s):j.matchers[n.pattern]&&"feedback"in j.matchers[n.pattern]?j.matchers[n.pattern].feedback(n,s):Ue}}const va=()=>(new Date).getTime(),za=(d,n)=>{const s=va(),l=((d,n)=>(n&&j.extendUserInputsDictionary(n),(new ia).match(d)))(d,n);if(l instanceof Promise)throw new Error("You are using a Promised matcher, please use `zxcvbnAsync` for it.");return((d,n,s)=>{const l=new Ea,c=new ya,m=Ve.mostGuessableMatchSequence(n,d),u=va()-s,b=c.estimateAttackTimes(m.guesses);return{calcTime:u,...m,...b,feedback:l.getFeedback(b.score,m.sequence)}})(l,d,s)}},93935:(Me,$,q)=>{q.d($,{x:()=>Q,F:()=>ae});const ae={diceware:"abacus,abdomen,abdominal,abide,abiding,ability,ablaze,able,abnormal,abrasion,abrasive,abreast,abridge,abroad,abruptly,absence,absentee,absently,absinthe,absolute,absolve,abstain,abstract,absurd,accent,acclaim,acclimate,accompany,account,accuracy,accurate,accustom,acetone,achiness,aching,acid,acorn,acquaint,acquire,acre,acrobat,acronym,acting,action,activate,activator,active,activism,activist,activity,actress,acts,acutely,acuteness,aeration,aerobics,aerosol,aerospace,afar,affair,affected,affecting,affection,affidavit,affiliate,affirm,affix,afflicted,affluent,afford,affront,aflame,afloat,aflutter,afoot,afraid,afterglow,afterlife,aftermath,aftermost,afternoon,aged,ageless,agency,agenda,agent,aggregate,aghast,agile,agility,aging,agnostic,agonize,agonizing,agony,agreeable,agreeably,agreed,agreeing,agreement,aground,ahead,ahoy,aide,aids,aim,ajar,alabaster,alarm,albatross,album,alfalfa,algebra,algorithm,alias,alibi,alienable,alienate,aliens,alike,alive,alkaline,alkalize,almanac,almighty,almost,aloe,aloft,aloha,alone,alongside,aloof,alphabet,alright,although,altitude,alto,aluminum,alumni,always,amaretto,amaze,amazingly,amber,ambiance,ambiguity,ambiguous,ambition,ambitious,ambulance,ambush,amendable,amendment,amends,amenity,amiable,amicably,amid,amigo,amino,amiss,ammonia,ammonium,amnesty,amniotic,among,amount,amperage,ample,amplifier,amplify,amply,amuck,amulet,amusable,amused,amusement,amuser,amusing,anaconda,anaerobic,anagram,anatomist,anatomy,anchor,anchovy,ancient,android,anemia,anemic,aneurism,anew,angelfish,angelic,anger,angled,angler,angles,angling,angrily,angriness,anguished,angular,animal,animate,animating,animation,animator,anime,animosity,ankle,annex,annotate,announcer,annoying,annually,annuity,anointer,another,answering,antacid,antarctic,anteater,antelope,antennae,anthem,anthill,anthology,antibody,antics,antidote,antihero,antiquely,antiques,antiquity,antirust,antitoxic,antitrust,antiviral,antivirus,antler,antonym,antsy,anvil,anybody,anyhow,anymore,anyone,anyplace,anything,anytime,anyway,anywhere,aorta,apache,apostle,appealing,appear,appease,appeasing,appendage,appendix,appetite,appetizer,applaud,applause,apple,appliance,applicant,applied,apply,appointee,appraisal,appraiser,apprehend,approach,approval,approve,apricot,april,apron,aptitude,aptly,aqua,aqueduct,arbitrary,arbitrate,ardently,area,arena,arguable,arguably,argue,arise,armadillo,armband,armchair,armed,armful,armhole,arming,armless,armoire,armored,armory,armrest,army,aroma,arose,around,arousal,arrange,array,arrest,arrival,arrive,arrogance,arrogant,arson,art,ascend,ascension,ascent,ascertain,ashamed,ashen,ashes,ashy,aside,askew,asleep,asparagus,aspect,aspirate,aspire,aspirin,astonish,astound,astride,astrology,astronaut,astronomy,astute,atlantic,atlas,atom,atonable,atop,atrium,atrocious,atrophy,attach,attain,attempt,attendant,attendee,attention,attentive,attest,attic,attire,attitude,attractor,attribute,atypical,auction,audacious,audacity,audible,audibly,audience,audio,audition,augmented,august,authentic,author,autism,autistic,autograph,automaker,automated,automatic,autopilot,available,avalanche,avatar,avenge,avenging,avenue,average,aversion,avert,aviation,aviator,avid,avoid,await,awaken,award,aware,awhile,awkward,awning,awoke,awry,axis,babble,babbling,babied,baboon,backache,backboard,backboned,backdrop,backed,backer,backfield,backfire,backhand,backing,backlands,backlash,backless,backlight,backlit,backlog,backpack,backpedal,backrest,backroom,backshift,backside,backslid,backspace,backspin,backstab,backstage,backtalk,backtrack,backup,backward,backwash,backwater,backyard,bacon,bacteria,bacterium,badass,badge,badland,badly,badness,baffle,baffling,bagel,bagful,baggage,bagged,baggie,bagginess,bagging,baggy,bagpipe,baguette,baked,bakery,bakeshop,baking,balance,balancing,balcony,balmy,balsamic,bamboo,banana,banish,banister,banjo,bankable,bankbook,banked,banker,banking,banknote,bankroll,banner,bannister,banshee,banter,barbecue,barbed,barbell,barber,barcode,barge,bargraph,barista,baritone,barley,barmaid,barman,barn,barometer,barrack,barracuda,barrel,barrette,barricade,barrier,barstool,bartender,barterer,bash,basically,basics,basil,basin,basis,basket,batboy,batch,bath,baton,bats,battalion,battered,battering,battery,batting,battle,bauble,bazooka,blabber,bladder,blade,blah,blame,blaming,blanching,blandness,blank,blaspheme,blasphemy,blast,blatancy,blatantly,blazer,blazing,bleach,bleak,bleep,blemish,blend,bless,blighted,blimp,bling,blinked,blinker,blinking,blinks,blip,blissful,blitz,blizzard,bloated,bloating,blob,blog,bloomers,blooming,blooper,blot,blouse,blubber,bluff,bluish,blunderer,blunt,blurb,blurred,blurry,blurt,blush,blustery,boaster,boastful,boasting,boat,bobbed,bobbing,bobble,bobcat,bobsled,bobtail,bodacious,body,bogged,boggle,bogus,boil,bok,bolster,bolt,bonanza,bonded,bonding,bondless,boned,bonehead,boneless,bonelike,boney,bonfire,bonnet,bonsai,bonus,bony,boogeyman,boogieman,book,boondocks,booted,booth,bootie,booting,bootlace,bootleg,boots,boozy,borax,boring,borough,borrower,borrowing,boss,botanical,botanist,botany,botch,both,bottle,bottling,bottom,bounce,bouncing,bouncy,bounding,boundless,bountiful,bovine,boxcar,boxer,boxing,boxlike,boxy,breach,breath,breeches,breeching,breeder,breeding,breeze,breezy,brethren,brewery,brewing,briar,bribe,brick,bride,bridged,brigade,bright,brilliant,brim,bring,brink,brisket,briskly,briskness,bristle,brittle,broadband,broadcast,broaden,broadly,broadness,broadside,broadways,broiler,broiling,broken,broker,bronchial,bronco,bronze,bronzing,brook,broom,brought,browbeat,brownnose,browse,browsing,bruising,brunch,brunette,brunt,brush,brussels,brute,brutishly,bubble,bubbling,bubbly,buccaneer,bucked,bucket,buckle,buckshot,buckskin,bucktooth,buckwheat,buddhism,buddhist,budding,buddy,budget,buffalo,buffed,buffer,buffing,buffoon,buggy,bulb,bulge,bulginess,bulgur,bulk,bulldog,bulldozer,bullfight,bullfrog,bullhorn,bullion,bullish,bullpen,bullring,bullseye,bullwhip,bully,bunch,bundle,bungee,bunion,bunkbed,bunkhouse,bunkmate,bunny,bunt,busboy,bush,busily,busload,bust,busybody,buzz,cabana,cabbage,cabbie,cabdriver,cable,caboose,cache,cackle,cacti,cactus,caddie,caddy,cadet,cadillac,cadmium,cage,cahoots,cake,calamari,calamity,calcium,calculate,calculus,caliber,calibrate,calm,caloric,calorie,calzone,camcorder,cameo,camera,camisole,camper,campfire,camping,campsite,campus,canal,canary,cancel,candied,candle,candy,cane,canine,canister,cannabis,canned,canning,cannon,cannot,canola,canon,canopener,canopy,canteen,canyon,capable,capably,capacity,cape,capillary,capital,capitol,capped,capricorn,capsize,capsule,caption,captivate,captive,captivity,capture,caramel,carat,caravan,carbon,cardboard,carded,cardiac,cardigan,cardinal,cardstock,carefully,caregiver,careless,caress,caretaker,cargo,caring,carless,carload,carmaker,carnage,carnation,carnival,carnivore,carol,carpenter,carpentry,carpool,carport,carried,carrot,carrousel,carry,cartel,cartload,carton,cartoon,cartridge,cartwheel,carve,carving,carwash,cascade,case,cash,casing,casino,casket,cassette,casually,casualty,catacomb,catalog,catalyst,catalyze,catapult,cataract,catatonic,catcall,catchable,catcher,catching,catchy,caterer,catering,catfight,catfish,cathedral,cathouse,catlike,catnap,catnip,catsup,cattail,cattishly,cattle,catty,catwalk,caucasian,caucus,causal,causation,cause,causing,cauterize,caution,cautious,cavalier,cavalry,caviar,cavity,cedar,celery,celestial,celibacy,celibate,celtic,cement,census,ceramics,ceremony,certainly,certainty,certified,certify,cesarean,cesspool,chafe,chaffing,chain,chair,chalice,challenge,chamber,chamomile,champion,chance,change,channel,chant,chaos,chaperone,chaplain,chapped,chaps,chapter,character,charbroil,charcoal,charger,charging,chariot,charity,charm,charred,charter,charting,chase,chasing,chaste,chastise,chastity,chatroom,chatter,chatting,chatty,cheating,cheddar,cheek,cheer,cheese,cheesy,chef,chemicals,chemist,chemo,cherisher,cherub,chess,chest,chevron,chevy,chewable,chewer,chewing,chewy,chief,chihuahua,childcare,childhood,childish,childless,childlike,chili,chill,chimp,chip,chirping,chirpy,chitchat,chivalry,chive,chloride,chlorine,choice,chokehold,choking,chomp,chooser,choosing,choosy,chop,chosen,chowder,chowtime,chrome,chubby,chuck,chug,chummy,chump,chunk,churn,chute,cider,cilantro,cinch,cinema,cinnamon,circle,circling,circular,circulate,circus,citable,citadel,citation,citizen,citric,citrus,city,civic,civil,clad,claim,clambake,clammy,clamor,clamp,clamshell,clang,clanking,clapped,clapper,clapping,clarify,clarinet,clarity,clash,clasp,class,clatter,clause,clavicle,claw,clay,clean,clear,cleat,cleaver,cleft,clench,clergyman,clerical,clerk,clever,clicker,client,climate,climatic,cling,clinic,clinking,clip,clique,cloak,clobber,clock,clone,cloning,closable,closure,clothes,clothing,cloud,clover,clubbed,clubbing,clubhouse,clump,clumsily,clumsy,clunky,clustered,clutch,clutter,coach,coagulant,coastal,coaster,coasting,coastland,coastline,coat,coauthor,cobalt,cobbler,cobweb,cocoa,coconut,cod,coeditor,coerce,coexist,coffee,cofounder,cognition,cognitive,cogwheel,coherence,coherent,cohesive,coil,coke,cola,cold,coleslaw,coliseum,collage,collapse,collar,collected,collector,collide,collie,collision,colonial,colonist,colonize,colony,colossal,colt,coma,come,comfort,comfy,comic,coming,comma,commence,commend,comment,commerce,commode,commodity,commodore,common,commotion,commute,commuting,compacted,compacter,compactly,compactor,companion,company,compare,compel,compile,comply,component,composed,composer,composite,compost,composure,compound,compress,comprised,computer,computing,comrade,concave,conceal,conceded,concept,concerned,concert,conch,concierge,concise,conclude,concrete,concur,condense,condiment,condition,condone,conducive,conductor,conduit,cone,confess,confetti,confidant,confident,confider,confiding,configure,confined,confining,confirm,conflict,conform,confound,confront,confused,confusing,confusion,congenial,congested,congrats,congress,conical,conjoined,conjure,conjuror,connected,connector,consensus,consent,console,consoling,consonant,constable,constant,constrain,constrict,construct,consult,consumer,consuming,contact,container,contempt,contend,contented,contently,contents,contest,context,contort,contour,contrite,control,contusion,convene,convent,copartner,cope,copied,copier,copilot,coping,copious,copper,copy,coral,cork,cornball,cornbread,corncob,cornea,corned,corner,cornfield,cornflake,cornhusk,cornmeal,cornstalk,corny,coronary,coroner,corporal,corporate,corral,correct,corridor,corrode,corroding,corrosive,corsage,corset,cortex,cosigner,cosmetics,cosmic,cosmos,cosponsor,cost,cottage,cotton,couch,cough,could,countable,countdown,counting,countless,country,county,courier,covenant,cover,coveted,coveting,coyness,cozily,coziness,cozy,crabbing,crabgrass,crablike,crabmeat,cradle,cradling,crafter,craftily,craftsman,craftwork,crafty,cramp,cranberry,crane,cranial,cranium,crank,crate,crave,craving,crawfish,crawlers,crawling,crayfish,crayon,crazed,crazily,craziness,crazy,creamed,creamer,creamlike,crease,creasing,creatable,create,creation,creative,creature,credible,credibly,credit,creed,creme,creole,crepe,crept,crescent,crested,cresting,crestless,crevice,crewless,crewman,crewmate,crib,cricket,cried,crier,crimp,crimson,cringe,cringing,crinkle,crinkly,crisped,crisping,crisply,crispness,crispy,criteria,critter,croak,crock,crook,croon,crop,cross,crouch,crouton,crowbar,crowd,crown,crucial,crudely,crudeness,cruelly,cruelness,cruelty,crumb,crummiest,crummy,crumpet,crumpled,cruncher,crunching,crunchy,crusader,crushable,crushed,crusher,crushing,crust,crux,crying,cryptic,crystal,cubbyhole,cube,cubical,cubicle,cucumber,cuddle,cuddly,cufflink,culinary,culminate,culpable,culprit,cultivate,cultural,culture,cupbearer,cupcake,cupid,cupped,cupping,curable,curator,curdle,cure,curfew,curing,curled,curler,curliness,curling,curly,curry,curse,cursive,cursor,curtain,curtly,curtsy,curvature,curve,curvy,cushy,cusp,cussed,custard,custodian,custody,customary,customer,customize,customs,cut,cycle,cyclic,cycling,cyclist,cylinder,cymbal,cytoplasm,cytoplast,dab,dad,daffodil,dagger,daily,daintily,dainty,dairy,daisy,dallying,dance,dancing,dandelion,dander,dandruff,dandy,danger,dangle,dangling,daredevil,dares,daringly,darkened,darkening,darkish,darkness,darkroom,darling,darn,dart,darwinism,dash,dastardly,data,datebook,dating,daughter,daunting,dawdler,dawn,daybed,daybreak,daycare,daydream,daylight,daylong,dayroom,daytime,dazzler,dazzling,deacon,deafening,deafness,dealer,dealing,dealmaker,dealt,dean,debatable,debate,debating,debit,debrief,debtless,debtor,debug,debunk,decade,decaf,decal,decathlon,decay,deceased,deceit,deceiver,deceiving,december,decency,decent,deception,deceptive,decibel,decidable,decimal,decimeter,decipher,deck,declared,decline,decode,decompose,decorated,decorator,decoy,decrease,decree,dedicate,dedicator,deduce,deduct,deed,deem,deepen,deeply,deepness,deface,defacing,defame,default,defeat,defection,defective,defendant,defender,defense,defensive,deferral,deferred,defiance,defiant,defile,defiling,define,definite,deflate,deflation,deflator,deflected,deflector,defog,deforest,defraud,defrost,deftly,defuse,defy,degraded,degrading,degrease,degree,dehydrate,deity,dejected,delay,delegate,delegator,delete,deletion,delicacy,delicate,delicious,delighted,delirious,delirium,deliverer,delivery,delouse,delta,deluge,delusion,deluxe,demanding,demeaning,demeanor,demise,democracy,democrat,demote,demotion,demystify,denatured,deniable,denial,denim,denote,dense,density,dental,dentist,denture,deny,deodorant,deodorize,departed,departure,depict,deplete,depletion,deplored,deploy,deport,depose,depraved,depravity,deprecate,depress,deprive,depth,deputize,deputy,derail,deranged,derby,derived,desecrate,deserve,deserving,designate,designed,designer,designing,deskbound,desktop,deskwork,desolate,despair,despise,despite,destiny,destitute,destruct,detached,detail,detection,detective,detector,detention,detergent,detest,detonate,detonator,detoxify,detract,deuce,devalue,deviancy,deviant,deviate,deviation,deviator,device,devious,devotedly,devotee,devotion,devourer,devouring,devoutly,dexterity,dexterous,diabetes,diabetic,diabolic,diagnoses,diagnosis,diagram,dial,diameter,diaper,diaphragm,diary,dice,dicing,dictate,dictation,dictator,difficult,diffused,diffuser,diffusion,diffusive,dig,dilation,diligence,diligent,dill,dilute,dime,diminish,dimly,dimmed,dimmer,dimness,dimple,diner,dingbat,dinghy,dinginess,dingo,dingy,dining,dinner,diocese,dioxide,diploma,dipped,dipper,dipping,directed,direction,directive,directly,directory,direness,dirtiness,disabled,disagree,disallow,disarm,disarray,disaster,disband,disbelief,disburse,discard,discern,discharge,disclose,discolor,discount,discourse,discover,discuss,disdain,disengage,disfigure,disgrace,dish,disinfect,disjoin,disk,dislike,disliking,dislocate,dislodge,disloyal,dismantle,dismay,dismiss,dismount,disobey,disorder,disown,disparate,disparity,dispatch,dispense,dispersal,dispersed,disperser,displace,display,displease,disposal,dispose,disprove,dispute,disregard,disrupt,dissuade,distance,distant,distaste,distill,distinct,distort,distract,distress,district,distrust,ditch,ditto,ditzy,dividable,divided,dividend,dividers,dividing,divinely,diving,divinity,divisible,divisibly,division,divisive,divorcee,dizziness,dizzy,doable,docile,dock,doctrine,document,dodge,dodgy,doily,doing,dole,dollar,dollhouse,dollop,dolly,dolphin,domain,domelike,domestic,dominion,dominoes,donated,donation,donator,donor,donut,doodle,doorbell,doorframe,doorknob,doorman,doormat,doornail,doorpost,doorstep,doorstop,doorway,doozy,dork,dormitory,dorsal,dosage,dose,dotted,doubling,douche,dove,down,dowry,doze,drab,dragging,dragonfly,dragonish,dragster,drainable,drainage,drained,drainer,drainpipe,dramatic,dramatize,drank,drapery,drastic,draw,dreaded,dreadful,dreadlock,dreamboat,dreamily,dreamland,dreamless,dreamlike,dreamt,dreamy,drearily,dreary,drench,dress,drew,dribble,dried,drier,drift,driller,drilling,drinkable,drinking,dripping,drippy,drivable,driven,driver,driveway,driving,drizzle,drizzly,drone,drool,droop,dropdown,dropbox,dropkick,droplet,dropout,dropper,drove,drown,drowsily,drudge,drum,dry,dubbed,dubiously,duchess,duckbill,ducking,duckling,ducktail,ducky,duct,dude,duffel,dugout,duh,duke,duller,dullness,duly,dumping,dumpling,dumpster,duo,dupe,duplex,duplicate,duplicity,durable,durably,duration,duress,during,dusk,dust,dutiful,duty,duvet,dwarf,dweeb,dwelled,dweller,dwelling,dwindle,dwindling,dynamic,dynamite,dynasty,dyslexia,dyslexic,each,eagle,earache,eardrum,earflap,earful,earlobe,early,earmark,earmuff,earphone,earpiece,earplugs,earring,earshot,earthen,earthlike,earthling,earthly,earthworm,earthy,earwig,easeful,easel,easiest,easily,easiness,easing,eastbound,eastcoast,easter,eastward,eatable,eaten,eatery,eating,eats,ebay,ebony,ebook,ecard,eccentric,echo,eclair,eclipse,ecologist,ecology,economic,economist,economy,ecosphere,ecosystem,edge,edginess,edging,edgy,edition,editor,educated,education,educator,eel,effective,effects,efficient,effort,eggbeater,egging,eggnog,eggplant,eggshell,egomaniac,egotism,egotistic,either,eject,elaborate,elastic,elated,elbow,eldercare,elderly,eldest,electable,election,elective,elephant,elevate,elevating,elevation,elevator,eleven,elf,eligible,eligibly,eliminate,elite,elitism,elixir,elk,ellipse,elliptic,elm,elongated,elope,eloquence,eloquent,elsewhere,elude,elusive,elves,email,embargo,embark,embassy,embattled,embellish,ember,embezzle,emblaze,emblem,embody,embolism,emboss,embroider,emcee,emerald,emergency,emission,emit,emote,emoticon,emotion,empathic,empathy,emperor,emphases,emphasis,emphasize,emphatic,empirical,employed,employee,employer,emporium,empower,emptier,emptiness,empty,emu,enable,enactment,enamel,enchanted,enchilada,encircle,enclose,enclosure,encode,encore,encounter,encourage,encroach,encrust,encrypt,endanger,endeared,endearing,ended,ending,endless,endnote,endocrine,endorphin,endorse,endowment,endpoint,endurable,endurance,enduring,energetic,energize,energy,enforced,enforcer,engaged,engaging,engine,engorge,engraved,engraver,engraving,engross,engulf,enhance,enigmatic,enjoyable,enjoyably,enjoyer,enjoying,enjoyment,enlarged,enlarging,enlighten,enlisted,enquirer,enrage,enrich,enroll,enslave,ensnare,ensure,entail,entangled,entering,entertain,enticing,entire,entitle,entity,entomb,entourage,entrap,entree,entrench,entrust,entryway,entwine,enunciate,envelope,enviable,enviably,envious,envision,envoy,envy,enzyme,epic,epidemic,epidermal,epidermis,epidural,epilepsy,epileptic,epilogue,epiphany,episode,equal,equate,equation,equator,equinox,equipment,equity,equivocal,eradicate,erasable,erased,eraser,erasure,ergonomic,errand,errant,erratic,error,erupt,escalate,escalator,escapable,escapade,escapist,escargot,eskimo,esophagus,espionage,espresso,esquire,essay,essence,essential,establish,estate,esteemed,estimate,estimator,estranged,estrogen,etching,eternal,eternity,ethanol,ether,ethically,ethics,euphemism,evacuate,evacuee,evade,evaluate,evaluator,evaporate,evasion,evasive,even,everglade,evergreen,everybody,everyday,everyone,evict,evidence,evident,evil,evoke,evolution,evolve,exact,exalted,example,excavate,excavator,exceeding,exception,excess,exchange,excitable,exciting,exclaim,exclude,excluding,exclusion,exclusive,excretion,excretory,excursion,excusable,excusably,excuse,exemplary,exemplify,exemption,exerciser,exert,exes,exfoliate,exhale,exhaust,exhume,exile,existing,exit,exodus,exonerate,exorcism,exorcist,expand,expanse,expansion,expansive,expectant,expedited,expediter,expel,expend,expenses,expensive,expert,expire,expiring,explain,expletive,explicit,explode,exploit,explore,exploring,exponent,exporter,exposable,expose,exposure,express,expulsion,exquisite,extended,extending,extent,extenuate,exterior,external,extinct,extortion,extradite,extras,extrovert,extrude,extruding,exuberant,fable,fabric,fabulous,facebook,facecloth,facedown,faceless,facelift,faceplate,faceted,facial,facility,facing,facsimile,faction,factoid,factor,factsheet,factual,faculty,fade,fading,failing,falcon,fall,false,falsify,fame,familiar,family,famine,famished,fanatic,fancied,fanciness,fancy,fanfare,fang,fanning,fantasize,fantastic,fantasy,fascism,fastball,faster,fasting,fastness,faucet,favorable,favorably,favored,favoring,favorite,fax,feast,federal,fedora,feeble,feed,feel,feisty,feline,felttip,feminine,feminism,feminist,feminize,femur,fence,fencing,fender,ferment,fernlike,ferocious,ferocity,ferret,ferris,ferry,fervor,fester,festival,festive,festivity,fetal,fetch,fever,fiber,fiction,fiddle,fiddling,fidelity,fidgeting,fidgety,fifteen,fifth,fiftieth,fifty,figment,figure,figurine,filing,filled,filler,filling,film,filter,filth,filtrate,finale,finalist,finalize,finally,finance,financial,finch,fineness,finer,finicky,finished,finisher,finishing,finite,finless,finlike,fiscally,fit,five,flaccid,flagman,flagpole,flagship,flagstick,flagstone,flail,flakily,flaky,flame,flammable,flanked,flanking,flannels,flap,flaring,flashback,flashbulb,flashcard,flashily,flashing,flashy,flask,flatbed,flatfoot,flatly,flatness,flatten,flattered,flatterer,flattery,flattop,flatware,flatworm,flavored,flavorful,flavoring,flaxseed,fled,fleshed,fleshy,flick,flier,flight,flinch,fling,flint,flip,flirt,float,flock,flogging,flop,floral,florist,floss,flounder,flyable,flyaway,flyer,flying,flyover,flypaper,foam,foe,fog,foil,folic,folk,follicle,follow,fondling,fondly,fondness,fondue,font,food,fool,footage,football,footbath,footboard,footer,footgear,foothill,foothold,footing,footless,footman,footnote,footpad,footpath,footprint,footrest,footsie,footsore,footwear,footwork,fossil,foster,founder,founding,fountain,fox,foyer,fraction,fracture,fragile,fragility,fragment,fragrance,fragrant,frail,frame,framing,frantic,fraternal,frayed,fraying,frays,freckled,freckles,freebase,freebee,freebie,freedom,freefall,freehand,freeing,freeload,freely,freemason,freeness,freestyle,freeware,freeway,freewill,freezable,freezing,freight,french,frenzied,frenzy,frequency,frequent,fresh,fretful,fretted,friction,friday,fridge,fried,friend,frighten,frightful,frigidity,frigidly,frill,fringe,frisbee,frisk,fritter,frivolous,frolic,from,front,frostbite,frosted,frostily,frosting,frostlike,frosty,froth,frown,frozen,fructose,frugality,frugally,fruit,frustrate,frying,gab,gaffe,gag,gainfully,gaining,gains,gala,gallantly,galleria,gallery,galley,gallon,gallows,gallstone,galore,galvanize,gambling,game,gaming,gamma,gander,gangly,gangrene,gangway,gap,garage,garbage,garden,gargle,garland,garlic,garment,garnet,garnish,garter,gas,gatherer,gathering,gating,gauging,gauntlet,gauze,gave,gawk,gazing,gear,gecko,geek,geiger,gem,gender,generic,generous,genetics,genre,gentile,gentleman,gently,gents,geography,geologic,geologist,geology,geometric,geometry,geranium,gerbil,geriatric,germicide,germinate,germless,germproof,gestate,gestation,gesture,getaway,getting,getup,giant,gibberish,giblet,giddily,giddiness,giddy,gift,gigabyte,gigahertz,gigantic,giggle,giggling,giggly,gigolo,gilled,gills,gimmick,girdle,giveaway,given,giver,giving,gizmo,gizzard,glacial,glacier,glade,gladiator,gladly,glamorous,glamour,glance,glancing,glandular,glare,glaring,glass,glaucoma,glazing,gleaming,gleeful,glider,gliding,glimmer,glimpse,glisten,glitch,glitter,glitzy,gloater,gloating,gloomily,gloomy,glorified,glorifier,glorify,glorious,glory,gloss,glove,glowing,glowworm,glucose,glue,gluten,glutinous,glutton,gnarly,gnat,goal,goatskin,goes,goggles,going,goldfish,goldmine,goldsmith,golf,goliath,gonad,gondola,gone,gong,good,gooey,goofball,goofiness,goofy,google,goon,gopher,gore,gorged,gorgeous,gory,gosling,gossip,gothic,gotten,gout,gown,grab,graceful,graceless,gracious,gradation,graded,grader,gradient,grading,gradually,graduate,graffiti,grafted,grafting,grain,granddad,grandkid,grandly,grandma,grandpa,grandson,granite,granny,granola,grant,granular,grape,graph,grapple,grappling,grasp,grass,gratified,gratify,grating,gratitude,gratuity,gravel,graveness,graves,graveyard,gravitate,gravity,gravy,gray,grazing,greasily,greedily,greedless,greedy,green,greeter,greeting,grew,greyhound,grid,grief,grievance,grieving,grievous,grill,grimace,grimacing,grime,griminess,grimy,grinch,grinning,grip,gristle,grit,groggily,groggy,groin,groom,groove,grooving,groovy,grope,ground,grouped,grout,grove,grower,growing,growl,grub,grudge,grudging,grueling,gruffly,grumble,grumbling,grumbly,grumpily,gr