# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Blank lines and comments are ignored.
# Comments can also be inline like 'correct # this is ok'.
# Note that at least one space before the hash is required.

a0x
a1x
a2x
aa
aaa
abc
abcompile
across
actions
affected
albeit
alive
allocations
anon
app
approval
approximation
arity
asserter
auth
autobianchi
b0x
b1x
b2x
ba
backed
bash
bat
batch
bbb
bc
bench
benchmark
besides
beta
bigger
blindly
blocked
blorp
bootstrap
bots
bowtie
brave
brown
builddir
bulk
bulk2
bulkcompile
c's
cafebabe
callable
camel
capitalized
casing
cc
ccc
charcode
charset
checkout
circular
cli
cloneable
cmp
cnn
coded
codepath
collisions
commit
companion
comparisons
compilations
compiler's
complement
completers
completes
confirm
consecutive
considering
constrains
consts
contract
conversion
conversions
crashes
cumulative
dacoharkes
daemon
dangling
dartanalyzer
dartfile
dashes
day
db
def
depended
depfile
deviation
dfast
dictionaries
dictionary
differs
dillfile
dills
dirname
disagree
disconnect
discovering
dispatcher
doctype
doesnt
dog
downcasts
downstream
dumping
dupe
durations
dyn
e's
e2e
ease
ec
edits
efficient
elapse
ell
entrypoint
entrypoints
epoch
err
everytime
evicting
excludes
exe
execute
exercised
exercises
exitcode
exiting
exits
expanded
expands
expansion
expansive
explain
extern
fac
falling
favors
fibonacci
filenames
filesystem
finder
fisk
five
floor
forbidden
forces
foreign
fox
framework
fulfill
func
futures
gallery
gamma
gen
generation
generators
glb
greeting
gtgt
gulp
gunk
hackish
harness
hello
hest
heuristics
hi
hints
home
hosting
hot
hotreload
hunk
hurray
i'm
ia
ikg
illustrate
implementor
inclosure
increased
incrementally
individual
insertion
inspect
insufficient
intact
internet
interpolate
inv
invalidating
invariants
isolate
isolates
iter
iterations
jumped
ko
la
lacks
largest
lc
ld
le
lets
lightly
likewise
linebreaks
linux
listening
ll
logd
logs
loopback
lots
lub
mac
maker
matters
mc
measured
metric
metrics
mf
micro
mismatched
miss
misspelled
mistake
mistakes
month
mx
mysdk
negatable
ninja
nonexisting
notion
nullary
numerator
observable
observatory
oh
okay
oracle
overlay
parametrized
party
pause
periodic
periodically
person
phrase
pink
places
policy
portions
pp
preliminary
prematurely
pretends
producer
profiler
promotes
prop
propagated
protected
provider
pure
pv
px
py
quick
quot
r"\s
rd
reachability
reality
recompile
redir
redirections
reducer
referring
reflectee
reflective
regenerate
regressions
reload
repeating
repo
repro
resource
respected
response
retains
rev
say
scans
screen
scripts
sdkroot
sdks
secondary
seconds
segment
shadowed
shipped
shot
signalled
simplify
site
somewhat
spans
spell
spellcheck
spelled
spelling
spent
splitting
sqrt
statics
std
str
strip
strongest
structures
stub's
subcommand
subscription
subtool
subtools
suite
sum
summarization
summarized
superinterface
supermixin
supplement
swapped
tags
team
templates
terminator
tester
thereof
thing
threw
timeout
timer
timing
timings
title
toplevel
tpt
transforming
transitively
translation
triangle
trigger
triggers
trimming
trivially
truncated
tt
txt
typeargs
typeparam
typeparambounds
unassigned
unawaited
unbreak
unification
unordered
unreachable
unregistered
untransformed
uppercase
upward
usr
usual
val
variants
verbatim
versa
versioning
vice
vm's
vs
waiting
walt
wanted
warmup
weird
whitelist
whitelisting
wins
workflow
x's
xxx
y's
year
