 2 400   0 + # coding:utf-8
 0 401   0 | # This is a full-line comment
 0 400   0   key = "value"  # This is a comment at the end of a line
 0 400   0   another = "# This is not a comment"
 0 400   0   
 0 400   0   key = "value"
 0 400   0   bare_key = "value"
 0 400   0   bare-key = "value"
 0 400   0   1234 = "value"
 0 400   0   
 0 400   0   "127.0.0.1" = "value"
 0 400   0   "character encoding" = "value"
 0 400   0   "ʎǝʞ" = "value"
 0 400   0   'key2' = "value"
 0 400   0   'quoted "value"' = "value"
 0 400   0   
 0 400   0   fruit.name = "banana"     # this is best practice
 0 400   0   fruit. color = "yellow"    # same as fruit.color
 0 400   0   fruit . flavor = "banana"   # same as fruit.flavor
 0 400   0   
 0 400   0   name = "Orange"
 0 400   0   physical.color = "orange"
 0 400   0   physical.shape = "round"
 0 400   0   site."google.com" = true
 0 400   0   
 0 400   0   str = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
 0 400   0   
 0 400   0   str1 = """
 0 400   0   Roses are red
 0 400   0   Violets are blue"""
 0 400   0   
 0 400   0   # The following strings are byte-for-byte equivalent:
 0 400   0   str1 = "The quick brown fox jumps over the lazy dog."
 0 400   0   str2 = """
 0 400   0   The quick brown \
 0 400   0   
 0 400   0   
 0 400   0     fox jumps over \
 0 400   0       the lazy dog."""
 0 400   0   str3 = """\
 0 400   0          The quick brown \
 0 400   0          fox jumps over \
 0 400   0          the lazy dog.\
 0 400   0          """
 0 400   0   
 0 400   0   str4 = """Here are two quotation marks: "". Simple enough."""
 0 400   0   # str5 = """Here are three quotation marks: """."""  # INVALID
 0 400   0   str5 = """Here are three quotation marks: ""\"."""
 0 400   0   str6 = """Here are fifteen quotation marks: ""\"""\"""\"""\"""\"."""
 0 400   0   # "This," she said, "is just a pointless statement."
 0 400   0   str7 = """"This," she said, "is just a pointless statement.""""
 0 400   0   
 0 400   0   # What you see is what you get.
 0 400   0   winpath  = 'C:\Users\nodejs\templates'
 0 400   0   winpath2 = '\\ServerX\admin$\system32\'
 0 400   0   quoted   = 'Tom "Dubs" Preston-Werner'
 0 400   0   regex    = '<\i\c*\s*>'
 0 400   0   
 0 400   0   regex2 = '''I [dw]on't need \d{2} apples'''
 0 400   0   lines  = '''
 0 400   0   The first newline is
 0 400   0   trimmed in raw strings.
 0 400   0      All other whitespace
 0 400   0      is preserved.
 0 400   0   '''
 0 400   0   
 0 400   0   quot15 = '''Here are fifteen quotation marks: """""""""""""""'''
 0 400   0   # 'That,' she said, 'is still pointless.'
 0 400   0   str = ''''That,' she said, 'is still pointless.''''
 0 400   0   
 0 400   0   int1 = +99
 0 400   0   int2 = 42
 0 400   0   int3 = 0
 0 400   0   int4 = -17
 0 400   0   
 0 400   0   int5 = 1_000
 0 400   0   int6 = 5_349_221
 0 400   0   int7 = 53_49_221  # Indian number system grouping
 0 400   0   int8 = 1_2_3_4_5  # VALID but discouraged
 0 400   0   
 0 400   0   # hexadecimal with prefix `0x`
 0 400   0   hex1 = 0xDEADBEEF
 0 400   0   hex2 = 0xdeadbeef
 0 400   0   hex3 = 0xdead_beef
 0 400   0   
 0 400   0   # octal with prefix `0o`
 0 400   0   oct1 = 0o01234567
 0 400   0   oct2 = 0o755 # useful for Unix file permissions
 0 400   0   
 0 400   0   # binary with prefix `0b`
 0 400   0   bin1 = 0b11010110
 0 400   0   
 0 400   0   # fractional
 0 400   0   flt1 = +1.0
 0 400   0   flt2 = 3.1415
 0 400   0   flt3 = -0.01
 0 400   0   
 0 400   0   # exponent
 0 400   0   flt4 = 5e+22
 0 400   0   flt5 = 1e06
 0 400   0   flt6 = -2E-2
 0 400   0   
 0 400   0   # both
 0 400   0   flt7 = 6.626e-34
 0 400   0   
 0 400   0   flt8 = 224_617.445_991_228
 0 400   0   
 0 400   0   # infinity
 0 400   0   sf1 = inf  # positive infinity
 0 400   0   sf2 = +inf # positive infinity
 0 400   0   sf3 = -inf # negative infinity
 0 400   0   
 0 400   0   # not a number
 0 400   0   sf4 = nan  # actual sNaN/qNaN encoding is implementation-specific
 0 400   0   sf5 = +nan # same as `nan`
 0 400   0   sf6 = -nan # valid, actual encoding is implementation-specific
 0 400   0   
 0 400   0   bool1 = true
 0 400   0   bool2 = false
 0 400   0   
 0 400   0   odt1 = 1979-05-27T07:32:00Z
 0 400   0   odt2 = 1979-05-27T00:32:00-07:00
 0 400   0   odt3 = 1979-05-27T00:32:00.999999-07:00
 0 400   0   odt4 = 1979-05-27 07:32:00Z
 0 400   0   
 0 400   0   ldt1 = 1979-05-27T07:32:00
 0 400   0   ldt2 = 1979-05-27T00:32:00.999999
 0 400   0   
 0 400   0   ld1 = 1979-05-27
 0 400   0   
 0 400   0   lt1 = 07:32:00
 0 400   0   lt2 = 00:32:00.999999
 0 400   0   
 0 400   0   integers = [ 1, 2, 3 ]
 0 400   0   colors = [ "red", "yellow", "green" ]
 0 400   0   nested_arrays_of_ints = [ [ 1, 2 ], [3, 4, 5] ]
 0 400   0   nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ]
 0 400   0   string_array = [ "all", 'strings', """are the same""", '''type''' ]
 0 400   0   
 0 400   0   # Mixed-type arrays are allowed
 0 400   0   numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]
 0 400   0   contributors = [
 0 400   0     "Foo Bar <foo@example.com>",
 0 400   0     { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" }
 0 400   0   ]
 0 400   0   
 0 400   0   integers2 = [
 0 400   0     1, 2, 3
 0 400   0   ]
 0 400   0   
 0 400   0   integers3 = [
 0 400   0     1,
 0 400   0     2, # this is ok
 0 400   0   ]
 0 400   0   
 2 400   0 + [table-1]
 0 401   0 | key1 = "some string"
 0 401   0 | key2 = 123
 0 401   0 | 
 2 400   0 + [table-2]
 0 401   0 | key1 = "another string"
 0 401   0 | key2 = 456
 0 401   0 | 
 2 401   0 + [dog."tater.man"]
 0 402   0 | type.name = "pug"
 0 402   0 | 
 0 402   0 | [a.b.c]            # this is best practice
 0 402   0 | [ d.e.f ]          # same as [d.e.f]
 0 402   0 | [ g .  h  . i ]    # same as [g.h.i]
 2 402   0 + [ j . "ʞ" . 'l' ]  # same as [j."ʞ".'l']
 0 403   0 | 
 2 400   0 + [product]
 0 401   0 | type = { name = "Nail" }
 0 401   0 | 
 2 400   0 + [[products]]
 0 401   0 | name = "Hammer"
 0 401   0 | sku = 738594937
 0 401   0 | 
 2 400   0 + [[products]]  # empty table within the array
 0 401   0 | 
 2 400   0 + [[products]]
 0 401   0 | name = "Nail"
 0 401   0 | sku = 284758393
 0 401   0 | 
 0 401   0 | points = [ { x = 1, y = 2, z = 3 },
 0 401   0 |            { x = 7, y = 8, z = 9 },
 0 401   0 |            { x = 2, y = 4, z = 8 } ]
 0 401   0 | 
 0 401   0 | ~~~~ = true       # invalid character in key
 0 401   0 | invalid           # invalid, missing value
 0 401   0 | key = identifier  # also invalid, identifier must be one of true, false, inf, nan
 0 401   0 | key = "unterminated string
 0 401   0 | key = 'other unterminated string
 0 401   0 | 