github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/libkb/secwords.go (about)

     1  // Copyright 2015 Keybase, Inc. All rights reserved. Use of
     2  // this source code is governed by the included BSD license.
     3  
     4  package libkb
     5  
     6  import (
     7  	"crypto/rand"
     8  	"fmt"
     9  	"math"
    10  	"math/big"
    11  	"strings"
    12  )
    13  
    14  // SecWordList returns an array of words from secwords.  It
    15  // returns enough words to satisfy the desired entropy.
    16  func SecWordList(entropy int) ([]string, error) {
    17  	return secWordListN(secWordCount(entropy))
    18  }
    19  
    20  func secWordCount(entropy int) int {
    21  	return int(math.Ceil(float64(entropy) / math.Log2(float64(len(secwords)))))
    22  }
    23  
    24  // secWordListN returns n random words from secwords.
    25  func secWordListN(n int) ([]string, error) {
    26  	var res []string
    27  	max := big.NewInt(int64(len(secwords)))
    28  	for i := 0; i < n; i++ {
    29  		x, err := rand.Int(rand.Reader, max)
    30  		if err != nil {
    31  			return []string{}, err
    32  		}
    33  		res = append(res, secwords[x.Int64()])
    34  	}
    35  	return res, nil
    36  }
    37  
    38  func validPhrase(p string, entropies []int) error {
    39  
    40  	lens := make(map[int]bool)
    41  	for _, e := range entropies {
    42  		lens[secWordCount(e)] = true
    43  	}
    44  
    45  	words := strings.Split(p, " ")
    46  
    47  	if words[len(words)-1] == kexPhraseVersion {
    48  		words = words[:len(words)-1]
    49  	}
    50  
    51  	if !lens[len(words)] {
    52  		return fmt.Errorf("phrase had %d words, expected %v", len(words), entropies)
    53  	}
    54  	for _, w := range words {
    55  		if !ValidSecWord(w) {
    56  			return fmt.Errorf("word %q is not a valid word", w)
    57  		}
    58  	}
    59  	return nil
    60  }
    61  
    62  func ValidSecWord(w string) bool {
    63  	return secwordSet[w]
    64  }
    65  
    66  // SecWord returns the n'th word from the BIP-0039 list, mod the size
    67  // of the list.
    68  func SecWord(n int) string {
    69  	return secwords[n%len(secwords)]
    70  }
    71  
    72  // Wordlist from BIP0039:
    73  //
    74  //	https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
    75  var secwords = []string{
    76  	"abandon",
    77  	"ability",
    78  	"able",
    79  	"about",
    80  	"above",
    81  	"absent",
    82  	"absorb",
    83  	"abstract",
    84  	"absurd",
    85  	"abuse",
    86  	"access",
    87  	"accident",
    88  	"account",
    89  	"accuse",
    90  	"achieve",
    91  	"acid",
    92  	"acoustic",
    93  	"acquire",
    94  	"across",
    95  	"act",
    96  	"action",
    97  	"actor",
    98  	"actress",
    99  	"actual",
   100  	"adapt",
   101  	"add",
   102  	"addict",
   103  	"address",
   104  	"adjust",
   105  	"admit",
   106  	"adult",
   107  	"advance",
   108  	"advice",
   109  	"aerobic",
   110  	"affair",
   111  	"afford",
   112  	"afraid",
   113  	"again",
   114  	"age",
   115  	"agent",
   116  	"agree",
   117  	"ahead",
   118  	"aim",
   119  	"air",
   120  	"airport",
   121  	"aisle",
   122  	"alarm",
   123  	"album",
   124  	"alcohol",
   125  	"alert",
   126  	"alien",
   127  	"all",
   128  	"alley",
   129  	"allow",
   130  	"almost",
   131  	"alone",
   132  	"alpha",
   133  	"already",
   134  	"also",
   135  	"alter",
   136  	"always",
   137  	"amateur",
   138  	"amazing",
   139  	"among",
   140  	"amount",
   141  	"amused",
   142  	"analyst",
   143  	"anchor",
   144  	"ancient",
   145  	"anger",
   146  	"angle",
   147  	"angry",
   148  	"animal",
   149  	"ankle",
   150  	"announce",
   151  	"annual",
   152  	"another",
   153  	"answer",
   154  	"antenna",
   155  	"antique",
   156  	"anxiety",
   157  	"any",
   158  	"apart",
   159  	"apology",
   160  	"appear",
   161  	"apple",
   162  	"approve",
   163  	"april",
   164  	"arch",
   165  	"arctic",
   166  	"area",
   167  	"arena",
   168  	"argue",
   169  	"arm",
   170  	"armed",
   171  	"armor",
   172  	"army",
   173  	"around",
   174  	"arrange",
   175  	"arrest",
   176  	"arrive",
   177  	"arrow",
   178  	"art",
   179  	"artefact",
   180  	"artist",
   181  	"artwork",
   182  	"ask",
   183  	"aspect",
   184  	"assault",
   185  	"asset",
   186  	"assist",
   187  	"assume",
   188  	"asthma",
   189  	"athlete",
   190  	"atom",
   191  	"attack",
   192  	"attend",
   193  	"attitude",
   194  	"attract",
   195  	"auction",
   196  	"audit",
   197  	"august",
   198  	"aunt",
   199  	"author",
   200  	"auto",
   201  	"autumn",
   202  	"average",
   203  	"avocado",
   204  	"avoid",
   205  	"awake",
   206  	"aware",
   207  	"away",
   208  	"awesome",
   209  	"awful",
   210  	"awkward",
   211  	"axis",
   212  	"baby",
   213  	"bachelor",
   214  	"bacon",
   215  	"badge",
   216  	"bag",
   217  	"balance",
   218  	"balcony",
   219  	"ball",
   220  	"bamboo",
   221  	"banana",
   222  	"banner",
   223  	"bar",
   224  	"barely",
   225  	"bargain",
   226  	"barrel",
   227  	"base",
   228  	"basic",
   229  	"basket",
   230  	"battle",
   231  	"beach",
   232  	"bean",
   233  	"beauty",
   234  	"because",
   235  	"become",
   236  	"beef",
   237  	"before",
   238  	"begin",
   239  	"behave",
   240  	"behind",
   241  	"believe",
   242  	"below",
   243  	"belt",
   244  	"bench",
   245  	"benefit",
   246  	"best",
   247  	"betray",
   248  	"better",
   249  	"between",
   250  	"beyond",
   251  	"bicycle",
   252  	"bid",
   253  	"bike",
   254  	"bind",
   255  	"biology",
   256  	"bird",
   257  	"birth",
   258  	"bitter",
   259  	"black",
   260  	"blade",
   261  	"blame",
   262  	"blanket",
   263  	"blast",
   264  	"bleak",
   265  	"bless",
   266  	"blind",
   267  	"blood",
   268  	"blossom",
   269  	"blouse",
   270  	"blue",
   271  	"blur",
   272  	"blush",
   273  	"board",
   274  	"boat",
   275  	"body",
   276  	"boil",
   277  	"bomb",
   278  	"bone",
   279  	"bonus",
   280  	"book",
   281  	"boost",
   282  	"border",
   283  	"boring",
   284  	"borrow",
   285  	"boss",
   286  	"bottom",
   287  	"bounce",
   288  	"box",
   289  	"boy",
   290  	"bracket",
   291  	"brain",
   292  	"brand",
   293  	"brass",
   294  	"brave",
   295  	"bread",
   296  	"breeze",
   297  	"brick",
   298  	"bridge",
   299  	"brief",
   300  	"bright",
   301  	"bring",
   302  	"brisk",
   303  	"broccoli",
   304  	"broken",
   305  	"bronze",
   306  	"broom",
   307  	"brother",
   308  	"brown",
   309  	"brush",
   310  	"bubble",
   311  	"buddy",
   312  	"budget",
   313  	"buffalo",
   314  	"build",
   315  	"bulb",
   316  	"bulk",
   317  	"bullet",
   318  	"bundle",
   319  	"bunker",
   320  	"burden",
   321  	"burger",
   322  	"burst",
   323  	"bus",
   324  	"business",
   325  	"busy",
   326  	"butter",
   327  	"buyer",
   328  	"buzz",
   329  	"cabbage",
   330  	"cabin",
   331  	"cable",
   332  	"cactus",
   333  	"cage",
   334  	"cake",
   335  	"call",
   336  	"calm",
   337  	"camera",
   338  	"camp",
   339  	"can",
   340  	"canal",
   341  	"cancel",
   342  	"candy",
   343  	"cannon",
   344  	"canoe",
   345  	"canvas",
   346  	"canyon",
   347  	"capable",
   348  	"capital",
   349  	"captain",
   350  	"car",
   351  	"carbon",
   352  	"card",
   353  	"cargo",
   354  	"carpet",
   355  	"carry",
   356  	"cart",
   357  	"case",
   358  	"cash",
   359  	"casino",
   360  	"castle",
   361  	"casual",
   362  	"cat",
   363  	"catalog",
   364  	"catch",
   365  	"category",
   366  	"cattle",
   367  	"caught",
   368  	"cause",
   369  	"caution",
   370  	"cave",
   371  	"ceiling",
   372  	"celery",
   373  	"cement",
   374  	"census",
   375  	"century",
   376  	"cereal",
   377  	"certain",
   378  	"chair",
   379  	"chalk",
   380  	"champion",
   381  	"change",
   382  	"chaos",
   383  	"chapter",
   384  	"charge",
   385  	"chase",
   386  	"chat",
   387  	"cheap",
   388  	"check",
   389  	"cheese",
   390  	"chef",
   391  	"cherry",
   392  	"chest",
   393  	"chicken",
   394  	"chief",
   395  	"child",
   396  	"chimney",
   397  	"choice",
   398  	"choose",
   399  	"chronic",
   400  	"chuckle",
   401  	"chunk",
   402  	"churn",
   403  	"cigar",
   404  	"cinnamon",
   405  	"circle",
   406  	"citizen",
   407  	"city",
   408  	"civil",
   409  	"claim",
   410  	"clap",
   411  	"clarify",
   412  	"claw",
   413  	"clay",
   414  	"clean",
   415  	"clerk",
   416  	"clever",
   417  	"click",
   418  	"client",
   419  	"cliff",
   420  	"climb",
   421  	"clinic",
   422  	"clip",
   423  	"clock",
   424  	"clog",
   425  	"close",
   426  	"cloth",
   427  	"cloud",
   428  	"clown",
   429  	"club",
   430  	"clump",
   431  	"cluster",
   432  	"clutch",
   433  	"coach",
   434  	"coast",
   435  	"coconut",
   436  	"code",
   437  	"coffee",
   438  	"coil",
   439  	"coin",
   440  	"collect",
   441  	"color",
   442  	"column",
   443  	"combine",
   444  	"come",
   445  	"comfort",
   446  	"comic",
   447  	"common",
   448  	"company",
   449  	"concert",
   450  	"conduct",
   451  	"confirm",
   452  	"congress",
   453  	"connect",
   454  	"consider",
   455  	"control",
   456  	"convince",
   457  	"cook",
   458  	"cool",
   459  	"copper",
   460  	"copy",
   461  	"coral",
   462  	"core",
   463  	"corn",
   464  	"correct",
   465  	"cost",
   466  	"cotton",
   467  	"couch",
   468  	"country",
   469  	"couple",
   470  	"course",
   471  	"cousin",
   472  	"cover",
   473  	"coyote",
   474  	"crack",
   475  	"cradle",
   476  	"craft",
   477  	"cram",
   478  	"crane",
   479  	"crash",
   480  	"crater",
   481  	"crawl",
   482  	"crazy",
   483  	"cream",
   484  	"credit",
   485  	"creek",
   486  	"crew",
   487  	"cricket",
   488  	"crime",
   489  	"crisp",
   490  	"critic",
   491  	"crop",
   492  	"cross",
   493  	"crouch",
   494  	"crowd",
   495  	"crucial",
   496  	"cruel",
   497  	"cruise",
   498  	"crumble",
   499  	"crunch",
   500  	"crush",
   501  	"cry",
   502  	"crystal",
   503  	"cube",
   504  	"culture",
   505  	"cup",
   506  	"cupboard",
   507  	"curious",
   508  	"current",
   509  	"curtain",
   510  	"curve",
   511  	"cushion",
   512  	"custom",
   513  	"cute",
   514  	"cycle",
   515  	"dad",
   516  	"damage",
   517  	"damp",
   518  	"dance",
   519  	"danger",
   520  	"daring",
   521  	"dash",
   522  	"daughter",
   523  	"dawn",
   524  	"day",
   525  	"deal",
   526  	"debate",
   527  	"debris",
   528  	"decade",
   529  	"december",
   530  	"decide",
   531  	"decline",
   532  	"decorate",
   533  	"decrease",
   534  	"deer",
   535  	"defense",
   536  	"define",
   537  	"defy",
   538  	"degree",
   539  	"delay",
   540  	"deliver",
   541  	"demand",
   542  	"demise",
   543  	"denial",
   544  	"dentist",
   545  	"deny",
   546  	"depart",
   547  	"depend",
   548  	"deposit",
   549  	"depth",
   550  	"deputy",
   551  	"derive",
   552  	"describe",
   553  	"desert",
   554  	"design",
   555  	"desk",
   556  	"despair",
   557  	"destroy",
   558  	"detail",
   559  	"detect",
   560  	"develop",
   561  	"device",
   562  	"devote",
   563  	"diagram",
   564  	"dial",
   565  	"diamond",
   566  	"diary",
   567  	"dice",
   568  	"diesel",
   569  	"diet",
   570  	"differ",
   571  	"digital",
   572  	"dignity",
   573  	"dilemma",
   574  	"dinner",
   575  	"dinosaur",
   576  	"direct",
   577  	"dirt",
   578  	"disagree",
   579  	"discover",
   580  	"disease",
   581  	"dish",
   582  	"dismiss",
   583  	"disorder",
   584  	"display",
   585  	"distance",
   586  	"divert",
   587  	"divide",
   588  	"divorce",
   589  	"dizzy",
   590  	"doctor",
   591  	"document",
   592  	"dog",
   593  	"doll",
   594  	"dolphin",
   595  	"domain",
   596  	"donate",
   597  	"donkey",
   598  	"donor",
   599  	"door",
   600  	"dose",
   601  	"double",
   602  	"dove",
   603  	"draft",
   604  	"dragon",
   605  	"drama",
   606  	"drastic",
   607  	"draw",
   608  	"dream",
   609  	"dress",
   610  	"drift",
   611  	"drill",
   612  	"drink",
   613  	"drip",
   614  	"drive",
   615  	"drop",
   616  	"drum",
   617  	"dry",
   618  	"duck",
   619  	"dumb",
   620  	"dune",
   621  	"during",
   622  	"dust",
   623  	"dutch",
   624  	"duty",
   625  	"dwarf",
   626  	"dynamic",
   627  	"eager",
   628  	"eagle",
   629  	"early",
   630  	"earn",
   631  	"earth",
   632  	"easily",
   633  	"east",
   634  	"easy",
   635  	"echo",
   636  	"ecology",
   637  	"economy",
   638  	"edge",
   639  	"edit",
   640  	"educate",
   641  	"effort",
   642  	"egg",
   643  	"eight",
   644  	"either",
   645  	"elbow",
   646  	"elder",
   647  	"electric",
   648  	"elegant",
   649  	"element",
   650  	"elephant",
   651  	"elevator",
   652  	"elite",
   653  	"else",
   654  	"embark",
   655  	"embody",
   656  	"embrace",
   657  	"emerge",
   658  	"emotion",
   659  	"employ",
   660  	"empower",
   661  	"empty",
   662  	"enable",
   663  	"enact",
   664  	"end",
   665  	"endless",
   666  	"endorse",
   667  	"enemy",
   668  	"energy",
   669  	"enforce",
   670  	"engage",
   671  	"engine",
   672  	"enhance",
   673  	"enjoy",
   674  	"enlist",
   675  	"enough",
   676  	"enrich",
   677  	"enroll",
   678  	"ensure",
   679  	"enter",
   680  	"entire",
   681  	"entry",
   682  	"envelope",
   683  	"episode",
   684  	"equal",
   685  	"equip",
   686  	"era",
   687  	"erase",
   688  	"erode",
   689  	"erosion",
   690  	"error",
   691  	"erupt",
   692  	"escape",
   693  	"essay",
   694  	"essence",
   695  	"estate",
   696  	"eternal",
   697  	"ethics",
   698  	"evidence",
   699  	"evil",
   700  	"evoke",
   701  	"evolve",
   702  	"exact",
   703  	"example",
   704  	"excess",
   705  	"exchange",
   706  	"excite",
   707  	"exclude",
   708  	"excuse",
   709  	"execute",
   710  	"exercise",
   711  	"exhaust",
   712  	"exhibit",
   713  	"exile",
   714  	"exist",
   715  	"exit",
   716  	"exotic",
   717  	"expand",
   718  	"expect",
   719  	"expire",
   720  	"explain",
   721  	"expose",
   722  	"express",
   723  	"extend",
   724  	"extra",
   725  	"eye",
   726  	"eyebrow",
   727  	"fabric",
   728  	"face",
   729  	"faculty",
   730  	"fade",
   731  	"faint",
   732  	"faith",
   733  	"fall",
   734  	"false",
   735  	"fame",
   736  	"family",
   737  	"famous",
   738  	"fan",
   739  	"fancy",
   740  	"fantasy",
   741  	"farm",
   742  	"fashion",
   743  	"fat",
   744  	"fatal",
   745  	"father",
   746  	"fatigue",
   747  	"fault",
   748  	"favorite",
   749  	"feature",
   750  	"february",
   751  	"federal",
   752  	"fee",
   753  	"feed",
   754  	"feel",
   755  	"female",
   756  	"fence",
   757  	"festival",
   758  	"fetch",
   759  	"fever",
   760  	"few",
   761  	"fiber",
   762  	"fiction",
   763  	"field",
   764  	"figure",
   765  	"file",
   766  	"film",
   767  	"filter",
   768  	"final",
   769  	"find",
   770  	"fine",
   771  	"finger",
   772  	"finish",
   773  	"fire",
   774  	"firm",
   775  	"first",
   776  	"fiscal",
   777  	"fish",
   778  	"fit",
   779  	"fitness",
   780  	"fix",
   781  	"flag",
   782  	"flame",
   783  	"flash",
   784  	"flat",
   785  	"flavor",
   786  	"flee",
   787  	"flight",
   788  	"flip",
   789  	"float",
   790  	"flock",
   791  	"floor",
   792  	"flower",
   793  	"fluid",
   794  	"flush",
   795  	"fly",
   796  	"foam",
   797  	"focus",
   798  	"fog",
   799  	"foil",
   800  	"fold",
   801  	"follow",
   802  	"food",
   803  	"foot",
   804  	"force",
   805  	"forest",
   806  	"forget",
   807  	"fork",
   808  	"fortune",
   809  	"forum",
   810  	"forward",
   811  	"fossil",
   812  	"foster",
   813  	"found",
   814  	"fox",
   815  	"fragile",
   816  	"frame",
   817  	"frequent",
   818  	"fresh",
   819  	"friend",
   820  	"fringe",
   821  	"frog",
   822  	"front",
   823  	"frost",
   824  	"frown",
   825  	"frozen",
   826  	"fruit",
   827  	"fuel",
   828  	"fun",
   829  	"funny",
   830  	"furnace",
   831  	"fury",
   832  	"future",
   833  	"gadget",
   834  	"gain",
   835  	"galaxy",
   836  	"gallery",
   837  	"game",
   838  	"gap",
   839  	"garage",
   840  	"garbage",
   841  	"garden",
   842  	"garlic",
   843  	"garment",
   844  	"gas",
   845  	"gasp",
   846  	"gate",
   847  	"gather",
   848  	"gauge",
   849  	"gaze",
   850  	"general",
   851  	"genius",
   852  	"genre",
   853  	"gentle",
   854  	"genuine",
   855  	"gesture",
   856  	"ghost",
   857  	"giant",
   858  	"gift",
   859  	"giggle",
   860  	"ginger",
   861  	"giraffe",
   862  	"girl",
   863  	"give",
   864  	"glad",
   865  	"glance",
   866  	"glare",
   867  	"glass",
   868  	"glide",
   869  	"glimpse",
   870  	"globe",
   871  	"gloom",
   872  	"glory",
   873  	"glove",
   874  	"glow",
   875  	"glue",
   876  	"goat",
   877  	"goddess",
   878  	"gold",
   879  	"good",
   880  	"goose",
   881  	"gorilla",
   882  	"gospel",
   883  	"gossip",
   884  	"govern",
   885  	"gown",
   886  	"grab",
   887  	"grace",
   888  	"grain",
   889  	"grant",
   890  	"grape",
   891  	"grass",
   892  	"gravity",
   893  	"great",
   894  	"green",
   895  	"grid",
   896  	"grief",
   897  	"grit",
   898  	"grocery",
   899  	"group",
   900  	"grow",
   901  	"grunt",
   902  	"guard",
   903  	"guess",
   904  	"guide",
   905  	"guilt",
   906  	"guitar",
   907  	"gun",
   908  	"gym",
   909  	"habit",
   910  	"hair",
   911  	"half",
   912  	"hammer",
   913  	"hamster",
   914  	"hand",
   915  	"happy",
   916  	"harbor",
   917  	"hard",
   918  	"harsh",
   919  	"harvest",
   920  	"hat",
   921  	"have",
   922  	"hawk",
   923  	"hazard",
   924  	"head",
   925  	"health",
   926  	"heart",
   927  	"heavy",
   928  	"hedgehog",
   929  	"height",
   930  	"hello",
   931  	"helmet",
   932  	"help",
   933  	"hen",
   934  	"hero",
   935  	"hidden",
   936  	"high",
   937  	"hill",
   938  	"hint",
   939  	"hip",
   940  	"hire",
   941  	"history",
   942  	"hobby",
   943  	"hockey",
   944  	"hold",
   945  	"hole",
   946  	"holiday",
   947  	"hollow",
   948  	"home",
   949  	"honey",
   950  	"hood",
   951  	"hope",
   952  	"horn",
   953  	"horror",
   954  	"horse",
   955  	"hospital",
   956  	"host",
   957  	"hotel",
   958  	"hour",
   959  	"hover",
   960  	"hub",
   961  	"huge",
   962  	"human",
   963  	"humble",
   964  	"humor",
   965  	"hundred",
   966  	"hungry",
   967  	"hunt",
   968  	"hurdle",
   969  	"hurry",
   970  	"hurt",
   971  	"husband",
   972  	"hybrid",
   973  	"ice",
   974  	"icon",
   975  	"idea",
   976  	"identify",
   977  	"idle",
   978  	"ignore",
   979  	"ill",
   980  	"illegal",
   981  	"illness",
   982  	"image",
   983  	"imitate",
   984  	"immense",
   985  	"immune",
   986  	"impact",
   987  	"impose",
   988  	"improve",
   989  	"impulse",
   990  	"inch",
   991  	"include",
   992  	"income",
   993  	"increase",
   994  	"index",
   995  	"indicate",
   996  	"indoor",
   997  	"industry",
   998  	"infant",
   999  	"inflict",
  1000  	"inform",
  1001  	"inhale",
  1002  	"inherit",
  1003  	"initial",
  1004  	"inject",
  1005  	"injury",
  1006  	"inmate",
  1007  	"inner",
  1008  	"innocent",
  1009  	"input",
  1010  	"inquiry",
  1011  	"insane",
  1012  	"insect",
  1013  	"inside",
  1014  	"inspire",
  1015  	"install",
  1016  	"intact",
  1017  	"interest",
  1018  	"into",
  1019  	"invest",
  1020  	"invite",
  1021  	"involve",
  1022  	"iron",
  1023  	"island",
  1024  	"isolate",
  1025  	"issue",
  1026  	"item",
  1027  	"ivory",
  1028  	"jacket",
  1029  	"jaguar",
  1030  	"jar",
  1031  	"jazz",
  1032  	"jealous",
  1033  	"jeans",
  1034  	"jelly",
  1035  	"jewel",
  1036  	"job",
  1037  	"join",
  1038  	"joke",
  1039  	"journey",
  1040  	"joy",
  1041  	"judge",
  1042  	"juice",
  1043  	"jump",
  1044  	"jungle",
  1045  	"junior",
  1046  	"junk",
  1047  	"just",
  1048  	"kangaroo",
  1049  	"keen",
  1050  	"keep",
  1051  	"ketchup",
  1052  	"key",
  1053  	"kick",
  1054  	"kid",
  1055  	"kidney",
  1056  	"kind",
  1057  	"kingdom",
  1058  	"kiss",
  1059  	"kit",
  1060  	"kitchen",
  1061  	"kite",
  1062  	"kitten",
  1063  	"kiwi",
  1064  	"knee",
  1065  	"knife",
  1066  	"knock",
  1067  	"know",
  1068  	"lab",
  1069  	"label",
  1070  	"labor",
  1071  	"ladder",
  1072  	"lady",
  1073  	"lake",
  1074  	"lamp",
  1075  	"language",
  1076  	"laptop",
  1077  	"large",
  1078  	"later",
  1079  	"latin",
  1080  	"laugh",
  1081  	"laundry",
  1082  	"lava",
  1083  	"law",
  1084  	"lawn",
  1085  	"lawsuit",
  1086  	"layer",
  1087  	"lazy",
  1088  	"leader",
  1089  	"leaf",
  1090  	"learn",
  1091  	"leave",
  1092  	"lecture",
  1093  	"left",
  1094  	"leg",
  1095  	"legal",
  1096  	"legend",
  1097  	"leisure",
  1098  	"lemon",
  1099  	"lend",
  1100  	"length",
  1101  	"lens",
  1102  	"leopard",
  1103  	"lesson",
  1104  	"letter",
  1105  	"level",
  1106  	"liar",
  1107  	"liberty",
  1108  	"library",
  1109  	"license",
  1110  	"life",
  1111  	"lift",
  1112  	"light",
  1113  	"like",
  1114  	"limb",
  1115  	"limit",
  1116  	"link",
  1117  	"lion",
  1118  	"liquid",
  1119  	"list",
  1120  	"little",
  1121  	"live",
  1122  	"lizard",
  1123  	"load",
  1124  	"loan",
  1125  	"lobster",
  1126  	"local",
  1127  	"lock",
  1128  	"logic",
  1129  	"lonely",
  1130  	"long",
  1131  	"loop",
  1132  	"lottery",
  1133  	"loud",
  1134  	"lounge",
  1135  	"love",
  1136  	"loyal",
  1137  	"lucky",
  1138  	"luggage",
  1139  	"lumber",
  1140  	"lunar",
  1141  	"lunch",
  1142  	"luxury",
  1143  	"lyrics",
  1144  	"machine",
  1145  	"mad",
  1146  	"magic",
  1147  	"magnet",
  1148  	"maid",
  1149  	"mail",
  1150  	"main",
  1151  	"major",
  1152  	"make",
  1153  	"mammal",
  1154  	"man",
  1155  	"manage",
  1156  	"mandate",
  1157  	"mango",
  1158  	"mansion",
  1159  	"manual",
  1160  	"maple",
  1161  	"marble",
  1162  	"march",
  1163  	"margin",
  1164  	"marine",
  1165  	"market",
  1166  	"marriage",
  1167  	"mask",
  1168  	"mass",
  1169  	"master",
  1170  	"match",
  1171  	"material",
  1172  	"math",
  1173  	"matrix",
  1174  	"matter",
  1175  	"maximum",
  1176  	"maze",
  1177  	"meadow",
  1178  	"mean",
  1179  	"measure",
  1180  	"meat",
  1181  	"mechanic",
  1182  	"medal",
  1183  	"media",
  1184  	"melody",
  1185  	"melt",
  1186  	"member",
  1187  	"memory",
  1188  	"mention",
  1189  	"menu",
  1190  	"mercy",
  1191  	"merge",
  1192  	"merit",
  1193  	"merry",
  1194  	"mesh",
  1195  	"message",
  1196  	"metal",
  1197  	"method",
  1198  	"middle",
  1199  	"midnight",
  1200  	"milk",
  1201  	"million",
  1202  	"mimic",
  1203  	"mind",
  1204  	"minimum",
  1205  	"minor",
  1206  	"minute",
  1207  	"miracle",
  1208  	"mirror",
  1209  	"misery",
  1210  	"miss",
  1211  	"mistake",
  1212  	"mix",
  1213  	"mixed",
  1214  	"mixture",
  1215  	"mobile",
  1216  	"model",
  1217  	"modify",
  1218  	"mom",
  1219  	"moment",
  1220  	"monitor",
  1221  	"monkey",
  1222  	"monster",
  1223  	"month",
  1224  	"moon",
  1225  	"moral",
  1226  	"more",
  1227  	"morning",
  1228  	"mosquito",
  1229  	"mother",
  1230  	"motion",
  1231  	"motor",
  1232  	"mountain",
  1233  	"mouse",
  1234  	"move",
  1235  	"movie",
  1236  	"much",
  1237  	"muffin",
  1238  	"mule",
  1239  	"multiply",
  1240  	"muscle",
  1241  	"museum",
  1242  	"mushroom",
  1243  	"music",
  1244  	"must",
  1245  	"mutual",
  1246  	"myself",
  1247  	"mystery",
  1248  	"myth",
  1249  	"naive",
  1250  	"name",
  1251  	"napkin",
  1252  	"narrow",
  1253  	"nasty",
  1254  	"nation",
  1255  	"nature",
  1256  	"near",
  1257  	"neck",
  1258  	"need",
  1259  	"negative",
  1260  	"neglect",
  1261  	"neither",
  1262  	"nephew",
  1263  	"nerve",
  1264  	"nest",
  1265  	"net",
  1266  	"network",
  1267  	"neutral",
  1268  	"never",
  1269  	"news",
  1270  	"next",
  1271  	"nice",
  1272  	"night",
  1273  	"noble",
  1274  	"noise",
  1275  	"nominee",
  1276  	"noodle",
  1277  	"normal",
  1278  	"north",
  1279  	"nose",
  1280  	"notable",
  1281  	"note",
  1282  	"nothing",
  1283  	"notice",
  1284  	"novel",
  1285  	"now",
  1286  	"nuclear",
  1287  	"number",
  1288  	"nurse",
  1289  	"nut",
  1290  	"oak",
  1291  	"obey",
  1292  	"object",
  1293  	"oblige",
  1294  	"obscure",
  1295  	"observe",
  1296  	"obtain",
  1297  	"obvious",
  1298  	"occur",
  1299  	"ocean",
  1300  	"october",
  1301  	"odor",
  1302  	"off",
  1303  	"offer",
  1304  	"office",
  1305  	"often",
  1306  	"oil",
  1307  	"okay",
  1308  	"old",
  1309  	"olive",
  1310  	"olympic",
  1311  	"omit",
  1312  	"once",
  1313  	"one",
  1314  	"onion",
  1315  	"online",
  1316  	"only",
  1317  	"open",
  1318  	"opera",
  1319  	"opinion",
  1320  	"oppose",
  1321  	"option",
  1322  	"orange",
  1323  	"orbit",
  1324  	"orchard",
  1325  	"order",
  1326  	"ordinary",
  1327  	"organ",
  1328  	"orient",
  1329  	"original",
  1330  	"orphan",
  1331  	"ostrich",
  1332  	"other",
  1333  	"outdoor",
  1334  	"outer",
  1335  	"output",
  1336  	"outside",
  1337  	"oval",
  1338  	"oven",
  1339  	"over",
  1340  	"own",
  1341  	"owner",
  1342  	"oxygen",
  1343  	"oyster",
  1344  	"ozone",
  1345  	"pact",
  1346  	"paddle",
  1347  	"page",
  1348  	"pair",
  1349  	"palace",
  1350  	"palm",
  1351  	"panda",
  1352  	"panel",
  1353  	"panic",
  1354  	"panther",
  1355  	"paper",
  1356  	"parade",
  1357  	"parent",
  1358  	"park",
  1359  	"parrot",
  1360  	"party",
  1361  	"pass",
  1362  	"patch",
  1363  	"path",
  1364  	"patient",
  1365  	"patrol",
  1366  	"pattern",
  1367  	"pause",
  1368  	"pave",
  1369  	"payment",
  1370  	"peace",
  1371  	"peanut",
  1372  	"pear",
  1373  	"peasant",
  1374  	"pelican",
  1375  	"pen",
  1376  	"penalty",
  1377  	"pencil",
  1378  	"people",
  1379  	"pepper",
  1380  	"perfect",
  1381  	"permit",
  1382  	"person",
  1383  	"pet",
  1384  	"phone",
  1385  	"photo",
  1386  	"phrase",
  1387  	"physical",
  1388  	"piano",
  1389  	"picnic",
  1390  	"picture",
  1391  	"piece",
  1392  	"pig",
  1393  	"pigeon",
  1394  	"pill",
  1395  	"pilot",
  1396  	"pink",
  1397  	"pioneer",
  1398  	"pipe",
  1399  	"pistol",
  1400  	"pitch",
  1401  	"pizza",
  1402  	"place",
  1403  	"planet",
  1404  	"plastic",
  1405  	"plate",
  1406  	"play",
  1407  	"please",
  1408  	"pledge",
  1409  	"pluck",
  1410  	"plug",
  1411  	"plunge",
  1412  	"poem",
  1413  	"poet",
  1414  	"point",
  1415  	"polar",
  1416  	"pole",
  1417  	"police",
  1418  	"pond",
  1419  	"pony",
  1420  	"pool",
  1421  	"popular",
  1422  	"portion",
  1423  	"position",
  1424  	"possible",
  1425  	"post",
  1426  	"potato",
  1427  	"pottery",
  1428  	"poverty",
  1429  	"powder",
  1430  	"power",
  1431  	"practice",
  1432  	"praise",
  1433  	"predict",
  1434  	"prefer",
  1435  	"prepare",
  1436  	"present",
  1437  	"pretty",
  1438  	"prevent",
  1439  	"price",
  1440  	"pride",
  1441  	"primary",
  1442  	"print",
  1443  	"priority",
  1444  	"prison",
  1445  	"private",
  1446  	"prize",
  1447  	"problem",
  1448  	"process",
  1449  	"produce",
  1450  	"profit",
  1451  	"program",
  1452  	"project",
  1453  	"promote",
  1454  	"proof",
  1455  	"property",
  1456  	"prosper",
  1457  	"protect",
  1458  	"proud",
  1459  	"provide",
  1460  	"public",
  1461  	"pudding",
  1462  	"pull",
  1463  	"pulp",
  1464  	"pulse",
  1465  	"pumpkin",
  1466  	"punch",
  1467  	"pupil",
  1468  	"puppy",
  1469  	"purchase",
  1470  	"purity",
  1471  	"purpose",
  1472  	"purse",
  1473  	"push",
  1474  	"put",
  1475  	"puzzle",
  1476  	"pyramid",
  1477  	"quality",
  1478  	"quantum",
  1479  	"quarter",
  1480  	"question",
  1481  	"quick",
  1482  	"quit",
  1483  	"quiz",
  1484  	"quote",
  1485  	"rabbit",
  1486  	"raccoon",
  1487  	"race",
  1488  	"rack",
  1489  	"radar",
  1490  	"radio",
  1491  	"rail",
  1492  	"rain",
  1493  	"raise",
  1494  	"rally",
  1495  	"ramp",
  1496  	"ranch",
  1497  	"random",
  1498  	"range",
  1499  	"rapid",
  1500  	"rare",
  1501  	"rate",
  1502  	"rather",
  1503  	"raven",
  1504  	"raw",
  1505  	"razor",
  1506  	"ready",
  1507  	"real",
  1508  	"reason",
  1509  	"rebel",
  1510  	"rebuild",
  1511  	"recall",
  1512  	"receive",
  1513  	"recipe",
  1514  	"record",
  1515  	"recycle",
  1516  	"reduce",
  1517  	"reflect",
  1518  	"reform",
  1519  	"refuse",
  1520  	"region",
  1521  	"regret",
  1522  	"regular",
  1523  	"reject",
  1524  	"relax",
  1525  	"release",
  1526  	"relief",
  1527  	"rely",
  1528  	"remain",
  1529  	"remember",
  1530  	"remind",
  1531  	"remove",
  1532  	"render",
  1533  	"renew",
  1534  	"rent",
  1535  	"reopen",
  1536  	"repair",
  1537  	"repeat",
  1538  	"replace",
  1539  	"report",
  1540  	"require",
  1541  	"rescue",
  1542  	"resemble",
  1543  	"resist",
  1544  	"resource",
  1545  	"response",
  1546  	"result",
  1547  	"retire",
  1548  	"retreat",
  1549  	"return",
  1550  	"reunion",
  1551  	"reveal",
  1552  	"review",
  1553  	"reward",
  1554  	"rhythm",
  1555  	"rib",
  1556  	"ribbon",
  1557  	"rice",
  1558  	"rich",
  1559  	"ride",
  1560  	"ridge",
  1561  	"rifle",
  1562  	"right",
  1563  	"rigid",
  1564  	"ring",
  1565  	"riot",
  1566  	"ripple",
  1567  	"risk",
  1568  	"ritual",
  1569  	"rival",
  1570  	"river",
  1571  	"road",
  1572  	"roast",
  1573  	"robot",
  1574  	"robust",
  1575  	"rocket",
  1576  	"romance",
  1577  	"roof",
  1578  	"rookie",
  1579  	"room",
  1580  	"rose",
  1581  	"rotate",
  1582  	"rough",
  1583  	"round",
  1584  	"route",
  1585  	"royal",
  1586  	"rubber",
  1587  	"rude",
  1588  	"rug",
  1589  	"rule",
  1590  	"run",
  1591  	"runway",
  1592  	"rural",
  1593  	"sad",
  1594  	"saddle",
  1595  	"sadness",
  1596  	"safe",
  1597  	"sail",
  1598  	"salad",
  1599  	"salmon",
  1600  	"salon",
  1601  	"salt",
  1602  	"salute",
  1603  	"same",
  1604  	"sample",
  1605  	"sand",
  1606  	"satisfy",
  1607  	"satoshi",
  1608  	"sauce",
  1609  	"sausage",
  1610  	"save",
  1611  	"say",
  1612  	"scale",
  1613  	"scan",
  1614  	"scare",
  1615  	"scatter",
  1616  	"scene",
  1617  	"scheme",
  1618  	"school",
  1619  	"science",
  1620  	"scissors",
  1621  	"scorpion",
  1622  	"scout",
  1623  	"scrap",
  1624  	"screen",
  1625  	"script",
  1626  	"scrub",
  1627  	"sea",
  1628  	"search",
  1629  	"season",
  1630  	"seat",
  1631  	"second",
  1632  	"secret",
  1633  	"section",
  1634  	"security",
  1635  	"seed",
  1636  	"seek",
  1637  	"segment",
  1638  	"select",
  1639  	"sell",
  1640  	"seminar",
  1641  	"senior",
  1642  	"sense",
  1643  	"sentence",
  1644  	"series",
  1645  	"service",
  1646  	"session",
  1647  	"settle",
  1648  	"setup",
  1649  	"seven",
  1650  	"shadow",
  1651  	"shaft",
  1652  	"shallow",
  1653  	"share",
  1654  	"shed",
  1655  	"shell",
  1656  	"sheriff",
  1657  	"shield",
  1658  	"shift",
  1659  	"shine",
  1660  	"ship",
  1661  	"shiver",
  1662  	"shock",
  1663  	"shoe",
  1664  	"shoot",
  1665  	"shop",
  1666  	"short",
  1667  	"shoulder",
  1668  	"shove",
  1669  	"shrimp",
  1670  	"shrug",
  1671  	"shuffle",
  1672  	"shy",
  1673  	"sibling",
  1674  	"sick",
  1675  	"side",
  1676  	"siege",
  1677  	"sight",
  1678  	"sign",
  1679  	"silent",
  1680  	"silk",
  1681  	"silly",
  1682  	"silver",
  1683  	"similar",
  1684  	"simple",
  1685  	"since",
  1686  	"sing",
  1687  	"siren",
  1688  	"sister",
  1689  	"situate",
  1690  	"six",
  1691  	"size",
  1692  	"skate",
  1693  	"sketch",
  1694  	"ski",
  1695  	"skill",
  1696  	"skin",
  1697  	"skirt",
  1698  	"skull",
  1699  	"slab",
  1700  	"slam",
  1701  	"sleep",
  1702  	"slender",
  1703  	"slice",
  1704  	"slide",
  1705  	"slight",
  1706  	"slim",
  1707  	"slogan",
  1708  	"slot",
  1709  	"slow",
  1710  	"slush",
  1711  	"small",
  1712  	"smart",
  1713  	"smile",
  1714  	"smoke",
  1715  	"smooth",
  1716  	"snack",
  1717  	"snake",
  1718  	"snap",
  1719  	"sniff",
  1720  	"snow",
  1721  	"soap",
  1722  	"soccer",
  1723  	"social",
  1724  	"sock",
  1725  	"soda",
  1726  	"soft",
  1727  	"solar",
  1728  	"soldier",
  1729  	"solid",
  1730  	"solution",
  1731  	"solve",
  1732  	"someone",
  1733  	"song",
  1734  	"soon",
  1735  	"sorry",
  1736  	"sort",
  1737  	"soul",
  1738  	"sound",
  1739  	"soup",
  1740  	"source",
  1741  	"south",
  1742  	"space",
  1743  	"spare",
  1744  	"spatial",
  1745  	"spawn",
  1746  	"speak",
  1747  	"special",
  1748  	"speed",
  1749  	"spell",
  1750  	"spend",
  1751  	"sphere",
  1752  	"spice",
  1753  	"spider",
  1754  	"spike",
  1755  	"spin",
  1756  	"spirit",
  1757  	"split",
  1758  	"spoil",
  1759  	"sponsor",
  1760  	"spoon",
  1761  	"sport",
  1762  	"spot",
  1763  	"spray",
  1764  	"spread",
  1765  	"spring",
  1766  	"spy",
  1767  	"square",
  1768  	"squeeze",
  1769  	"squirrel",
  1770  	"stable",
  1771  	"stadium",
  1772  	"staff",
  1773  	"stage",
  1774  	"stairs",
  1775  	"stamp",
  1776  	"stand",
  1777  	"start",
  1778  	"state",
  1779  	"stay",
  1780  	"steak",
  1781  	"steel",
  1782  	"stem",
  1783  	"step",
  1784  	"stereo",
  1785  	"stick",
  1786  	"still",
  1787  	"sting",
  1788  	"stock",
  1789  	"stomach",
  1790  	"stone",
  1791  	"stool",
  1792  	"story",
  1793  	"stove",
  1794  	"strategy",
  1795  	"street",
  1796  	"strike",
  1797  	"strong",
  1798  	"struggle",
  1799  	"student",
  1800  	"stuff",
  1801  	"stumble",
  1802  	"style",
  1803  	"subject",
  1804  	"submit",
  1805  	"subway",
  1806  	"success",
  1807  	"such",
  1808  	"sudden",
  1809  	"suffer",
  1810  	"sugar",
  1811  	"suggest",
  1812  	"suit",
  1813  	"summer",
  1814  	"sun",
  1815  	"sunny",
  1816  	"sunset",
  1817  	"super",
  1818  	"supply",
  1819  	"supreme",
  1820  	"sure",
  1821  	"surface",
  1822  	"surge",
  1823  	"surprise",
  1824  	"surround",
  1825  	"survey",
  1826  	"suspect",
  1827  	"sustain",
  1828  	"swallow",
  1829  	"swamp",
  1830  	"swap",
  1831  	"swarm",
  1832  	"swear",
  1833  	"sweet",
  1834  	"swift",
  1835  	"swim",
  1836  	"swing",
  1837  	"switch",
  1838  	"sword",
  1839  	"symbol",
  1840  	"symptom",
  1841  	"syrup",
  1842  	"system",
  1843  	"table",
  1844  	"tackle",
  1845  	"tag",
  1846  	"tail",
  1847  	"talent",
  1848  	"talk",
  1849  	"tank",
  1850  	"tape",
  1851  	"target",
  1852  	"task",
  1853  	"taste",
  1854  	"tattoo",
  1855  	"taxi",
  1856  	"teach",
  1857  	"team",
  1858  	"tell",
  1859  	"ten",
  1860  	"tenant",
  1861  	"tennis",
  1862  	"tent",
  1863  	"term",
  1864  	"test",
  1865  	"text",
  1866  	"thank",
  1867  	"that",
  1868  	"theme",
  1869  	"then",
  1870  	"theory",
  1871  	"there",
  1872  	"they",
  1873  	"thing",
  1874  	"this",
  1875  	"thought",
  1876  	"three",
  1877  	"thrive",
  1878  	"throw",
  1879  	"thumb",
  1880  	"thunder",
  1881  	"ticket",
  1882  	"tide",
  1883  	"tiger",
  1884  	"tilt",
  1885  	"timber",
  1886  	"time",
  1887  	"tiny",
  1888  	"tip",
  1889  	"tired",
  1890  	"tissue",
  1891  	"title",
  1892  	"toast",
  1893  	"tobacco",
  1894  	"today",
  1895  	"toddler",
  1896  	"toe",
  1897  	"together",
  1898  	"toilet",
  1899  	"token",
  1900  	"tomato",
  1901  	"tomorrow",
  1902  	"tone",
  1903  	"tongue",
  1904  	"tonight",
  1905  	"tool",
  1906  	"tooth",
  1907  	"top",
  1908  	"topic",
  1909  	"topple",
  1910  	"torch",
  1911  	"tornado",
  1912  	"tortoise",
  1913  	"toss",
  1914  	"total",
  1915  	"tourist",
  1916  	"toward",
  1917  	"tower",
  1918  	"town",
  1919  	"toy",
  1920  	"track",
  1921  	"trade",
  1922  	"traffic",
  1923  	"tragic",
  1924  	"train",
  1925  	"transfer",
  1926  	"trap",
  1927  	"trash",
  1928  	"travel",
  1929  	"tray",
  1930  	"treat",
  1931  	"tree",
  1932  	"trend",
  1933  	"trial",
  1934  	"tribe",
  1935  	"trick",
  1936  	"trigger",
  1937  	"trim",
  1938  	"trip",
  1939  	"trophy",
  1940  	"trouble",
  1941  	"truck",
  1942  	"true",
  1943  	"truly",
  1944  	"trumpet",
  1945  	"trust",
  1946  	"truth",
  1947  	"try",
  1948  	"tube",
  1949  	"tuition",
  1950  	"tumble",
  1951  	"tuna",
  1952  	"tunnel",
  1953  	"turkey",
  1954  	"turn",
  1955  	"turtle",
  1956  	"twelve",
  1957  	"twenty",
  1958  	"twice",
  1959  	"twin",
  1960  	"twist",
  1961  	"two",
  1962  	"type",
  1963  	"typical",
  1964  	"ugly",
  1965  	"umbrella",
  1966  	"unable",
  1967  	"unaware",
  1968  	"uncle",
  1969  	"uncover",
  1970  	"under",
  1971  	"undo",
  1972  	"unfair",
  1973  	"unfold",
  1974  	"unhappy",
  1975  	"uniform",
  1976  	"unique",
  1977  	"unit",
  1978  	"universe",
  1979  	"unknown",
  1980  	"unlock",
  1981  	"until",
  1982  	"unusual",
  1983  	"unveil",
  1984  	"update",
  1985  	"upgrade",
  1986  	"uphold",
  1987  	"upon",
  1988  	"upper",
  1989  	"upset",
  1990  	"urban",
  1991  	"urge",
  1992  	"usage",
  1993  	"use",
  1994  	"used",
  1995  	"useful",
  1996  	"useless",
  1997  	"usual",
  1998  	"utility",
  1999  	"vacant",
  2000  	"vacuum",
  2001  	"vague",
  2002  	"valid",
  2003  	"valley",
  2004  	"valve",
  2005  	"van",
  2006  	"vanish",
  2007  	"vapor",
  2008  	"various",
  2009  	"vast",
  2010  	"vault",
  2011  	"vehicle",
  2012  	"velvet",
  2013  	"vendor",
  2014  	"venture",
  2015  	"venue",
  2016  	"verb",
  2017  	"verify",
  2018  	"version",
  2019  	"very",
  2020  	"vessel",
  2021  	"veteran",
  2022  	"viable",
  2023  	"vibrant",
  2024  	"vicious",
  2025  	"victory",
  2026  	"video",
  2027  	"view",
  2028  	"village",
  2029  	"vintage",
  2030  	"violin",
  2031  	"virtual",
  2032  	"virus",
  2033  	"visa",
  2034  	"visit",
  2035  	"visual",
  2036  	"vital",
  2037  	"vivid",
  2038  	"vocal",
  2039  	"voice",
  2040  	"void",
  2041  	"volcano",
  2042  	"volume",
  2043  	"vote",
  2044  	"voyage",
  2045  	"wage",
  2046  	"wagon",
  2047  	"wait",
  2048  	"walk",
  2049  	"wall",
  2050  	"walnut",
  2051  	"want",
  2052  	"warfare",
  2053  	"warm",
  2054  	"warrior",
  2055  	"wash",
  2056  	"wasp",
  2057  	"waste",
  2058  	"water",
  2059  	"wave",
  2060  	"way",
  2061  	"wealth",
  2062  	"weapon",
  2063  	"wear",
  2064  	"weasel",
  2065  	"weather",
  2066  	"web",
  2067  	"wedding",
  2068  	"weekend",
  2069  	"weird",
  2070  	"welcome",
  2071  	"west",
  2072  	"wet",
  2073  	"whale",
  2074  	"what",
  2075  	"wheat",
  2076  	"wheel",
  2077  	"when",
  2078  	"where",
  2079  	"whip",
  2080  	"whisper",
  2081  	"wide",
  2082  	"width",
  2083  	"wife",
  2084  	"wild",
  2085  	"will",
  2086  	"win",
  2087  	"window",
  2088  	"wine",
  2089  	"wing",
  2090  	"wink",
  2091  	"winner",
  2092  	"winter",
  2093  	"wire",
  2094  	"wisdom",
  2095  	"wise",
  2096  	"wish",
  2097  	"witness",
  2098  	"wolf",
  2099  	"woman",
  2100  	"wonder",
  2101  	"wood",
  2102  	"wool",
  2103  	"word",
  2104  	"work",
  2105  	"world",
  2106  	"worry",
  2107  	"worth",
  2108  	"wrap",
  2109  	"wreck",
  2110  	"wrestle",
  2111  	"wrist",
  2112  	"write",
  2113  	"wrong",
  2114  	"yard",
  2115  	"year",
  2116  	"yellow",
  2117  	"you",
  2118  	"young",
  2119  	"youth",
  2120  	"zebra",
  2121  	"zero",
  2122  	"zone",
  2123  	"zoo",
  2124  }
  2125  
  2126  var secwordSet map[string]bool
  2127  
  2128  func init() {
  2129  	secwordSet = make(map[string]bool)
  2130  	for _, w := range secwords {
  2131  		secwordSet[w] = true
  2132  	}
  2133  }