Hex Artifact Content Вы: nobody
Вход

Artifact 117908b19ef90e1fba2d204fe6080ca9789c0d9a:


0000: ef bb bf 2f 2a 21 0d 0a 20 2a 20 4a 53 48 69 6e  .../*!.. * JSHin
0010: 74 2c 20 62 79 20 4a 53 48 69 6e 74 20 43 6f 6d  t, by JSHint Com
0020: 6d 75 6e 69 74 79 2e 0d 0a 20 2a 0d 0a 20 2a 20  munity... *.. * 
0030: 4c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74  Licensed under t
0040: 68 65 20 73 61 6d 65 20 73 6c 69 67 68 74 6c 79  he same slightly
0050: 20 6d 6f 64 69 66 69 65 64 20 4d 49 54 20 6c 69   modified MIT li
0060: 63 65 6e 73 65 20 74 68 61 74 20 4a 53 4c 69 6e  cense that JSLin
0070: 74 20 69 73 2e 0d 0a 20 2a 20 49 74 20 73 74 6f  t is... * It sto
0080: 70 73 20 65 76 69 6c 2d 64 6f 65 72 73 20 65 76  ps evil-doers ev
0090: 65 72 79 77 68 65 72 65 2e 0d 0a 20 2a 0d 0a 20  erywhere... *.. 
00a0: 2a 20 4a 53 48 69 6e 74 20 69 73 20 61 20 64 65  * JSHint is a de
00b0: 72 69 76 61 74 69 76 65 20 77 6f 72 6b 20 6f 66  rivative work of
00c0: 20 4a 53 4c 69 6e 74 3a 0d 0a 20 2a 0d 0a 20 2a   JSLint:.. *.. *
00d0: 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 63 29     Copyright (c)
00e0: 20 32 30 30 32 20 44 6f 75 67 6c 61 73 20 43 72   2002 Douglas Cr
00f0: 6f 63 6b 66 6f 72 64 20 20 28 77 77 77 2e 4a 53  ockford  (www.JS
0100: 4c 69 6e 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  Lint.com).. *.. 
0110: 2a 20 20 20 50 65 72 6d 69 73 73 69 6f 6e 20 69  *   Permission i
0120: 73 20 68 65 72 65 62 79 20 67 72 61 6e 74 65 64  s hereby granted
0130: 2c 20 66 72 65 65 20 6f 66 20 63 68 61 72 67 65  , free of charge
0140: 2c 20 74 6f 20 61 6e 79 20 70 65 72 73 6f 6e 20  , to any person 
0150: 6f 62 74 61 69 6e 69 6e 67 0d 0a 20 2a 20 20 20  obtaining.. *   
0160: 61 20 63 6f 70 79 20 6f 66 20 74 68 69 73 20 73  a copy of this s
0170: 6f 66 74 77 61 72 65 20 61 6e 64 20 61 73 73 6f  oftware and asso
0180: 63 69 61 74 65 64 20 64 6f 63 75 6d 65 6e 74 61  ciated documenta
0190: 74 69 6f 6e 20 66 69 6c 65 73 20 28 74 68 65 20  tion files (the 
01a0: 22 53 6f 66 74 77 61 72 65 22 29 2c 0d 0a 20 2a  "Software"),.. *
01b0: 20 20 20 74 6f 20 64 65 61 6c 20 69 6e 20 74 68     to deal in th
01c0: 65 20 53 6f 66 74 77 61 72 65 20 77 69 74 68 6f  e Software witho
01d0: 75 74 20 72 65 73 74 72 69 63 74 69 6f 6e 2c 20  ut restriction, 
01e0: 69 6e 63 6c 75 64 69 6e 67 20 77 69 74 68 6f 75  including withou
01f0: 74 20 6c 69 6d 69 74 61 74 69 6f 6e 0d 0a 20 2a  t limitation.. *
0200: 20 20 20 74 68 65 20 72 69 67 68 74 73 20 74 6f     the rights to
0210: 20 75 73 65 2c 20 63 6f 70 79 2c 20 6d 6f 64 69   use, copy, modi
0220: 66 79 2c 20 6d 65 72 67 65 2c 20 70 75 62 6c 69  fy, merge, publi
0230: 73 68 2c 20 64 69 73 74 72 69 62 75 74 65 2c 20  sh, distribute, 
0240: 73 75 62 6c 69 63 65 6e 73 65 2c 0d 0a 20 2a 20  sublicense,.. * 
0250: 20 20 61 6e 64 2f 6f 72 20 73 65 6c 6c 20 63 6f    and/or sell co
0260: 70 69 65 73 20 6f 66 20 74 68 65 20 53 6f 66 74  pies of the Soft
0270: 77 61 72 65 2c 20 61 6e 64 20 74 6f 20 70 65 72  ware, and to per
0280: 6d 69 74 20 70 65 72 73 6f 6e 73 20 74 6f 20 77  mit persons to w
0290: 68 6f 6d 0d 0a 20 2a 20 20 20 74 68 65 20 53 6f  hom.. *   the So
02a0: 66 74 77 61 72 65 20 69 73 20 66 75 72 6e 69 73  ftware is furnis
02b0: 68 65 64 20 74 6f 20 64 6f 20 73 6f 2c 20 73 75  hed to do so, su
02c0: 62 6a 65 63 74 20 74 6f 20 74 68 65 20 66 6f 6c  bject to the fol
02d0: 6c 6f 77 69 6e 67 20 63 6f 6e 64 69 74 69 6f 6e  lowing condition
02e0: 73 3a 0d 0a 20 2a 0d 0a 20 2a 20 20 20 54 68 65  s:.. *.. *   The
02f0: 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 74   above copyright
0300: 20 6e 6f 74 69 63 65 20 61 6e 64 20 74 68 69 73   notice and this
0310: 20 70 65 72 6d 69 73 73 69 6f 6e 20 6e 6f 74 69   permission noti
0320: 63 65 20 73 68 61 6c 6c 20 62 65 20 69 6e 63 6c  ce shall be incl
0330: 75 64 65 64 0d 0a 20 2a 20 20 20 69 6e 20 61 6c  uded.. *   in al
0340: 6c 20 63 6f 70 69 65 73 20 6f 72 20 73 75 62 73  l copies or subs
0350: 74 61 6e 74 69 61 6c 20 70 6f 72 74 69 6f 6e 73  tantial portions
0360: 20 6f 66 20 74 68 65 20 53 6f 66 74 77 61 72 65   of the Software
0370: 2e 0d 0a 20 2a 0d 0a 20 2a 20 20 20 54 68 65 20  ... *.. *   The 
0380: 53 6f 66 74 77 61 72 65 20 73 68 61 6c 6c 20 62  Software shall b
0390: 65 20 75 73 65 64 20 66 6f 72 20 47 6f 6f 64 2c  e used for Good,
03a0: 20 6e 6f 74 20 45 76 69 6c 2e 0d 0a 20 2a 0d 0a   not Evil... *..
03b0: 20 2a 20 20 20 54 48 45 20 53 4f 46 54 57 41 52   *   THE SOFTWAR
03c0: 45 20 49 53 20 50 52 4f 56 49 44 45 44 20 22 41  E IS PROVIDED "A
03d0: 53 20 49 53 22 2c 20 57 49 54 48 4f 55 54 20 57  S IS", WITHOUT W
03e0: 41 52 52 41 4e 54 59 20 4f 46 20 41 4e 59 20 4b  ARRANTY OF ANY K
03f0: 49 4e 44 2c 20 45 58 50 52 45 53 53 20 4f 52 0d  IND, EXPRESS OR.
0400: 0a 20 2a 20 20 20 49 4d 50 4c 49 45 44 2c 20 49  . *   IMPLIED, I
0410: 4e 43 4c 55 44 49 4e 47 20 42 55 54 20 4e 4f 54  NCLUDING BUT NOT
0420: 20 4c 49 4d 49 54 45 44 20 54 4f 20 54 48 45 20   LIMITED TO THE 
0430: 57 41 52 52 41 4e 54 49 45 53 20 4f 46 20 4d 45  WARRANTIES OF ME
0440: 52 43 48 41 4e 54 41 42 49 4c 49 54 59 2c 0d 0a  RCHANTABILITY,..
0450: 20 2a 20 20 20 46 49 54 4e 45 53 53 20 46 4f 52   *   FITNESS FOR
0460: 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55   A PARTICULAR PU
0470: 52 50 4f 53 45 20 41 4e 44 20 4e 4f 4e 49 4e 46  RPOSE AND NONINF
0480: 52 49 4e 47 45 4d 45 4e 54 2e 20 49 4e 20 4e 4f  RINGEMENT. IN NO
0490: 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54 48 45   EVENT SHALL THE
04a0: 0d 0a 20 2a 20 20 20 41 55 54 48 4f 52 53 20 4f  .. *   AUTHORS O
04b0: 52 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44  R COPYRIGHT HOLD
04c0: 45 52 53 20 42 45 20 4c 49 41 42 4c 45 20 46 4f  ERS BE LIABLE FO
04d0: 52 20 41 4e 59 20 43 4c 41 49 4d 2c 20 44 41 4d  R ANY CLAIM, DAM
04e0: 41 47 45 53 20 4f 52 20 4f 54 48 45 52 0d 0a 20  AGES OR OTHER.. 
04f0: 2a 20 20 20 4c 49 41 42 49 4c 49 54 59 2c 20 57  *   LIABILITY, W
0500: 48 45 54 48 45 52 20 49 4e 20 41 4e 20 41 43 54  HETHER IN AN ACT
0510: 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43 54 2c  ION OF CONTRACT,
0520: 20 54 4f 52 54 20 4f 52 20 4f 54 48 45 52 57 49   TORT OR OTHERWI
0530: 53 45 2c 20 41 52 49 53 49 4e 47 0d 0a 20 2a 20  SE, ARISING.. * 
0540: 20 20 46 52 4f 4d 2c 20 4f 55 54 20 4f 46 20 4f    FROM, OUT OF O
0550: 52 20 49 4e 20 43 4f 4e 4e 45 43 54 49 4f 4e 20  R IN CONNECTION 
0560: 57 49 54 48 20 54 48 45 20 53 4f 46 54 57 41 52  WITH THE SOFTWAR
0570: 45 20 4f 52 20 54 48 45 20 55 53 45 20 4f 52 20  E OR THE USE OR 
0580: 4f 54 48 45 52 0d 0a 20 2a 20 20 20 44 45 41 4c  OTHER.. *   DEAL
0590: 49 4e 47 53 20 49 4e 20 54 48 45 20 53 4f 46 54  INGS IN THE SOFT
05a0: 57 41 52 45 2e 0d 0a 20 2a 0d 0a 20 2a 20 4a 53  WARE... *.. * JS
05b0: 48 69 6e 74 20 77 61 73 20 66 6f 72 6b 65 64 20  Hint was forked 
05c0: 66 72 6f 6d 20 74 68 65 20 32 30 31 30 2d 31 32  from the 2010-12
05d0: 2d 31 36 20 65 64 69 74 69 6f 6e 20 6f 66 20 4a  -16 edition of J
05e0: 53 4c 69 6e 74 2e 0d 0a 20 2a 0d 0a 20 2a 2f 0d  SLint... *.. */.
05f0: 0a 0d 0a 2f 2a 0d 0a 20 4a 53 48 49 4e 54 20 69  .../*.. JSHINT i
0600: 73 20 61 20 67 6c 6f 62 61 6c 20 66 75 6e 63 74  s a global funct
0610: 69 6f 6e 2e 20 49 74 20 74 61 6b 65 73 20 74 77  ion. It takes tw
0620: 6f 20 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 0d  o parameters....
0630: 0a 20 20 20 20 20 76 61 72 20 6d 79 52 65 73 75  .     var myResu
0640: 6c 74 20 3d 20 4a 53 48 49 4e 54 28 73 6f 75 72  lt = JSHINT(sour
0650: 63 65 2c 20 6f 70 74 69 6f 6e 29 3b 0d 0a 0d 0a  ce, option);....
0660: 20 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   The first param
0670: 65 74 65 72 20 69 73 20 65 69 74 68 65 72 20 61  eter is either a
0680: 20 73 74 72 69 6e 67 20 6f 72 20 61 6e 20 61 72   string or an ar
0690: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 2e 20  ray of strings. 
06a0: 49 66 20 69 74 20 69 73 20 61 0d 0a 20 73 74 72  If it is a.. str
06b0: 69 6e 67 2c 20 69 74 20 77 69 6c 6c 20 62 65 20  ing, it will be 
06c0: 73 70 6c 69 74 20 6f 6e 20 27 5c 6e 27 20 6f 72  split on '\n' or
06d0: 20 27 5c 72 27 2e 20 49 66 20 69 74 20 69 73 20   '\r'. If it is 
06e0: 61 6e 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  an array of stri
06f0: 6e 67 73 2c 20 69 74 0d 0a 20 69 73 20 61 73 73  ngs, it.. is ass
0700: 75 6d 65 64 20 74 68 61 74 20 65 61 63 68 20 73  umed that each s
0710: 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 73  tring represents
0720: 20 6f 6e 65 20 6c 69 6e 65 2e 20 54 68 65 20 73   one line. The s
0730: 6f 75 72 63 65 20 63 61 6e 20 62 65 20 61 0d 0a  ource can be a..
0740: 20 4a 61 76 61 53 63 72 69 70 74 20 74 65 78 74   JavaScript text
0750: 20 6f 72 20 61 20 4a 53 4f 4e 20 74 65 78 74 2e   or a JSON text.
0760: 0d 0a 0d 0a 20 54 68 65 20 73 65 63 6f 6e 64 20  .... The second 
0770: 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 6e 20  parameter is an 
0780: 6f 70 74 69 6f 6e 61 6c 20 6f 62 6a 65 63 74 20  optional object 
0790: 6f 66 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68  of options which
07a0: 20 63 6f 6e 74 72 6f 6c 20 74 68 65 0d 0a 20 6f   control the.. o
07b0: 70 65 72 61 74 69 6f 6e 20 6f 66 20 4a 53 48 49  peration of JSHI
07c0: 4e 54 2e 20 4d 6f 73 74 20 6f 66 20 74 68 65 20  NT. Most of the 
07d0: 6f 70 74 69 6f 6e 73 20 61 72 65 20 62 6f 6f 6c  options are bool
07e0: 65 61 6e 73 3a 20 54 68 65 79 20 61 72 65 20 61  eans: They are a
07f0: 6c 6c 0d 0a 20 6f 70 74 69 6f 6e 61 6c 20 61 6e  ll.. optional an
0800: 64 20 68 61 76 65 20 61 20 64 65 66 61 75 6c 74  d have a default
0810: 20 76 61 6c 75 65 20 6f 66 20 66 61 6c 73 65 2e   value of false.
0820: 20 4f 6e 65 20 6f 66 20 74 68 65 20 6f 70 74 69   One of the opti
0830: 6f 6e 73 2c 20 70 72 65 64 65 66 2c 0d 0a 20 63  ons, predef,.. c
0840: 61 6e 20 62 65 20 61 6e 20 61 72 72 61 79 20 6f  an be an array o
0850: 66 20 6e 61 6d 65 73 2c 20 77 68 69 63 68 20 77  f names, which w
0860: 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 64  ill be used to d
0870: 65 63 6c 61 72 65 20 67 6c 6f 62 61 6c 20 76 61  eclare global va
0880: 72 69 61 62 6c 65 73 2c 0d 0a 20 6f 72 20 61 6e  riables,.. or an
0890: 20 6f 62 6a 65 63 74 20 77 68 6f 73 65 20 6b 65   object whose ke
08a0: 79 73 20 61 72 65 20 75 73 65 64 20 61 73 20 67  ys are used as g
08b0: 6c 6f 62 61 6c 20 6e 61 6d 65 73 2c 20 77 69 74  lobal names, wit
08c0: 68 20 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  h a boolean valu
08d0: 65 0d 0a 20 74 68 61 74 20 64 65 74 65 72 6d 69  e.. that determi
08e0: 6e 65 73 20 69 66 20 74 68 65 79 20 61 72 65 20  nes if they are 
08f0: 61 73 73 69 67 6e 61 62 6c 65 2e 0d 0a 0d 0a 20  assignable..... 
0900: 49 66 20 69 74 20 63 68 65 63 6b 73 20 6f 75 74  If it checks out
0910: 2c 20 4a 53 48 49 4e 54 20 72 65 74 75 72 6e 73  , JSHINT returns
0920: 20 74 72 75 65 2e 20 4f 74 68 65 72 77 69 73 65   true. Otherwise
0930: 2c 20 69 74 20 72 65 74 75 72 6e 73 20 66 61 6c  , it returns fal
0940: 73 65 2e 0d 0a 0d 0a 20 49 66 20 66 61 6c 73 65  se..... If false
0950: 2c 20 79 6f 75 20 63 61 6e 20 69 6e 73 70 65 63  , you can inspec
0960: 74 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73 20  t JSHINT.errors 
0970: 74 6f 20 66 69 6e 64 20 6f 75 74 20 74 68 65 20  to find out the 
0980: 70 72 6f 62 6c 65 6d 73 2e 0d 0a 20 4a 53 48 49  problems... JSHI
0990: 4e 54 2e 65 72 72 6f 72 73 20 69 73 20 61 6e 20  NT.errors is an 
09a0: 61 72 72 61 79 20 6f 66 20 6f 62 6a 65 63 74 73  array of objects
09b0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 73   containing thes
09c0: 65 20 6d 65 6d 62 65 72 73 3a 0d 0a 0d 0a 20 7b  e members:.... {
09d0: 0d 0a 20 20 20 20 20 6c 69 6e 65 20 20 20 20 20  ..     line     
09e0: 20 3a 20 54 68 65 20 6c 69 6e 65 20 28 72 65 6c   : The line (rel
09f0: 61 74 69 76 65 20 74 6f 20 31 29 20 61 74 20 77  ative to 1) at w
0a00: 68 69 63 68 20 74 68 65 20 6c 69 6e 74 20 77 61  hich the lint wa
0a10: 73 20 66 6f 75 6e 64 0d 0a 20 20 20 20 20 63 68  s found..     ch
0a20: 61 72 61 63 74 65 72 20 3a 20 54 68 65 20 63 68  aracter : The ch
0a30: 61 72 61 63 74 65 72 20 28 72 65 6c 61 74 69 76  aracter (relativ
0a40: 65 20 74 6f 20 31 29 20 61 74 20 77 68 69 63 68  e to 1) at which
0a50: 20 74 68 65 20 6c 69 6e 74 20 77 61 73 20 66 6f   the lint was fo
0a60: 75 6e 64 0d 0a 20 20 20 20 20 72 65 61 73 6f 6e  und..     reason
0a70: 20 20 20 20 3a 20 54 68 65 20 70 72 6f 62 6c 65      : The proble
0a80: 6d 0d 0a 20 20 20 20 20 65 76 69 64 65 6e 63 65  m..     evidence
0a90: 20 20 3a 20 54 68 65 20 74 65 78 74 20 6c 69 6e    : The text lin
0aa0: 65 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 70  e in which the p
0ab0: 72 6f 62 6c 65 6d 20 6f 63 63 75 72 72 65 64 0d  roblem occurred.
0ac0: 0a 20 20 20 20 20 72 61 77 20 20 20 20 20 20 20  .     raw       
0ad0: 3a 20 54 68 65 20 72 61 77 20 6d 65 73 73 61 67  : The raw messag
0ae0: 65 20 62 65 66 6f 72 65 20 74 68 65 20 64 65 74  e before the det
0af0: 61 69 6c 73 20 77 65 72 65 20 69 6e 73 65 72 74  ails were insert
0b00: 65 64 0d 0a 20 20 20 20 20 61 20 20 20 20 20 20  ed..     a      
0b10: 20 20 20 3a 20 54 68 65 20 66 69 72 73 74 20 64     : The first d
0b20: 65 74 61 69 6c 0d 0a 20 20 20 20 20 62 20 20 20  etail..     b   
0b30: 20 20 20 20 20 20 3a 20 54 68 65 20 73 65 63 6f        : The seco
0b40: 6e 64 20 64 65 74 61 69 6c 0d 0a 20 20 20 20 20  nd detail..     
0b50: 63 20 20 20 20 20 20 20 20 20 3a 20 54 68 65 20  c         : The 
0b60: 74 68 69 72 64 20 64 65 74 61 69 6c 0d 0a 20 20  third detail..  
0b70: 20 20 20 64 20 20 20 20 20 20 20 20 20 3a 20 54     d         : T
0b80: 68 65 20 66 6f 75 72 74 68 20 64 65 74 61 69 6c  he fourth detail
0b90: 0d 0a 20 7d 0d 0a 0d 0a 20 49 66 20 61 20 66 61  .. }.... If a fa
0ba0: 74 61 6c 20 65 72 72 6f 72 20 77 61 73 20 66 6f  tal error was fo
0bb0: 75 6e 64 2c 20 61 20 6e 75 6c 6c 20 77 69 6c 6c  und, a null will
0bc0: 20 62 65 20 74 68 65 20 6c 61 73 74 20 65 6c 65   be the last ele
0bd0: 6d 65 6e 74 20 6f 66 20 74 68 65 0d 0a 20 4a 53  ment of the.. JS
0be0: 48 49 4e 54 2e 65 72 72 6f 72 73 20 61 72 72 61  HINT.errors arra
0bf0: 79 2e 0d 0a 0d 0a 20 59 6f 75 20 63 61 6e 20 72  y..... You can r
0c00: 65 71 75 65 73 74 20 61 20 64 61 74 61 20 73 74  equest a data st
0c10: 72 75 63 74 75 72 65 20 77 68 69 63 68 20 63 6f  ructure which co
0c20: 6e 74 61 69 6e 73 20 4a 53 48 69 6e 74 27 73 20  ntains JSHint's 
0c30: 72 65 73 75 6c 74 73 2e 0d 0a 0d 0a 20 20 20 20  results.....    
0c40: 20 76 61 72 20 6d 79 44 61 74 61 20 3d 20 4a 53   var myData = JS
0c50: 48 49 4e 54 2e 64 61 74 61 28 29 3b 0d 0a 0d 0a  HINT.data();....
0c60: 20 49 74 20 72 65 74 75 72 6e 73 20 61 20 73 74   It returns a st
0c70: 72 75 63 74 75 72 65 20 77 69 74 68 20 74 68 69  ructure with thi
0c80: 73 20 66 6f 72 6d 3a 0d 0a 0d 0a 20 7b 0d 0a 20  s form:.... {.. 
0c90: 20 20 20 20 65 72 72 6f 72 73 3a 20 5b 0d 0a 20      errors: [.. 
0ca0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
0cb0: 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20 4e 55          line: NU
0cc0: 4d 42 45 52 2c 0d 0a 20 20 20 20 20 20 20 20 20  MBER,..         
0cd0: 20 20 20 20 63 68 61 72 61 63 74 65 72 3a 20 4e      character: N
0ce0: 55 4d 42 45 52 2c 0d 0a 20 20 20 20 20 20 20 20  UMBER,..        
0cf0: 20 20 20 20 20 72 65 61 73 6f 6e 3a 20 53 54 52       reason: STR
0d00: 49 4e 47 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ING,..          
0d10: 20 20 20 65 76 69 64 65 6e 63 65 3a 20 53 54 52     evidence: STR
0d20: 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d  ING..         }.
0d30: 0a 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 66  .     ],..     f
0d40: 75 6e 63 74 69 6f 6e 73 3a 20 5b 0d 0a 20 20 20  unctions: [..   
0d50: 20 20 20 20 20 20 6e 61 6d 65 3a 20 53 54 52 49        name: STRI
0d60: 4e 47 2c 0d 0a 20 20 20 20 20 20 20 20 20 6c 69  NG,..         li
0d70: 6e 65 3a 20 4e 55 4d 42 45 52 2c 0d 0a 20 20 20  ne: NUMBER,..   
0d80: 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 3a        character:
0d90: 20 4e 55 4d 42 45 52 2c 0d 0a 20 20 20 20 20 20   NUMBER,..      
0da0: 20 20 20 6c 61 73 74 3a 20 4e 55 4d 42 45 52 2c     last: NUMBER,
0db0: 0d 0a 20 20 20 20 20 20 20 20 20 6c 61 73 74 63  ..         lastc
0dc0: 68 61 72 61 63 74 65 72 3a 20 4e 55 4d 42 45 52  haracter: NUMBER
0dd0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 70 61 72 61  ,..         para
0de0: 6d 3a 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 20  m: [..          
0df0: 20 20 20 53 54 52 49 4e 47 0d 0a 20 20 20 20 20     STRING..     
0e00: 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 20 20 20      ],..        
0e10: 20 63 6c 6f 73 75 72 65 3a 20 5b 0d 0a 20 20 20   closure: [..   
0e20: 20 20 20 20 20 20 20 20 20 20 53 54 52 49 4e 47            STRING
0e30: 0d 0a 20 20 20 20 20 20 20 20 20 5d 2c 0d 0a 20  ..         ],.. 
0e40: 20 20 20 20 20 20 20 20 76 61 72 3a 20 5b 0d 0a          var: [..
0e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 54 52               STR
0e60: 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 5d 2c  ING..         ],
0e70: 0d 0a 20 20 20 20 20 20 20 20 20 65 78 63 65 70  ..         excep
0e80: 74 69 6f 6e 3a 20 5b 0d 0a 20 20 20 20 20 20 20  tion: [..       
0e90: 20 20 20 20 20 20 53 54 52 49 4e 47 0d 0a 20 20        STRING..  
0ea0: 20 20 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20         ],..     
0eb0: 20 20 20 20 6f 75 74 65 72 3a 20 5b 0d 0a 20 20      outer: [..  
0ec0: 20 20 20 20 20 20 20 20 20 20 20 53 54 52 49 4e             STRIN
0ed0: 47 0d 0a 20 20 20 20 20 20 20 20 20 5d 2c 0d 0a  G..         ],..
0ee0: 20 20 20 20 20 20 20 20 20 75 6e 75 73 65 64 3a           unused:
0ef0: 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   [..            
0f00: 20 53 54 52 49 4e 47 0d 0a 20 20 20 20 20 20 20   STRING..       
0f10: 20 20 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 67    ],..         g
0f20: 6c 6f 62 61 6c 3a 20 5b 0d 0a 20 20 20 20 20 20  lobal: [..      
0f30: 20 20 20 20 20 20 20 53 54 52 49 4e 47 0d 0a 20         STRING.. 
0f40: 20 20 20 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20          ],..    
0f50: 20 20 20 20 20 6c 61 62 65 6c 3a 20 5b 0d 0a 20       label: [.. 
0f60: 20 20 20 20 20 20 20 20 20 20 20 20 53 54 52 49              STRI
0f70: 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 5d 0d 0a  NG..         ]..
0f80: 20 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 67 6c       ],..     gl
0f90: 6f 62 61 6c 73 3a 20 5b 0d 0a 20 20 20 20 20 20  obals: [..      
0fa0: 20 20 20 53 54 52 49 4e 47 0d 0a 20 20 20 20 20     STRING..     
0fb0: 5d 2c 0d 0a 20 20 20 20 20 6d 65 6d 62 65 72 3a  ],..     member:
0fc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 53 54 52   {..         STR
0fd0: 49 4e 47 3a 20 4e 55 4d 42 45 52 0d 0a 20 20 20  ING: NUMBER..   
0fe0: 20 20 7d 2c 0d 0a 20 20 20 20 20 75 6e 75 73 65    },..     unuse
0ff0: 64 3a 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 7b  d: [..         {
1000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  ..             n
1010: 61 6d 65 3a 20 53 54 52 49 4e 47 2c 0d 0a 20 20  ame: STRING,..  
1020: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a             line:
1030: 20 4e 55 4d 42 45 52 0d 0a 20 20 20 20 20 20 20   NUMBER..       
1040: 20 20 7d 0d 0a 20 20 20 20 20 5d 2c 0d 0a 20 20    }..     ],..  
1050: 20 20 20 69 6d 70 6c 69 65 64 73 3a 20 5b 0d 0a     implieds: [..
1060: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1070: 20 20 20 20 20 20 20 20 20 6e 61 6d 65 3a 20 53           name: S
1080: 54 52 49 4e 47 2c 0d 0a 20 20 20 20 20 20 20 20  TRING,..        
1090: 20 20 20 20 20 6c 69 6e 65 3a 20 4e 55 4d 42 45       line: NUMBE
10a0: 52 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  R..         }.. 
10b0: 20 20 20 20 5d 2c 0d 0a 20 20 20 20 20 75 72 6c      ],..     url
10c0: 73 3a 20 5b 0d 0a 20 20 20 20 20 20 20 20 20 53  s: [..         S
10d0: 54 52 49 4e 47 0d 0a 20 20 20 20 20 5d 2c 0d 0a  TRING..     ],..
10e0: 20 20 20 20 20 6a 73 6f 6e 3a 20 42 4f 4f 4c 45       json: BOOLE
10f0: 41 4e 0d 0a 20 7d 0d 0a 0d 0a 20 45 6d 70 74 79  AN.. }.... Empty
1100: 20 61 72 72 61 79 73 20 77 69 6c 6c 20 6e 6f 74   arrays will not
1110: 20 62 65 20 69 6e 63 6c 75 64 65 64 2e 0d 0a 0d   be included....
1120: 0a 2a 2f 0d 0a 0d 0a 2f 2a 6a 73 68 69 6e 74 0d  .*/..../*jshint.
1130: 0a 20 65 76 69 6c 3a 20 74 72 75 65 2c 20 6e 6f  . evil: true, no
1140: 6d 65 6e 3a 20 66 61 6c 73 65 2c 20 6f 6e 65 76  men: false, onev
1150: 61 72 3a 20 66 61 6c 73 65 2c 20 72 65 67 65 78  ar: false, regex
1160: 70 3a 20 66 61 6c 73 65 2c 20 73 74 72 69 63 74  p: false, strict
1170: 3a 20 74 72 75 65 2c 20 62 6f 73 73 3a 20 74 72  : true, boss: tr
1180: 75 65 2c 0d 0a 20 75 6e 64 65 66 3a 20 74 72 75  ue,.. undef: tru
1190: 65 2c 20 6d 61 78 6c 65 6e 3a 20 31 30 30 2c 20  e, maxlen: 100, 
11a0: 69 6e 64 65 6e 74 3a 20 34 2c 20 71 75 6f 74 6d  indent: 4, quotm
11b0: 61 72 6b 3a 20 64 6f 75 62 6c 65 2c 20 75 6e 75  ark: double, unu
11c0: 73 65 64 3a 20 74 72 75 65 0d 0a 2a 2f 0d 0a 0d  sed: true..*/...
11d0: 0a 2f 2a 6d 65 6d 62 65 72 73 20 22 5c 62 22 2c  ./*members "\b",
11e0: 20 22 5c 74 22 2c 20 22 5c 6e 22 2c 20 22 5c 66   "\t", "\n", "\f
11f0: 22 2c 20 22 5c 72 22 2c 20 22 21 3d 22 2c 20 22  ", "\r", "!=", "
1200: 21 3d 3d 22 2c 20 22 5c 22 22 2c 20 22 25 22 2c  !==", "\"", "%",
1210: 20 22 28 62 65 67 69 6e 29 22 2c 0d 0a 20 22 28   "(begin)",.. "(
1220: 62 72 65 61 6b 61 67 65 29 22 2c 20 22 28 63 68  breakage)", "(ch
1230: 61 72 61 63 74 65 72 29 22 2c 20 22 28 63 6f 6e  aracter)", "(con
1240: 74 65 78 74 29 22 2c 20 22 28 65 72 72 6f 72 29  text)", "(error)
1250: 22 2c 20 22 28 65 78 70 6c 69 63 69 74 4e 65 77  ", "(explicitNew
1260: 63 61 70 29 22 2c 20 22 28 67 6c 6f 62 61 6c 29  cap)", "(global)
1270: 22 2c 0d 0a 20 22 28 69 64 65 6e 74 69 66 69 65  ",.. "(identifie
1280: 72 29 22 2c 20 22 28 6c 61 73 74 29 22 2c 20 22  r)", "(last)", "
1290: 28 6c 61 73 74 63 68 61 72 61 63 74 65 72 29 22  (lastcharacter)"
12a0: 2c 20 22 28 6c 69 6e 65 29 22 2c 20 22 28 6c 6f  , "(line)", "(lo
12b0: 6f 70 61 67 65 29 22 2c 20 22 28 6e 61 6d 65 29  opage)", "(name)
12c0: 22 2c 0d 0a 20 22 28 6f 6e 65 76 61 72 29 22 2c  ",.. "(onevar)",
12d0: 20 22 28 70 61 72 61 6d 73 29 22 2c 20 22 28 73   "(params)", "(s
12e0: 63 6f 70 65 29 22 2c 20 22 28 73 74 61 74 65 6d  cope)", "(statem
12f0: 65 6e 74 29 22 2c 20 22 28 76 65 72 62 29 22 2c  ent)", "(verb)",
1300: 20 22 28 74 6f 6b 65 6e 73 29 22 2c 0d 0a 20 22   "(tokens)",.. "
1310: 2a 22 2c 20 22 2b 22 2c 20 22 2b 2b 22 2c 20 22  *", "+", "++", "
1320: 2d 22 2c 20 22 2d 2d 22 2c 20 22 5c 2f 22 2c 20  -", "--", "\/", 
1330: 22 3c 22 2c 20 22 3c 3d 22 2c 20 22 3d 3d 22 2c  "<", "<=", "==",
1340: 0d 0a 20 22 3d 3d 3d 22 2c 20 22 3e 22 2c 20 22  .. "===", ">", "
1350: 3e 3d 22 2c 20 24 2c 20 24 24 2c 20 24 41 2c 20  >=", $, $$, $A, 
1360: 24 46 2c 20 24 48 2c 20 24 52 2c 20 24 62 72 65  $F, $H, $R, $bre
1370: 61 6b 2c 20 24 63 6f 6e 74 69 6e 75 65 2c 20 24  ak, $continue, $
1380: 77 2c 20 41 62 73 74 72 61 63 74 2c 20 41 6a 61  w, Abstract, Aja
1390: 78 2c 0d 0a 20 5f 5f 66 69 6c 65 6e 61 6d 65 2c  x,.. __filename,
13a0: 20 5f 5f 64 69 72 6e 61 6d 65 2c 20 41 63 74 69   __dirname, Acti
13b0: 76 65 58 4f 62 6a 65 63 74 2c 20 41 72 72 61 79  veXObject, Array
13c0: 2c 20 41 72 72 61 79 42 75 66 66 65 72 2c 20 41  , ArrayBuffer, A
13d0: 72 72 61 79 42 75 66 66 65 72 56 69 65 77 2c 20  rrayBufferView, 
13e0: 41 75 64 69 6f 2c 0d 0a 20 41 75 74 6f 63 6f 6d  Audio,.. Autocom
13f0: 70 6c 65 74 65 72 2c 20 41 73 73 65 74 73 2c 20  pleter, Assets, 
1400: 42 6f 6f 6c 65 61 6e 2c 20 42 75 69 6c 64 65 72  Boolean, Builder
1410: 2c 20 42 75 66 66 65 72 2c 20 42 72 6f 77 73 65  , Buffer, Browse
1420: 72 2c 20 43 4f 4d 2c 20 43 53 63 72 69 70 74 2c  r, COM, CScript,
1430: 20 43 61 6e 76 61 73 2c 0d 0a 20 43 75 73 74 6f   Canvas,.. Custo
1440: 6d 41 6e 69 6d 61 74 69 6f 6e 2c 20 43 6c 61 73  mAnimation, Clas
1450: 73 2c 20 43 6f 6e 74 72 6f 6c 2c 20 43 68 61 69  s, Control, Chai
1460: 6e 2c 20 43 6f 6c 6f 72 2c 20 43 6f 6f 6b 69 65  n, Color, Cookie
1470: 2c 20 43 6f 72 65 2c 20 44 61 74 61 56 69 65 77  , Core, DataView
1480: 2c 20 44 61 74 65 2c 0d 0a 20 44 65 62 75 67 2c  , Date,.. Debug,
1490: 20 44 72 61 67 67 61 62 6c 65 2c 20 44 72 61 67   Draggable, Drag
14a0: 67 61 62 6c 65 73 2c 20 44 72 6f 70 70 61 62 6c  gables, Droppabl
14b0: 65 73 2c 20 44 6f 63 75 6d 65 6e 74 2c 20 44 6f  es, Document, Do
14c0: 6d 52 65 61 64 79 2c 20 44 4f 4d 52 65 61 64 79  mReady, DOMReady
14d0: 2c 20 44 4f 4d 50 61 72 73 65 72 2c 20 44 72 61  , DOMParser, Dra
14e0: 67 2c 0d 0a 20 45 2c 20 45 6e 75 6d 65 72 61 74  g,.. E, Enumerat
14f0: 6f 72 2c 20 45 6e 75 6d 65 72 61 62 6c 65 2c 20  or, Enumerable, 
1500: 45 6c 65 6d 65 6e 74 2c 20 45 6c 65 6d 65 6e 74  Element, Element
1510: 73 2c 20 45 72 72 6f 72 2c 20 45 66 66 65 63 74  s, Error, Effect
1520: 2c 20 45 76 61 6c 45 72 72 6f 72 2c 20 45 76 65  , EvalError, Eve
1530: 6e 74 2c 0d 0a 20 45 76 65 6e 74 73 2c 20 46 61  nt,.. Events, Fa
1540: 64 65 41 6e 69 6d 61 74 69 6f 6e 2c 20 46 69 65  deAnimation, Fie
1550: 6c 64 2c 20 46 6c 61 73 68 2c 20 46 6c 6f 61 74  ld, Flash, Float
1560: 33 32 41 72 72 61 79 2c 20 46 6c 6f 61 74 36 34  32Array, Float64
1570: 41 72 72 61 79 2c 20 46 6f 72 6d 2c 0d 0a 20 46  Array, Form,.. F
1580: 6f 72 6d 46 69 65 6c 64 2c 20 46 72 61 6d 65 2c  ormField, Frame,
1590: 20 46 6f 72 6d 44 61 74 61 2c 20 46 75 6e 63 74   FormData, Funct
15a0: 69 6f 6e 2c 20 46 78 2c 20 47 65 74 4f 62 6a 65  ion, Fx, GetObje
15b0: 63 74 2c 20 47 72 6f 75 70 2c 20 48 61 73 68 2c  ct, Group, Hash,
15c0: 20 48 6f 74 4b 65 79 2c 0d 0a 20 48 54 4d 4c 45   HotKey,.. HTMLE
15d0: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 41 6e 63 68  lement, HTMLAnch
15e0: 6f 72 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 42  orElement, HTMLB
15f0: 61 73 65 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c  aseElement, HTML
1600: 42 6c 6f 63 6b 71 75 6f 74 65 45 6c 65 6d 65 6e  BlockquoteElemen
1610: 74 2c 0d 0a 20 48 54 4d 4c 42 6f 64 79 45 6c 65  t,.. HTMLBodyEle
1620: 6d 65 6e 74 2c 20 48 54 4d 4c 42 52 45 6c 65 6d  ment, HTMLBRElem
1630: 65 6e 74 2c 20 48 54 4d 4c 42 75 74 74 6f 6e 45  ent, HTMLButtonE
1640: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 43 61 6e 76  lement, HTMLCanv
1650: 61 73 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 44  asElement, HTMLD
1660: 69 72 65 63 74 6f 72 79 45 6c 65 6d 65 6e 74 2c  irectoryElement,
1670: 0d 0a 20 48 54 4d 4c 44 69 76 45 6c 65 6d 65 6e  .. HTMLDivElemen
1680: 74 2c 20 48 54 4d 4c 44 4c 69 73 74 45 6c 65 6d  t, HTMLDListElem
1690: 65 6e 74 2c 20 48 54 4d 4c 46 69 65 6c 64 53 65  ent, HTMLFieldSe
16a0: 74 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54 4d 4c  tElement,.. HTML
16b0: 46 6f 6e 74 45 6c 65 6d 65 6e 74 2c 20 48 54 4d  FontElement, HTM
16c0: 4c 46 6f 72 6d 45 6c 65 6d 65 6e 74 2c 20 48 54  LFormElement, HT
16d0: 4d 4c 46 72 61 6d 65 45 6c 65 6d 65 6e 74 2c 20  MLFrameElement, 
16e0: 48 54 4d 4c 46 72 61 6d 65 53 65 74 45 6c 65 6d  HTMLFrameSetElem
16f0: 65 6e 74 2c 0d 0a 20 48 54 4d 4c 48 65 61 64 45  ent,.. HTMLHeadE
1700: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 48 65 61 64  lement, HTMLHead
1710: 69 6e 67 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c  ingElement, HTML
1720: 48 52 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 48  HRElement, HTMLH
1730: 74 6d 6c 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54  tmlElement,.. HT
1740: 4d 4c 49 46 72 61 6d 65 45 6c 65 6d 65 6e 74 2c  MLIFrameElement,
1750: 20 48 54 4d 4c 49 6d 61 67 65 45 6c 65 6d 65 6e   HTMLImageElemen
1760: 74 2c 20 48 54 4d 4c 49 6e 70 75 74 45 6c 65 6d  t, HTMLInputElem
1770: 65 6e 74 2c 20 48 54 4d 4c 49 73 49 6e 64 65 78  ent, HTMLIsIndex
1780: 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54 4d 4c 4c  Element,.. HTMLL
1790: 61 62 65 6c 45 6c 65 6d 65 6e 74 2c 20 48 54 4d  abelElement, HTM
17a0: 4c 4c 61 79 65 72 45 6c 65 6d 65 6e 74 2c 20 48  LLayerElement, H
17b0: 54 4d 4c 4c 65 67 65 6e 64 45 6c 65 6d 65 6e 74  TMLLegendElement
17c0: 2c 20 48 54 4d 4c 4c 49 45 6c 65 6d 65 6e 74 2c  , HTMLLIElement,
17d0: 0d 0a 20 48 54 4d 4c 4c 69 6e 6b 45 6c 65 6d 65  .. HTMLLinkEleme
17e0: 6e 74 2c 20 48 54 4d 4c 4d 61 70 45 6c 65 6d 65  nt, HTMLMapEleme
17f0: 6e 74 2c 20 48 54 4d 4c 4d 65 6e 75 45 6c 65 6d  nt, HTMLMenuElem
1800: 65 6e 74 2c 20 48 54 4d 4c 4d 65 74 61 45 6c 65  ent, HTMLMetaEle
1810: 6d 65 6e 74 2c 0d 0a 20 48 54 4d 4c 4d 6f 64 45  ment,.. HTMLModE
1820: 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 4f 62 6a 65  lement, HTMLObje
1830: 63 74 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 4f  ctElement, HTMLO
1840: 4c 69 73 74 45 6c 65 6d 65 6e 74 2c 20 48 54 4d  ListElement, HTM
1850: 4c 4f 70 74 47 72 6f 75 70 45 6c 65 6d 65 6e 74  LOptGroupElement
1860: 2c 0d 0a 20 48 54 4d 4c 4f 70 74 69 6f 6e 45 6c  ,.. HTMLOptionEl
1870: 65 6d 65 6e 74 2c 20 48 54 4d 4c 50 61 72 61 67  ement, HTMLParag
1880: 72 61 70 68 45 6c 65 6d 65 6e 74 2c 20 48 54 4d  raphElement, HTM
1890: 4c 50 61 72 61 6d 45 6c 65 6d 65 6e 74 2c 20 48  LParamElement, H
18a0: 54 4d 4c 50 72 65 45 6c 65 6d 65 6e 74 2c 0d 0a  TMLPreElement,..
18b0: 20 48 54 4d 4c 51 75 6f 74 65 45 6c 65 6d 65 6e   HTMLQuoteElemen
18c0: 74 2c 20 48 54 4d 4c 53 63 72 69 70 74 45 6c 65  t, HTMLScriptEle
18d0: 6d 65 6e 74 2c 20 48 54 4d 4c 53 65 6c 65 63 74  ment, HTMLSelect
18e0: 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 53 74 79  Element, HTMLSty
18f0: 6c 65 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 74 6d  leElement,.. Htm
1900: 6c 54 61 62 6c 65 2c 20 48 54 4d 4c 54 61 62 6c  lTable, HTMLTabl
1910: 65 43 61 70 74 69 6f 6e 45 6c 65 6d 65 6e 74 2c  eCaptionElement,
1920: 20 48 54 4d 4c 54 61 62 6c 65 43 65 6c 6c 45 6c   HTMLTableCellEl
1930: 65 6d 65 6e 74 2c 20 48 54 4d 4c 54 61 62 6c 65  ement, HTMLTable
1940: 43 6f 6c 45 6c 65 6d 65 6e 74 2c 0d 0a 20 48 54  ColElement,.. HT
1950: 4d 4c 54 61 62 6c 65 45 6c 65 6d 65 6e 74 2c 20  MLTableElement, 
1960: 48 54 4d 4c 54 61 62 6c 65 52 6f 77 45 6c 65 6d  HTMLTableRowElem
1970: 65 6e 74 2c 20 48 54 4d 4c 54 61 62 6c 65 53 65  ent, HTMLTableSe
1980: 63 74 69 6f 6e 45 6c 65 6d 65 6e 74 2c 0d 0a 20  ctionElement,.. 
1990: 48 54 4d 4c 54 65 78 74 41 72 65 61 45 6c 65 6d  HTMLTextAreaElem
19a0: 65 6e 74 2c 20 48 54 4d 4c 54 69 74 6c 65 45 6c  ent, HTMLTitleEl
19b0: 65 6d 65 6e 74 2c 20 48 54 4d 4c 55 4c 69 73 74  ement, HTMLUList
19c0: 45 6c 65 6d 65 6e 74 2c 20 48 54 4d 4c 56 69 64  Element, HTMLVid
19d0: 65 6f 45 6c 65 6d 65 6e 74 2c 0d 0a 20 49 66 72  eoElement,.. Ifr
19e0: 61 6d 65 2c 20 49 66 72 61 6d 65 53 68 69 6d 2c  ame, IframeShim,
19f0: 20 49 6d 61 67 65 2c 20 69 6d 70 6f 72 74 53 63   Image, importSc
1a00: 72 69 70 74 73 2c 20 49 6e 74 31 36 41 72 72 61  ripts, Int16Arra
1a10: 79 2c 20 49 6e 74 33 32 41 72 72 61 79 2c 20 49  y, Int32Array, I
1a20: 6e 74 38 41 72 72 61 79 2c 0d 0a 20 49 6e 73 65  nt8Array,.. Inse
1a30: 72 74 69 6f 6e 2c 20 49 6e 70 75 74 56 61 6c 69  rtion, InputVali
1a40: 64 61 74 6f 72 2c 20 4a 53 4f 4e 2c 20 4b 65 79  dator, JSON, Key
1a50: 62 6f 61 72 64 2c 20 4c 6f 63 61 6c 65 2c 20 4c  board, Locale, L
1a60: 4e 31 30 2c 20 4c 4e 32 2c 20 4c 4f 47 31 30 45  N10, LN2, LOG10E
1a70: 2c 20 4c 4f 47 32 45 2c 0d 0a 20 4d 41 58 5f 56  , LOG2E,.. MAX_V
1a80: 41 4c 55 45 2c 20 4d 49 4e 5f 56 41 4c 55 45 2c  ALUE, MIN_VALUE,
1a90: 20 4d 61 73 6b 2c 20 4d 61 74 68 2c 20 4d 65 6e   Mask, Math, Men
1aa0: 75 49 74 65 6d 2c 20 4d 65 73 73 61 67 65 43 68  uItem, MessageCh
1ab0: 61 6e 6e 65 6c 2c 20 4d 65 73 73 61 67 65 45 76  annel, MessageEv
1ac0: 65 6e 74 2c 20 4d 65 73 73 61 67 65 50 6f 72 74  ent, MessagePort
1ad0: 2c 0d 0a 20 4d 6f 76 65 41 6e 69 6d 61 74 69 6f  ,.. MoveAnimatio
1ae0: 6e 2c 20 4d 6f 6f 54 6f 6f 6c 73 2c 20 4d 75 74  n, MooTools, Mut
1af0: 61 74 69 6f 6e 4f 62 73 65 72 76 65 72 2c 20 4e  ationObserver, N
1b00: 61 74 69 76 65 2c 20 4e 45 47 41 54 49 56 45 5f  ative, NEGATIVE_
1b10: 49 4e 46 49 4e 49 54 59 2c 20 4e 6f 64 65 2c 20  INFINITY, Node, 
1b20: 4e 6f 64 65 46 69 6c 74 65 72 2c 0d 0a 20 4e 75  NodeFilter,.. Nu
1b30: 6d 62 65 72 2c 20 4f 62 6a 65 63 74 2c 20 4f 62  mber, Object, Ob
1b40: 6a 65 63 74 52 61 6e 67 65 2c 0d 0a 20 4f 70 74  jectRange,.. Opt
1b50: 69 6f 6e 2c 20 4f 70 74 69 6f 6e 73 2c 20 4f 76  ion, Options, Ov
1b60: 65 72 54 65 78 74 2c 20 50 49 2c 20 50 4f 53 49  erText, PI, POSI
1b70: 54 49 56 45 5f 49 4e 46 49 4e 49 54 59 2c 20 50  TIVE_INFINITY, P
1b80: 65 72 69 6f 64 69 63 61 6c 45 78 65 63 75 74 65  eriodicalExecute
1b90: 72 2c 20 50 6f 69 6e 74 2c 20 50 6f 73 69 74 69  r, Point, Positi
1ba0: 6f 6e 2c 20 50 72 6f 74 6f 74 79 70 65 2c 0d 0a  on, Prototype,..
1bb0: 20 52 61 6e 67 65 45 72 72 6f 72 2c 20 52 65 63   RangeError, Rec
1bc0: 74 61 6e 67 6c 65 2c 20 52 65 66 65 72 65 6e 63  tangle, Referenc
1bd0: 65 45 72 72 6f 72 2c 20 52 65 67 45 78 70 2c 20  eError, RegExp, 
1be0: 52 65 73 69 7a 65 41 6e 69 6d 61 74 69 6f 6e 2c  ResizeAnimation,
1bf0: 20 52 65 71 75 65 73 74 2c 20 52 6f 74 61 74 65   Request, Rotate
1c00: 41 6e 69 6d 61 74 69 6f 6e 2c 0d 0a 20 53 51 52  Animation,.. SQR
1c10: 54 31 5f 32 2c 20 53 51 52 54 32 2c 20 53 63 72  T1_2, SQRT2, Scr
1c20: 6f 6c 6c 42 61 72 2c 20 53 63 72 69 70 74 45 6e  ollBar, ScriptEn
1c30: 67 69 6e 65 2c 20 53 63 72 69 70 74 45 6e 67 69  gine, ScriptEngi
1c40: 6e 65 42 75 69 6c 64 56 65 72 73 69 6f 6e 2c 0d  neBuildVersion,.
1c50: 0a 20 53 63 72 69 70 74 45 6e 67 69 6e 65 4d 61  . ScriptEngineMa
1c60: 6a 6f 72 56 65 72 73 69 6f 6e 2c 20 53 63 72 69  jorVersion, Scri
1c70: 70 74 45 6e 67 69 6e 65 4d 69 6e 6f 72 56 65 72  ptEngineMinorVer
1c80: 73 69 6f 6e 2c 20 53 63 72 69 70 74 61 63 75 6c  sion, Scriptacul
1c90: 6f 75 73 2c 20 53 63 72 6f 6c 6c 65 72 2c 0d 0a  ous, Scroller,..
1ca0: 20 53 6c 69 63 6b 2c 20 53 6c 69 64 65 72 2c 20   Slick, Slider, 
1cb0: 53 65 6c 65 63 74 6f 72 2c 20 53 68 61 72 65 64  Selector, Shared
1cc0: 57 6f 72 6b 65 72 2c 20 53 74 72 69 6e 67 2c 20  Worker, String, 
1cd0: 53 74 79 6c 65 2c 20 53 79 6e 74 61 78 45 72 72  Style, SyntaxErr
1ce0: 6f 72 2c 20 53 6f 72 74 61 62 6c 65 2c 20 53 6f  or, Sortable, So
1cf0: 72 74 61 62 6c 65 73 2c 0d 0a 20 53 6f 72 74 61  rtables,.. Sorta
1d00: 62 6c 65 4f 62 73 65 72 76 65 72 2c 20 53 6f 75  bleObserver, Sou
1d10: 6e 64 2c 20 53 70 69 6e 6e 65 72 2c 20 53 79 73  nd, Spinner, Sys
1d20: 74 65 6d 2c 20 53 77 69 66 66 2c 20 54 65 78 74  tem, Swiff, Text
1d30: 2c 20 54 65 78 74 41 72 65 61 2c 20 54 65 6d 70  , TextArea, Temp
1d40: 6c 61 74 65 2c 0d 0a 20 54 69 6d 65 72 2c 20 54  late,.. Timer, T
1d50: 69 70 73 2c 20 54 79 70 65 2c 20 54 79 70 65 45  ips, Type, TypeE
1d60: 72 72 6f 72 2c 20 54 6f 67 67 6c 65 2c 20 54 72  rror, Toggle, Tr
1d70: 79 2c 20 22 75 73 65 20 73 74 72 69 63 74 22 2c  y, "use strict",
1d80: 20 75 6e 65 73 63 61 70 65 2c 20 55 52 49 2c 20   unescape, URI, 
1d90: 55 52 49 45 72 72 6f 72 2c 20 55 52 4c 2c 0d 0a  URIError, URL,..
1da0: 20 56 42 41 72 72 61 79 2c 20 57 53 48 2c 20 57   VBArray, WSH, W
1db0: 53 63 72 69 70 74 2c 20 58 44 6f 6d 61 69 6e 52  Script, XDomainR
1dc0: 65 71 75 65 73 74 2c 20 57 65 62 2c 20 57 69 6e  equest, Web, Win
1dd0: 64 6f 77 2c 20 58 4d 4c 44 4f 4d 2c 20 58 4d 4c  dow, XMLDOM, XML
1de0: 48 74 74 70 52 65 71 75 65 73 74 2c 20 58 4d 4c  HttpRequest, XML
1df0: 53 65 72 69 61 6c 69 7a 65 72 2c 0d 0a 20 58 50  Serializer,.. XP
1e00: 61 74 68 45 76 61 6c 75 61 74 6f 72 2c 20 58 50  athEvaluator, XP
1e10: 61 74 68 45 78 63 65 70 74 69 6f 6e 2c 20 58 50  athException, XP
1e20: 61 74 68 45 78 70 72 65 73 73 69 6f 6e 2c 20 58  athExpression, X
1e30: 50 61 74 68 4e 61 6d 65 73 70 61 63 65 2c 20 58  PathNamespace, X
1e40: 50 61 74 68 4e 53 52 65 73 6f 6c 76 65 72 2c 20  PathNSResolver, 
1e50: 58 50 61 74 68 52 65 73 75 6c 74 2c 0d 0a 20 22  XPathResult,.. "
1e60: 5c 5c 22 2c 20 61 2c 20 61 62 73 2c 20 61 64 64  \\", a, abs, add
1e70: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 2c 20 61  EventListener, a
1e80: 64 64 72 65 73 73 2c 20 61 6c 65 72 74 2c 20 61  ddress, alert, a
1e90: 70 70 6c 79 2c 20 61 70 70 6c 69 63 61 74 69 6f  pply, applicatio
1ea0: 6e 43 61 63 68 65 2c 20 61 72 67 75 6d 65 6e 74  nCache, argument
1eb0: 73 2c 20 61 72 69 74 79 2c 0d 0a 20 61 73 69 2c  s, arity,.. asi,
1ec0: 20 61 74 6f 62 2c 20 62 2c 20 62 61 73 69 63 2c   atob, b, basic,
1ed0: 20 62 61 73 69 63 54 6f 6b 65 6e 2c 20 62 69 74   basicToken, bit
1ee0: 77 69 73 65 2c 20 62 6c 61 63 6b 6c 69 73 74 2c  wise, blacklist,
1ef0: 20 62 6c 6f 63 6b 2c 20 62 6c 75 72 2c 20 62 6f   block, blur, bo
1f00: 6f 6c 4f 70 74 69 6f 6e 73 2c 20 62 6f 73 73 2c  olOptions, boss,
1f10: 0d 0a 20 62 72 6f 77 73 65 72 2c 20 62 74 6f 61  .. browser, btoa
1f20: 2c 20 63 2c 20 63 61 6c 6c 2c 20 63 61 6c 6c 65  , c, call, calle
1f30: 65 2c 20 63 61 6c 6c 65 72 2c 20 63 61 6d 65 6c  e, caller, camel
1f40: 63 61 73 65 2c 20 63 61 73 65 73 2c 20 63 68 61  case, cases, cha
1f50: 72 41 74 2c 20 63 68 61 72 43 6f 64 65 41 74 2c  rAt, charCodeAt,
1f60: 20 63 68 61 72 61 63 74 65 72 2c 0d 0a 20 63 6c   character,.. cl
1f70: 65 61 72 49 6e 74 65 72 76 61 6c 2c 20 63 6c 65  earInterval, cle
1f80: 61 72 54 69 6d 65 6f 75 74 2c 20 63 6c 6f 73 65  arTimeout, close
1f90: 2c 20 63 6c 6f 73 65 64 2c 20 63 6c 6f 73 75 72  , closed, closur
1fa0: 65 2c 20 63 6f 6d 6d 65 6e 74 2c 20 63 6f 6e 64  e, comment, cond
1fb0: 69 74 69 6f 6e 2c 20 63 6f 6e 66 69 72 6d 2c 20  ition, confirm, 
1fc0: 63 6f 6e 73 6f 6c 65 2c 0d 0a 20 63 6f 6e 73 74  console,.. const
1fd0: 72 75 63 74 6f 72 2c 20 63 6f 6e 74 65 6e 74 2c  ructor, content,
1fe0: 20 63 6f 75 63 68 2c 20 63 72 65 61 74 65 2c 20   couch, create, 
1ff0: 63 73 73 2c 20 63 75 72 6c 79 2c 20 64 2c 20 64  css, curly, d, d
2000: 61 74 61 2c 20 64 61 74 61 6c 69 73 74 2c 20 64  ata, datalist, d
2010: 64 2c 20 64 65 62 75 67 2c 20 64 65 63 6f 64 65  d, debug, decode
2020: 55 52 49 2c 0d 0a 20 64 65 63 6f 64 65 55 52 49  URI,.. decodeURI
2030: 43 6f 6d 70 6f 6e 65 6e 74 2c 20 64 65 66 61 75  Component, defau
2040: 6c 74 53 74 61 74 75 73 2c 20 64 65 66 69 6e 65  ltStatus, define
2050: 43 6c 61 73 73 2c 20 64 65 73 65 72 69 61 6c 69  Class, deseriali
2060: 7a 65 2c 20 64 65 76 65 6c 2c 20 64 6f 63 75 6d  ze, devel, docum
2070: 65 6e 74 2c 0d 0a 20 64 6f 6a 6f 2c 20 64 69 6a  ent,.. dojo, dij
2080: 69 74 2c 20 64 6f 6a 6f 78 2c 20 64 65 66 69 6e  it, dojox, defin
2090: 65 2c 20 65 6c 73 65 2c 20 65 6d 69 74 2c 20 65  e, else, emit, e
20a0: 6e 63 6f 64 65 55 52 49 2c 20 65 6e 63 6f 64 65  ncodeURI, encode
20b0: 55 52 49 43 6f 6d 70 6f 6e 65 6e 74 2c 0d 0a 20  URIComponent,.. 
20c0: 65 71 65 71 2c 20 65 71 65 71 65 71 2c 20 65 71  eqeq, eqeqeq, eq
20d0: 6e 75 6c 6c 2c 20 65 72 72 6f 72 73 2c 20 65 73  null, errors, es
20e0: 35 2c 20 65 73 63 61 70 65 2c 20 65 73 6e 65 78  5, escape, esnex
20f0: 74 2c 20 65 76 61 6c 2c 20 65 76 65 6e 74 2c 20  t, eval, event, 
2100: 65 76 69 64 65 6e 63 65 2c 20 65 76 69 6c 2c 0d  evidence, evil,.
2110: 0a 20 65 78 2c 20 65 78 63 65 70 74 69 6f 6e 2c  . ex, exception,
2120: 20 65 78 65 63 2c 20 65 78 70 73 2c 20 65 78 70   exec, exps, exp
2130: 72 2c 20 65 78 70 6f 72 74 73 2c 20 46 69 6c 65  r, exports, File
2140: 52 65 61 64 65 72 2c 20 66 69 72 73 74 2c 20 66  Reader, first, f
2150: 6c 6f 6f 72 2c 20 66 6f 63 75 73 2c 20 66 6f 72  loor, focus, for
2160: 45 61 63 68 2c 0d 0a 20 66 6f 72 69 6e 2c 20 66  Each,.. forin, f
2170: 72 61 67 6d 65 6e 74 2c 20 66 72 61 6d 65 73 2c  ragment, frames,
2180: 20 66 72 6f 6d 2c 20 66 72 6f 6d 43 68 61 72 43   from, fromCharC
2190: 6f 64 65 2c 20 66 75 64 2c 20 66 75 6e 63 73 63  ode, fud, funcsc
21a0: 6f 70 65 2c 20 66 75 6e 63 74 2c 20 66 75 6e 63  ope, funct, func
21b0: 74 69 6f 6e 2c 20 66 75 6e 63 74 69 6f 6e 73 2c  tion, functions,
21c0: 0d 0a 20 67 2c 20 67 63 2c 20 67 65 74 43 6f 6d  .. g, gc, getCom
21d0: 70 75 74 65 64 53 74 79 6c 65 2c 20 67 65 74 52  putedStyle, getR
21e0: 6f 77 2c 20 67 65 74 74 65 72 2c 20 67 65 74 74  ow, getter, gett
21f0: 65 72 54 6f 6b 65 6e 2c 20 47 4c 4f 42 41 4c 2c  erToken, GLOBAL,
2200: 20 67 6c 6f 62 61 6c 2c 20 67 6c 6f 62 61 6c 73   global, globals
2210: 2c 20 67 6c 6f 62 61 6c 73 74 72 69 63 74 2c 0d  , globalstrict,.
2220: 0a 20 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79  . hasOwnProperty
2230: 2c 20 68 65 6c 70 2c 20 68 69 73 74 6f 72 79 2c  , help, history,
2240: 20 69 2c 20 69 64 2c 20 69 64 65 6e 74 69 66 69   i, id, identifi
2250: 65 72 2c 20 69 6d 6d 65 64 2c 20 69 6d 70 6c 69  er, immed, impli
2260: 65 64 73 2c 20 69 6d 70 6f 72 74 50 61 63 6b 61  eds, importPacka
2270: 67 65 2c 20 69 6e 63 6c 75 64 65 2c 0d 0a 20 69  ge, include,.. i
2280: 6e 64 65 6e 74 2c 20 69 6e 64 65 78 4f 66 2c 20  ndent, indexOf, 
2290: 69 6e 69 74 2c 20 69 6e 73 2c 20 69 6e 73 74 61  init, ins, insta
22a0: 6e 63 65 4f 66 2c 20 69 73 41 6c 70 68 61 2c 20  nceOf, isAlpha, 
22b0: 69 73 41 70 70 6c 69 63 61 74 69 6f 6e 52 75 6e  isApplicationRun
22c0: 6e 69 6e 67 2c 20 69 73 41 72 72 61 79 2c 0d 0a  ning, isArray,..
22d0: 20 69 73 44 69 67 69 74 2c 20 69 73 46 69 6e 69   isDigit, isFini
22e0: 74 65 2c 20 69 73 4e 61 4e 2c 20 69 74 65 72 61  te, isNaN, itera
22f0: 74 6f 72 2c 20 6a 61 76 61 2c 20 6a 6f 69 6e 2c  tor, java, join,
2300: 20 6a 73 68 69 6e 74 2c 0d 0a 20 4a 53 48 49 4e   jshint,.. JSHIN
2310: 54 2c 20 6a 73 6f 6e 2c 20 6a 71 75 65 72 79 2c  T, json, jquery,
2320: 20 6a 51 75 65 72 79 2c 20 6b 65 79 73 2c 20 6c   jQuery, keys, l
2330: 61 62 65 6c 2c 20 6c 61 62 65 6c 6c 65 64 2c 20  abel, labelled, 
2340: 6c 61 73 74 2c 20 6c 61 73 74 63 68 61 72 61 63  last, lastcharac
2350: 74 65 72 2c 20 6c 61 73 74 73 65 6d 69 63 2c 20  ter, lastsemic, 
2360: 6c 61 78 62 72 65 61 6b 2c 0d 0a 20 6c 61 78 63  laxbreak,.. laxc
2370: 6f 6d 6d 61 2c 20 6c 61 74 65 64 65 66 2c 20 6c  omma, latedef, l
2380: 62 70 2c 20 6c 65 64 2c 20 6c 65 66 74 2c 20 6c  bp, led, left, l
2390: 65 6e 67 74 68 2c 20 6c 69 6e 65 2c 20 6c 6f 61  ength, line, loa
23a0: 64 2c 20 6c 6f 61 64 43 6c 61 73 73 2c 20 6c 6f  d, loadClass, lo
23b0: 63 61 6c 53 74 6f 72 61 67 65 2c 20 6c 6f 63 61  calStorage, loca
23c0: 74 69 6f 6e 2c 0d 0a 20 6c 6f 67 2c 20 6c 6f 6f  tion,.. log, loo
23d0: 70 66 75 6e 63 2c 20 6d 2c 20 6d 61 74 63 68 2c  pfunc, m, match,
23e0: 20 6d 61 78 2c 20 6d 61 78 65 72 72 2c 20 6d 61   max, maxerr, ma
23f0: 78 6c 65 6e 2c 20 6d 65 6d 62 65 72 2c 6d 65 73  xlen, member,mes
2400: 73 61 67 65 2c 20 6d 65 74 61 2c 20 6d 6f 64 75  sage, meta, modu
2410: 6c 65 2c 20 6d 6f 76 65 42 79 2c 0d 0a 20 6d 6f  le, moveBy,.. mo
2420: 76 65 54 6f 2c 20 6d 6f 6f 74 6f 6f 6c 73 2c 20  veTo, mootools, 
2430: 6d 75 6c 74 69 73 74 72 2c 20 6e 61 6d 65 2c 20  multistr, name, 
2440: 6e 61 76 69 67 61 74 6f 72 2c 20 6e 65 77 2c 20  navigator, new, 
2450: 6e 65 77 63 61 70 2c 20 6e 6f 61 72 67 2c 20 6e  newcap, noarg, n
2460: 6f 64 65 2c 20 6e 6f 65 6d 70 74 79 2c 20 6e 6f  ode, noempty, no
2470: 6d 65 6e 2c 0d 0a 20 6e 6f 6e 65 77 2c 20 6e 6f  men,.. nonew, no
2480: 6e 73 74 61 6e 64 61 72 64 2c 20 6e 75 64 2c 20  nstandard, nud, 
2490: 6f 6e 62 65 66 6f 72 65 75 6e 6c 6f 61 64 2c 20  onbeforeunload, 
24a0: 6f 6e 62 6c 75 72 2c 20 6f 6e 65 72 72 6f 72 2c  onblur, onerror,
24b0: 20 6f 6e 65 76 61 72 2c 20 6f 6e 65 63 61 73 65   onevar, onecase
24c0: 2c 20 6f 6e 66 6f 63 75 73 2c 0d 0a 20 6f 6e 6c  , onfocus,.. onl
24d0: 6f 61 64 2c 20 6f 6e 72 65 73 69 7a 65 2c 20 6f  oad, onresize, o
24e0: 6e 75 6e 6c 6f 61 64 2c 20 6f 70 65 6e 2c 20 6f  nunload, open, o
24f0: 70 65 6e 44 61 74 61 62 61 73 65 2c 20 6f 70 65  penDatabase, ope
2500: 6e 55 52 4c 2c 20 6f 70 65 6e 65 72 2c 20 6f 70  nURL, opener, op
2510: 65 72 61 2c 20 6f 70 74 69 6f 6e 73 2c 20 6f 75  era, options, ou
2520: 74 65 72 2c 20 70 61 72 61 6d 2c 0d 0a 20 70 61  ter, param,.. pa
2530: 72 65 6e 74 2c 20 70 61 72 73 65 46 6c 6f 61 74  rent, parseFloat
2540: 2c 20 70 61 72 73 65 49 6e 74 2c 20 70 61 73 73  , parseInt, pass
2550: 66 61 69 6c 2c 20 70 6c 75 73 70 6c 75 73 2c 20  fail, plusplus, 
2560: 70 6f 73 74 4d 65 73 73 61 67 65 2c 20 70 6f 70  postMessage, pop
2570: 2c 20 70 72 65 64 65 66 2c 20 70 72 69 6e 74 2c  , predef, print,
2580: 20 70 72 6f 63 65 73 73 2c 20 70 72 6f 6d 70 74   process, prompt
2590: 2c 0d 0a 20 70 72 6f 74 6f 2c 20 70 72 6f 74 6f  ,.. proto, proto
25a0: 74 79 70 65 2c 20 70 72 6f 74 6f 74 79 70 65 6a  type, prototypej
25b0: 73 2c 20 70 72 6f 76 69 64 65 73 2c 20 70 75 73  s, provides, pus
25c0: 68 2c 20 71 75 69 74 2c 20 71 75 6f 74 6d 61 72  h, quit, quotmar
25d0: 6b 2c 20 72 61 6e 67 65 2c 20 72 61 77 2c 20 72  k, range, raw, r
25e0: 65 61 63 68 2c 20 72 65 61 73 6f 6e 2c 20 72 65  each, reason, re
25f0: 67 65 78 70 2c 0d 0a 20 72 65 61 64 46 69 6c 65  gexp,.. readFile
2600: 2c 20 72 65 61 64 55 72 6c 2c 20 72 65 67 65 78  , readUrl, regex
2610: 64 61 73 68 2c 20 72 65 6d 6f 76 65 45 76 65 6e  dash, removeEven
2620: 74 4c 69 73 74 65 6e 65 72 2c 20 72 65 70 6c 61  tListener, repla
2630: 63 65 2c 20 72 65 70 6f 72 74 2c 20 72 65 71 75  ce, report, requ
2640: 69 72 65 2c 0d 0a 20 72 65 73 65 72 76 65 64 2c  ire,.. reserved,
2650: 20 72 65 73 69 7a 65 42 79 2c 20 72 65 73 69 7a   resizeBy, resiz
2660: 65 54 6f 2c 20 72 65 73 6f 6c 76 65 50 61 74 68  eTo, resolvePath
2670: 2c 20 72 65 73 75 6d 65 55 70 64 61 74 65 73 2c  , resumeUpdates,
2680: 20 72 65 73 70 6f 6e 64 2c 20 72 68 69 6e 6f 2c   respond, rhino,
2690: 20 72 69 67 68 74 2c 0d 0a 20 72 75 6e 43 6f 6d   right,.. runCom
26a0: 6d 61 6e 64 2c 20 73 63 72 6f 6c 6c 2c 20 73 63  mand, scroll, sc
26b0: 72 65 65 6e 2c 20 73 63 72 69 70 74 75 72 6c 2c  reen, scripturl,
26c0: 20 73 63 72 6f 6c 6c 42 79 2c 20 73 63 72 6f 6c   scrollBy, scrol
26d0: 6c 54 6f 2c 20 73 63 72 6f 6c 6c 62 61 72 2c 20  lTo, scrollbar, 
26e0: 73 65 61 72 63 68 2c 20 73 65 61 6c 2c 20 73 65  search, seal, se
26f0: 6c 66 2c 0d 0a 20 73 65 6e 64 2c 20 73 65 72 69  lf,.. send, seri
2700: 61 6c 69 7a 65 2c 20 73 65 73 73 69 6f 6e 53 74  alize, sessionSt
2710: 6f 72 61 67 65 2c 20 73 65 74 49 6e 74 65 72 76  orage, setInterv
2720: 61 6c 2c 20 73 65 74 54 69 6d 65 6f 75 74 2c 20  al, setTimeout, 
2730: 73 65 74 74 65 72 2c 20 73 65 74 74 65 72 54 6f  setter, setterTo
2740: 6b 65 6e 2c 20 73 68 69 66 74 2c 20 73 6c 69 63  ken, shift, slic
2750: 65 2c 0d 0a 20 73 6d 61 72 74 74 61 62 73 2c 20  e,.. smarttabs, 
2760: 73 6f 72 74 2c 20 73 70 61 77 6e 2c 20 73 70 6c  sort, spawn, spl
2770: 69 74 2c 20 73 74 61 63 6b 2c 20 73 74 61 74 75  it, stack, statu
2780: 73 2c 20 73 74 61 72 74 2c 20 73 74 72 69 63 74  s, start, strict
2790: 2c 20 73 75 62 2c 20 73 75 62 73 74 72 2c 20 73  , sub, substr, s
27a0: 75 70 65 72 6e 65 77 2c 20 73 68 61 64 6f 77 2c  upernew, shadow,
27b0: 0d 0a 20 73 75 70 70 6c 61 6e 74 2c 20 73 75 6d  .. supplant, sum
27c0: 2c 20 73 79 6e 63 2c 20 74 65 73 74 2c 20 74 6f  , sync, test, to
27d0: 4c 6f 77 65 72 43 61 73 65 2c 20 74 6f 53 74 72  LowerCase, toStr
27e0: 69 6e 67 2c 20 74 6f 55 70 70 65 72 43 61 73 65  ing, toUpperCase
27f0: 2c 20 74 6f 69 6e 74 33 32 2c 20 74 6f 6b 65 6e  , toint32, token
2800: 2c 20 74 6f 6b 65 6e 73 2c 20 74 6f 70 2c 0d 0a  , tokens, top,..
2810: 20 74 72 61 69 6c 69 6e 67 2c 20 74 79 70 65 2c   trailing, type,
2820: 20 74 79 70 65 4f 66 2c 20 55 69 6e 74 31 36 41   typeOf, Uint16A
2830: 72 72 61 79 2c 20 55 69 6e 74 33 32 41 72 72 61  rray, Uint32Arra
2840: 79 2c 20 55 69 6e 74 38 41 72 72 61 79 2c 20 75  y, Uint8Array, u
2850: 6e 64 65 66 2c 20 75 6e 64 65 66 73 2c 20 75 6e  ndef, undefs, un
2860: 75 73 65 64 2c 0d 0a 20 75 72 6c 73 2c 20 76 61  used,.. urls, va
2870: 6c 69 64 74 68 69 73 2c 20 76 61 6c 75 65 2c 20  lidthis, value, 
2880: 76 61 6c 75 65 4f 66 2c 20 76 61 72 2c 20 76 61  valueOf, var, va
2890: 72 73 2c 20 76 65 72 73 69 6f 6e 2c 20 57 65 62  rs, version, Web
28a0: 53 6f 63 6b 65 74 2c 20 77 69 74 68 73 74 6d 74  Socket, withstmt
28b0: 2c 20 77 68 69 74 65 2c 20 77 69 6e 64 6f 77 2c  , white, window,
28c0: 20 77 69 6e 64 6f 77 73 2c 0d 0a 20 57 6f 72 6b   windows,.. Work
28d0: 65 72 2c 20 77 6f 72 6b 65 72 2c 20 77 73 68 2a  er, worker, wsh*
28e0: 2f 0d 0a 0d 0a 2f 2a 67 6c 6f 62 61 6c 20 65 78  /..../*global ex
28f0: 70 6f 72 74 73 3a 20 66 61 6c 73 65 20 2a 2f 0d  ports: false */.
2900: 0a 0d 0a 2f 2f 20 57 65 20 62 75 69 6c 64 20 74  ...// We build t
2910: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  he application i
2920: 6e 73 69 64 65 20 61 20 66 75 6e 63 74 69 6f 6e  nside a function
2930: 20 73 6f 20 74 68 61 74 20 77 65 20 70 72 6f 64   so that we prod
2940: 75 63 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  uce only a singl
2950: 65 0d 0a 2f 2f 20 67 6c 6f 62 61 6c 20 76 61 72  e..// global var
2960: 69 61 62 6c 65 2e 20 54 68 61 74 20 66 75 6e 63  iable. That func
2970: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 69 6e 76  tion will be inv
2980: 6f 6b 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79  oked immediately
2990: 2c 20 61 6e 64 20 69 74 73 20 72 65 74 75 72 6e  , and its return
29a0: 0d 0a 2f 2f 20 76 61 6c 75 65 20 69 73 20 74 68  ..// value is th
29b0: 65 20 4a 53 48 49 4e 54 20 66 75 6e 63 74 69 6f  e JSHINT functio
29c0: 6e 20 69 74 73 65 6c 66 2e 0d 0a 0d 0a 76 61 72  n itself.....var
29d0: 20 4a 53 48 49 4e 54 20 3d 20 28 66 75 6e 63 74   JSHINT = (funct
29e0: 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 22 75  ion () {..    "u
29f0: 73 65 20 73 74 72 69 63 74 22 3b 0d 0a 0d 0a 20  se strict";.... 
2a00: 20 20 20 76 61 72 20 61 6e 6f 6e 6e 61 6d 65 2c     var anonname,
2a10: 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20 67 75         // The gu
2a20: 65 73 73 65 64 20 6e 61 6d 65 20 66 6f 72 20 61  essed name for a
2a30: 6e 6f 6e 79 6d 6f 75 73 20 66 75 6e 63 74 69 6f  nonymous functio
2a40: 6e 73 2e 0d 0a 0d 0a 2f 2f 20 54 68 65 73 65 20  ns.....// These 
2a50: 61 72 65 20 6f 70 65 72 61 74 6f 72 73 20 74 68  are operators th
2a60: 61 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65  at should not be
2a70: 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20 21   used with the !
2a80: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 0d 0a 20 20   operator.....  
2a90: 20 20 20 20 20 20 62 61 6e 67 20 3d 20 7b 0d 0a        bang = {..
2aa0: 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 22 20              "<" 
2ab0: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   : true,..      
2ac0: 20 20 20 20 20 20 22 3c 3d 22 20 3a 20 74 72 75        "<=" : tru
2ad0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2ae0: 22 3d 3d 22 20 3a 20 74 72 75 65 2c 0d 0a 20 20  "==" : true,..  
2af0: 20 20 20 20 20 20 20 20 20 20 22 3d 3d 3d 22 3a            "===":
2b00: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20   true,..        
2b10: 20 20 20 20 22 21 3d 3d 22 3a 20 74 72 75 65 2c      "!==": true,
2b20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 21  ..            "!
2b30: 3d 22 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20  =" : true,..    
2b40: 20 20 20 20 20 20 20 20 22 3e 22 20 20 3a 20 74          ">"  : t
2b50: 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rue,..          
2b60: 20 20 22 3e 3d 22 20 3a 20 74 72 75 65 2c 0d 0a    ">=" : true,..
2b70: 20 20 20 20 20 20 20 20 20 20 20 20 22 2b 22 20              "+" 
2b80: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   : true,..      
2b90: 20 20 20 20 20 20 22 2d 22 20 20 3a 20 74 72 75        "-"  : tru
2ba0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2bb0: 22 2a 22 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20  "*"  : true,..  
2bc0: 20 20 20 20 20 20 20 20 20 20 22 2f 22 20 20 3a            "/"  :
2bd0: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20   true,..        
2be0: 20 20 20 20 22 25 22 20 20 3a 20 74 72 75 65 0d      "%"  : true.
2bf0: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20  .        },.... 
2c00: 20 20 20 20 20 20 20 2f 2f 20 54 68 65 73 65 20         // These 
2c10: 61 72 65 20 74 68 65 20 4a 53 48 69 6e 74 20 62  are the JSHint b
2c20: 6f 6f 6c 65 61 6e 20 6f 70 74 69 6f 6e 73 2e 0d  oolean options..
2c30: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 4f 70 74  .        boolOpt
2c40: 69 6f 6e 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20  ions = {..      
2c50: 20 20 20 20 20 20 61 73 69 20 20 20 20 20 20 20        asi       
2c60: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20    : true, // if 
2c70: 61 75 74 6f 6d 61 74 69 63 20 73 65 6d 69 63 6f  automatic semico
2c80: 6c 6f 6e 20 69 6e 73 65 72 74 69 6f 6e 20 73 68  lon insertion sh
2c90: 6f 75 6c 64 20 62 65 20 74 6f 6c 65 72 61 74 65  ould be tolerate
2ca0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  d..            b
2cb0: 69 74 77 69 73 65 20 20 20 20 20 3a 20 74 72 75  itwise     : tru
2cc0: 65 2c 20 2f 2f 20 69 66 20 62 69 74 77 69 73 65  e, // if bitwise
2cd0: 20 6f 70 65 72 61 74 6f 72 73 20 73 68 6f 75 6c   operators shoul
2ce0: 64 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 77 65 64  d not be allowed
2cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
2d00: 73 73 20 20 20 20 20 20 20 20 3a 20 74 72 75 65  ss        : true
2d10: 2c 20 2f 2f 20 69 66 20 61 64 76 61 6e 63 65 64  , // if advanced
2d20: 20 75 73 61 67 65 20 6f 66 20 61 73 73 69 67 6e   usage of assign
2d30: 6d 65 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20  ments should be 
2d40: 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 20  allowed..       
2d50: 20 20 20 20 20 62 72 6f 77 73 65 72 20 20 20 20       browser    
2d60: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 74   : true, // if t
2d70: 68 65 20 73 74 61 6e 64 61 72 64 20 62 72 6f 77  he standard brow
2d80: 73 65 72 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75  ser globals shou
2d90: 6c 64 20 62 65 20 70 72 65 64 65 66 69 6e 65 64  ld be predefined
2da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
2db0: 6d 65 6c 63 61 73 65 20 20 20 3a 20 74 72 75 65  melcase   : true
2dc0: 2c 20 2f 2f 20 69 66 20 69 64 65 6e 74 69 66 69  , // if identifi
2dd0: 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 72 65  ers should be re
2de0: 71 75 69 72 65 64 20 69 6e 20 63 61 6d 65 6c 20  quired in camel 
2df0: 63 61 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  case..          
2e00: 20 20 63 6f 75 63 68 20 20 20 20 20 20 20 3a 20    couch       : 
2e10: 74 72 75 65 2c 20 2f 2f 20 69 66 20 43 6f 75 63  true, // if Couc
2e20: 68 44 42 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75  hDB globals shou
2e30: 6c 64 20 62 65 20 70 72 65 64 65 66 69 6e 65 64  ld be predefined
2e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 75  ..            cu
2e50: 72 6c 79 20 20 20 20 20 20 20 3a 20 74 72 75 65  rly       : true
2e60: 2c 20 2f 2f 20 69 66 20 63 75 72 6c 79 20 62 72  , // if curly br
2e70: 61 63 65 73 20 61 72 6f 75 6e 64 20 61 6c 6c 20  aces around all 
2e80: 62 6c 6f 63 6b 73 20 73 68 6f 75 6c 64 20 62 65  blocks should be
2e90: 20 72 65 71 75 69 72 65 64 0d 0a 20 20 20 20 20   required..     
2ea0: 20 20 20 20 20 20 20 64 65 62 75 67 20 20 20 20         debug    
2eb0: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66     : true, // if
2ec0: 20 64 65 62 75 67 67 65 72 20 73 74 61 74 65 6d   debugger statem
2ed0: 65 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 61  ents should be a
2ee0: 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 20 20  llowed..        
2ef0: 20 20 20 20 64 65 76 65 6c 20 20 20 20 20 20 20      devel       
2f00: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 6c 6f  : true, // if lo
2f10: 67 67 69 6e 67 20 67 6c 6f 62 61 6c 73 20 73 68  gging globals sh
2f20: 6f 75 6c 64 20 62 65 20 70 72 65 64 65 66 69 6e  ould be predefin
2f30: 65 64 20 28 63 6f 6e 73 6f 6c 65 2c 0d 0a 20 20  ed (console,..  
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2f60: 20 61 6c 65 72 74 2c 20 65 74 63 2e 29 0d 0a 20   alert, etc.).. 
2f70: 20 20 20 20 20 20 20 20 20 20 20 64 6f 6a 6f 20             dojo 
2f80: 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f         : true, /
2f90: 2f 20 69 66 20 44 6f 6a 6f 20 54 6f 6f 6c 6b 69  / if Dojo Toolki
2fa0: 74 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64  t globals should
2fb0: 20 62 65 20 70 72 65 64 65 66 69 6e 65 64 0d 0a   be predefined..
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 65 71 65 71              eqeq
2fd0: 65 71 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20  eq      : true, 
2fe0: 2f 2f 20 69 66 20 3d 3d 3d 20 73 68 6f 75 6c 64  // if === should
2ff0: 20 62 65 20 72 65 71 75 69 72 65 64 0d 0a 20 20   be required..  
3000: 20 20 20 20 20 20 20 20 20 20 65 71 6e 75 6c 6c            eqnull
3010: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f        : true, //
3020: 20 69 66 20 3d 3d 20 6e 75 6c 6c 20 63 6f 6d 70   if == null comp
3030: 61 72 69 73 6f 6e 73 20 73 68 6f 75 6c 64 20 62  arisons should b
3040: 65 20 74 6f 6c 65 72 61 74 65 64 0d 0a 20 20 20  e tolerated..   
3050: 20 20 20 20 20 20 20 20 20 65 73 35 20 20 20 20           es5    
3060: 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20       : true, // 
3070: 69 66 20 45 53 35 20 73 79 6e 74 61 78 20 73 68  if ES5 syntax sh
3080: 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d  ould be allowed.
3090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 73 6e  .            esn
30a0: 65 78 74 20 20 20 20 20 20 3a 20 74 72 75 65 2c  ext      : true,
30b0: 20 2f 2f 20 69 66 20 65 73 2e 6e 65 78 74 20 73   // if es.next s
30c0: 70 65 63 69 66 69 63 20 73 79 6e 74 61 78 20 73  pecific syntax s
30d0: 68 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64  hould be allowed
30e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 76  ..            ev
30f0: 69 6c 20 20 20 20 20 20 20 20 3a 20 74 72 75 65  il        : true
3100: 2c 20 2f 2f 20 69 66 20 65 76 61 6c 20 73 68 6f  , // if eval sho
3110: 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a  uld be allowed..
3120: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72              expr
3130: 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20          : true, 
3140: 2f 2f 20 69 66 20 45 78 70 72 65 73 73 69 6f 6e  // if Expression
3150: 53 74 61 74 65 6d 65 6e 74 20 73 68 6f 75 6c 64  Statement should
3160: 20 62 65 20 61 6c 6c 6f 77 65 64 20 61 73 20 50   be allowed as P
3170: 72 6f 67 72 61 6d 73 0d 0a 20 20 20 20 20 20 20  rograms..       
3180: 20 20 20 20 20 66 6f 72 69 6e 20 20 20 20 20 20       forin      
3190: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 66   : true, // if f
31a0: 6f 72 20 69 6e 20 73 74 61 74 65 6d 65 6e 74 73  or in statements
31b0: 20 6d 75 73 74 20 66 69 6c 74 65 72 0d 0a 20 20   must filter..  
31c0: 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 73 63            funcsc
31d0: 6f 70 65 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f  ope   : true, //
31e0: 20 69 66 20 6f 6e 6c 79 20 66 75 6e 63 74 69 6f   if only functio
31f0: 6e 20 73 63 6f 70 65 20 73 68 6f 75 6c 64 20 62  n scope should b
3200: 65 20 75 73 65 64 20 66 6f 72 20 73 63 6f 70 65  e used for scope
3210: 20 74 65 73 74 73 0d 0a 20 20 20 20 20 20 20 20   tests..        
3220: 20 20 20 20 67 6c 6f 62 61 6c 73 74 72 69 63 74      globalstrict
3230: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 67 6c  : true, // if gl
3240: 6f 62 61 6c 20 22 75 73 65 20 73 74 72 69 63 74  obal "use strict
3250: 22 3b 20 73 68 6f 75 6c 64 20 62 65 20 61 6c 6c  "; should be all
3260: 6f 77 65 64 20 28 61 6c 73 6f 0d 0a 20 20 20 20  owed (also..    
3270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3280: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65              // e
3290: 6e 61 62 6c 65 73 20 27 73 74 72 69 63 74 27 29  nables 'strict')
32a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6d  ..            im
32b0: 6d 65 64 20 20 20 20 20 20 20 3a 20 74 72 75 65  med       : true
32c0: 2c 20 2f 2f 20 69 66 20 69 6d 6d 65 64 69 61 74  , // if immediat
32d0: 65 20 69 6e 76 6f 63 61 74 69 6f 6e 73 20 6d 75  e invocations mu
32e0: 73 74 20 62 65 20 77 72 61 70 70 65 64 20 69 6e  st be wrapped in
32f0: 20 70 61 72 65 6e 73 0d 0a 20 20 20 20 20 20 20   parens..       
3300: 20 20 20 20 20 69 74 65 72 61 74 6f 72 20 20 20       iterator   
3310: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 74   : true, // if t
3320: 68 65 20 60 5f 5f 69 74 65 72 61 74 6f 72 5f 5f  he `__iterator__
3330: 60 20 70 72 6f 70 65 72 74 79 20 73 68 6f 75 6c  ` property shoul
3340: 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a 20 20  d be allowed..  
3350: 20 20 20 20 20 20 20 20 20 20 6a 71 75 65 72 79            jquery
3360: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f        : true, //
3370: 20 69 66 20 6a 51 75 65 72 79 20 67 6c 6f 62 61   if jQuery globa
3380: 6c 73 20 73 68 6f 75 6c 64 20 62 65 20 70 72 65  ls should be pre
3390: 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 20 20 20  defined..       
33a0: 20 20 20 20 20 6c 61 73 74 73 65 6d 69 63 20 20       lastsemic  
33b0: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 73   : true, // if s
33c0: 65 6d 69 63 6f 6c 6f 6e 73 20 6d 61 79 20 62 65  emicolons may be
33d0: 20 6f 6d 6d 69 74 74 65 64 20 66 6f 72 20 74 68   ommitted for th
33e0: 65 20 74 72 61 69 6c 69 6e 67 0d 0a 20 20 20 20  e trailing..    
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73              // s
3410: 74 61 74 65 6d 65 6e 74 73 20 69 6e 73 69 64 65  tatements inside
3420: 20 6f 66 20 61 20 6f 6e 65 2d 6c 69 6e 65 20 62   of a one-line b
3430: 6c 6f 63 6b 73 2e 0d 0a 20 20 20 20 20 20 20 20  locks...        
3440: 20 20 20 20 6c 61 74 65 64 65 66 20 20 20 20 20      latedef     
3450: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 74 68  : true, // if th
3460: 65 20 75 73 65 20 62 65 66 6f 72 65 20 64 65 66  e use before def
3470: 69 6e 69 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e  inition should n
3480: 6f 74 20 62 65 20 74 6f 6c 65 72 61 74 65 64 0d  ot be tolerated.
3490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 78  .            lax
34a0: 62 72 65 61 6b 20 20 20 20 3a 20 74 72 75 65 2c  break    : true,
34b0: 20 2f 2f 20 69 66 20 6c 69 6e 65 20 62 72 65 61   // if line brea
34c0: 6b 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65  ks should not be
34d0: 20 63 68 65 63 6b 65 64 0d 0a 20 20 20 20 20 20   checked..      
34e0: 20 20 20 20 20 20 6c 61 78 63 6f 6d 6d 61 20 20        laxcomma  
34f0: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20    : true, // if 
3500: 6c 69 6e 65 20 62 72 65 61 6b 73 20 73 68 6f 75  line breaks shou
3510: 6c 64 20 6e 6f 74 20 62 65 20 63 68 65 63 6b 65  ld not be checke
3520: 64 20 61 72 6f 75 6e 64 20 63 6f 6d 6d 61 73 0d  d around commas.
3530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6f  .            loo
3540: 70 66 75 6e 63 20 20 20 20 3a 20 74 72 75 65 2c  pfunc    : true,
3550: 20 2f 2f 20 69 66 20 66 75 6e 63 74 69 6f 6e 73   // if functions
3560: 20 73 68 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77   should be allow
3570: 65 64 20 74 6f 20 62 65 20 64 65 66 69 6e 65 64  ed to be defined
3580: 20 77 69 74 68 69 6e 0d 0a 20 20 20 20 20 20 20   within..       
3590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 6f 6f 70           // loop
35b0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d  s..            m
35c0: 6f 6f 74 6f 6f 6c 73 20 20 20 20 3a 20 74 72 75  ootools    : tru
35d0: 65 2c 20 2f 2f 20 69 66 20 4d 6f 6f 54 6f 6f 6c  e, // if MooTool
35e0: 73 20 67 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64  s globals should
35f0: 20 62 65 20 70 72 65 64 65 66 69 6e 65 64 0d 0a   be predefined..
3600: 20 20 20 20 20 20 20 20 20 20 20 20 6d 75 6c 74              mult
3610: 69 73 74 72 20 20 20 20 3a 20 74 72 75 65 2c 20  istr    : true, 
3620: 2f 2f 20 61 6c 6c 6f 77 20 6d 75 6c 74 69 6c 69  // allow multili
3630: 6e 65 20 73 74 72 69 6e 67 73 0d 0a 20 20 20 20  ne strings..    
3640: 20 20 20 20 20 20 20 20 6e 65 77 63 61 70 20 20          newcap  
3650: 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69      : true, // i
3660: 66 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 6e 61  f constructor na
3670: 6d 65 73 20 6d 75 73 74 20 62 65 20 63 61 70 69  mes must be capi
3680: 74 61 6c 69 7a 65 64 0d 0a 20 20 20 20 20 20 20  talized..       
3690: 20 20 20 20 20 6e 6f 61 72 67 20 20 20 20 20 20       noarg      
36a0: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 61   : true, // if a
36b0: 72 67 75 6d 65 6e 74 73 2e 63 61 6c 6c 65 72 20  rguments.caller 
36c0: 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 2e 63 61  and arguments.ca
36d0: 6c 6c 65 65 20 73 68 6f 75 6c 64 20 62 65 0d 0a  llee should be..
36e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3700: 2f 2f 20 64 69 73 61 6c 6c 6f 77 65 64 0d 0a 20  // disallowed.. 
3710: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20             node 
3720: 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f         : true, /
3730: 2f 20 69 66 20 74 68 65 20 4e 6f 64 65 2e 6a 73  / if the Node.js
3740: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 67 6c 6f   environment glo
3750: 62 61 6c 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a  bals should be..
3760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3780: 2f 2f 20 70 72 65 64 65 66 69 6e 65 64 0d 0a 20  // predefined.. 
3790: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 65 6d 70             noemp
37a0: 74 79 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f  ty     : true, /
37b0: 2f 20 69 66 20 65 6d 70 74 79 20 62 6c 6f 63 6b  / if empty block
37c0: 73 20 73 68 6f 75 6c 64 20 62 65 20 64 69 73 61  s should be disa
37d0: 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 20 20  llowed..        
37e0: 20 20 20 20 6e 6f 6e 65 77 20 20 20 20 20 20 20      nonew       
37f0: 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 75 73  : true, // if us
3800: 69 6e 67 20 60 6e 65 77 60 20 66 6f 72 20 73 69  ing `new` for si
3810: 64 65 2d 65 66 66 65 63 74 73 20 73 68 6f 75 6c  de-effects shoul
3820: 64 20 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 0d  d be disallowed.
3830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e  .            non
3840: 73 74 61 6e 64 61 72 64 20 3a 20 74 72 75 65 2c  standard : true,
3850: 20 2f 2f 20 69 66 20 6e 6f 6e 2d 73 74 61 6e 64   // if non-stand
3860: 61 72 64 20 28 62 75 74 20 77 69 64 65 6c 79 20  ard (but widely 
3870: 61 64 6f 70 74 65 64 29 20 67 6c 6f 62 61 6c 73  adopted) globals
3880: 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20   should..       
3890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 62 65 20 70           // be p
38b0: 72 65 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 20  redefined..     
38c0: 20 20 20 20 20 20 20 6e 6f 6d 65 6e 20 20 20 20         nomen    
38d0: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66     : true, // if
38e0: 20 6e 61 6d 65 73 20 73 68 6f 75 6c 64 20 62 65   names should be
38f0: 20 63 68 65 63 6b 65 64 0d 0a 20 20 20 20 20 20   checked..      
3900: 20 20 20 20 20 20 6f 6e 65 76 61 72 20 20 20 20        onevar    
3910: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20    : true, // if 
3920: 6f 6e 6c 79 20 6f 6e 65 20 76 61 72 20 73 74 61  only one var sta
3930: 74 65 6d 65 6e 74 20 70 65 72 20 66 75 6e 63 74  tement per funct
3940: 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20  ion should be.. 
3950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
3970: 2f 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20  / allowed..     
3980: 20 20 20 20 20 20 20 6f 6e 65 63 61 73 65 20 20         onecase  
3990: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66     : true, // if
39a0: 20 6f 6e 65 20 63 61 73 65 20 73 77 69 74 63 68   one case switch
39b0: 20 73 74 61 74 65 6d 65 6e 74 73 20 73 68 6f 75   statements shou
39c0: 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a 20  ld be allowed.. 
39d0: 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 66             passf
39e0: 61 69 6c 20 20 20 20 3a 20 74 72 75 65 2c 20 2f  ail    : true, /
39f0: 2f 20 69 66 20 74 68 65 20 73 63 61 6e 20 73 68  / if the scan sh
3a00: 6f 75 6c 64 20 73 74 6f 70 20 6f 6e 20 66 69 72  ould stop on fir
3a10: 73 74 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  st error..      
3a20: 20 20 20 20 20 20 70 6c 75 73 70 6c 75 73 20 20        plusplus  
3a30: 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20    : true, // if 
3a40: 69 6e 63 72 65 6d 65 6e 74 2f 64 65 63 72 65 6d  increment/decrem
3a50: 65 6e 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62  ent should not b
3a60: 65 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20  e allowed..     
3a70: 20 20 20 20 20 20 20 70 72 6f 74 6f 20 20 20 20         proto    
3a80: 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66     : true, // if
3a90: 20 74 68 65 20 60 5f 5f 70 72 6f 74 6f 5f 5f 60   the `__proto__`
3aa0: 20 70 72 6f 70 65 72 74 79 20 73 68 6f 75 6c 64   property should
3ab0: 20 62 65 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20   be allowed..   
3ac0: 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 74 79           prototy
3ad0: 70 65 6a 73 20 3a 20 74 72 75 65 2c 20 2f 2f 20  pejs : true, // 
3ae0: 69 66 20 50 72 6f 74 6f 74 79 70 65 20 61 6e 64  if Prototype and
3af0: 20 53 63 72 69 70 74 61 63 75 6c 6f 75 73 20 67   Scriptaculous g
3b00: 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64 20 62 65  lobals should be
3b10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b30: 20 20 2f 2f 20 70 72 65 64 65 66 69 6e 65 64 0d    // predefined.
3b40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67  .            reg
3b50: 65 78 64 61 73 68 20 20 20 3a 20 74 72 75 65 2c  exdash   : true,
3b60: 20 2f 2f 20 69 66 20 75 6e 65 73 63 61 70 65 64   // if unescaped
3b70: 20 66 69 72 73 74 2f 6c 61 73 74 20 64 61 73 68   first/last dash
3b80: 20 28 2d 29 20 69 6e 73 69 64 65 20 62 72 61 63   (-) inside brac
3b90: 6b 65 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20  kets..          
3ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bb0: 20 20 20 20 20 20 2f 2f 20 73 68 6f 75 6c 64 20        // should 
3bc0: 62 65 20 74 6f 6c 65 72 61 74 65 64 0d 0a 20 20  be tolerated..  
3bd0: 20 20 20 20 20 20 20 20 20 20 72 65 67 65 78 70            regexp
3be0: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f        : true, //
3bf0: 20 69 66 20 74 68 65 20 2e 20 73 68 6f 75 6c 64   if the . should
3c00: 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 77 65 64 20   not be allowed 
3c10: 69 6e 20 72 65 67 65 78 70 20 6c 69 74 65 72 61  in regexp litera
3c20: 6c 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ls..            
3c30: 72 68 69 6e 6f 20 20 20 20 20 20 20 3a 20 74 72  rhino       : tr
3c40: 75 65 2c 20 2f 2f 20 69 66 20 74 68 65 20 52 68  ue, // if the Rh
3c50: 69 6e 6f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ino environment 
3c60: 67 6c 6f 62 61 6c 73 20 73 68 6f 75 6c 64 20 62  globals should b
3c70: 65 20 70 72 65 64 65 66 69 6e 65 64 0d 0a 20 20  e predefined..  
3c80: 20 20 20 20 20 20 20 20 20 20 75 6e 64 65 66 20            undef 
3c90: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f        : true, //
3ca0: 20 69 66 20 76 61 72 69 61 62 6c 65 73 20 73 68   if variables sh
3cb0: 6f 75 6c 64 20 62 65 20 64 65 63 6c 61 72 65 64  ould be declared
3cc0: 20 62 65 66 6f 72 65 20 75 73 65 64 0d 0a 20 20   before used..  
3cd0: 20 20 20 20 20 20 20 20 20 20 75 6e 75 73 65 64            unused
3ce0: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f        : true, //
3cf0: 20 69 66 20 76 61 72 69 61 62 6c 65 73 20 73 68   if variables sh
3d00: 6f 75 6c 64 20 62 65 20 61 6c 77 61 79 73 20 75  ould be always u
3d10: 73 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sed..           
3d20: 20 73 63 72 69 70 74 75 72 6c 20 20 20 3a 20 74   scripturl   : t
3d30: 72 75 65 2c 20 2f 2f 20 69 66 20 73 63 72 69 70  rue, // if scrip
3d40: 74 2d 74 61 72 67 65 74 65 64 20 55 52 4c 73 20  t-targeted URLs 
3d50: 73 68 6f 75 6c 64 20 62 65 20 74 6f 6c 65 72 61  should be tolera
3d60: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
3d70: 20 73 68 61 64 6f 77 20 20 20 20 20 20 3a 20 74   shadow      : t
3d80: 72 75 65 2c 20 2f 2f 20 69 66 20 76 61 72 69 61  rue, // if varia
3d90: 62 6c 65 20 73 68 61 64 6f 77 69 6e 67 20 73 68  ble shadowing sh
3da0: 6f 75 6c 64 20 62 65 20 74 6f 6c 65 72 61 74 65  ould be tolerate
3db0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  d..            s
3dc0: 6d 61 72 74 74 61 62 73 20 20 20 3a 20 74 72 75  marttabs   : tru
3dd0: 65 2c 20 2f 2f 20 69 66 20 73 6d 61 72 74 74 61  e, // if smartta
3de0: 62 73 20 73 68 6f 75 6c 64 20 62 65 20 74 6f 6c  bs should be tol
3df0: 65 72 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  erated..        
3e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e10: 20 20 20 20 20 20 20 20 2f 2f 20 28 68 74 74 70          // (http
3e20: 3a 2f 2f 77 77 77 2e 65 6d 61 63 73 77 69 6b 69  ://www.emacswiki
3e30: 2e 6f 72 67 2f 65 6d 61 63 73 2f 53 6d 61 72 74  .org/emacs/Smart
3e40: 54 61 62 73 29 0d 0a 20 20 20 20 20 20 20 20 20  Tabs)..         
3e50: 20 20 20 73 74 72 69 63 74 20 20 20 20 20 20 3a     strict      :
3e60: 20 74 72 75 65 2c 20 2f 2f 20 72 65 71 75 69 72   true, // requir
3e70: 65 20 74 68 65 20 22 75 73 65 20 73 74 72 69 63  e the "use stric
3e80: 74 22 3b 20 70 72 61 67 6d 61 0d 0a 20 20 20 20  t"; pragma..    
3e90: 20 20 20 20 20 20 20 20 73 75 62 20 20 20 20 20          sub     
3ea0: 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69      : true, // i
3eb0: 66 20 61 6c 6c 20 66 6f 72 6d 73 20 6f 66 20 73  f all forms of s
3ec0: 75 62 73 63 72 69 70 74 20 6e 6f 74 61 74 69 6f  ubscript notatio
3ed0: 6e 20 61 72 65 20 74 6f 6c 65 72 61 74 65 64 0d  n are tolerated.
3ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 75 70  .            sup
3ef0: 65 72 6e 65 77 20 20 20 20 3a 20 74 72 75 65 2c  ernew    : true,
3f00: 20 2f 2f 20 69 66 20 60 6e 65 77 20 66 75 6e 63   // if `new func
3f10: 74 69 6f 6e 20 28 29 20 7b 20 2e 2e 2e 20 7d 3b  tion () { ... };
3f20: 60 20 61 6e 64 20 60 6e 65 77 20 4f 62 6a 65 63  ` and `new Objec
3f30: 74 3b 60 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t;`..           
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f50: 20 20 20 20 20 2f 2f 20 73 68 6f 75 6c 64 20 62       // should b
3f60: 65 20 74 6f 6c 65 72 61 74 65 64 0d 0a 20 20 20  e tolerated..   
3f70: 20 20 20 20 20 20 20 20 20 74 72 61 69 6c 69 6e           trailin
3f80: 67 20 20 20 20 3a 20 74 72 75 65 2c 20 2f 2f 20  g    : true, // 
3f90: 69 66 20 74 72 61 69 6c 69 6e 67 20 77 68 69 74  if trailing whit
3fa0: 65 73 70 61 63 65 20 72 75 6c 65 73 20 61 70 70  espace rules app
3fb0: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
3fc0: 76 61 6c 69 64 74 68 69 73 20 20 20 3a 20 74 72  validthis   : tr
3fd0: 75 65 2c 20 2f 2f 20 69 66 20 27 74 68 69 73 27  ue, // if 'this'
3fe0: 20 69 6e 73 69 64 65 20 61 20 6e 6f 6e 2d 63 6f   inside a non-co
3ff0: 6e 73 74 72 75 63 74 6f 72 20 66 75 6e 63 74 69  nstructor functi
4000: 6f 6e 20 69 73 20 76 61 6c 69 64 2e 0d 0a 20 20  on is valid...  
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4030: 20 54 68 69 73 20 69 73 20 61 20 66 75 6e 63 74   This is a funct
4040: 69 6f 6e 20 73 63 6f 70 65 64 20 6f 70 74 69 6f  ion scoped optio
4050: 6e 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 20  n only...       
4060: 20 20 20 20 20 77 69 74 68 73 74 6d 74 20 20 20       withstmt   
4070: 20 3a 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 77   : true, // if w
4080: 69 74 68 20 73 74 61 74 65 6d 65 6e 74 73 20 73  ith statements s
4090: 68 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64  hould be allowed
40a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68  ..            wh
40b0: 69 74 65 20 20 20 20 20 20 20 3a 20 74 72 75 65  ite       : true
40c0: 2c 20 2f 2f 20 69 66 20 73 74 72 69 63 74 20 77  , // if strict w
40d0: 68 69 74 65 73 70 61 63 65 20 72 75 6c 65 73 20  hitespace rules 
40e0: 61 70 70 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  apply..         
40f0: 20 20 20 77 6f 72 6b 65 72 20 20 20 20 20 20 3a     worker      :
4100: 20 74 72 75 65 2c 20 2f 2f 20 69 66 20 57 65 62   true, // if Web
4110: 20 57 6f 72 6b 65 72 20 73 63 72 69 70 74 20 73   Worker script s
4120: 79 6d 62 6f 6c 73 20 73 68 6f 75 6c 64 20 62 65  ymbols should be
4130: 20 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20   allowed..      
4140: 20 20 20 20 20 20 77 73 68 20 20 20 20 20 20 20        wsh       
4150: 20 20 3a 20 74 72 75 65 20 20 2f 2f 20 69 66 20    : true  // if 
4160: 74 68 65 20 57 69 6e 64 6f 77 73 20 53 63 72 69  the Windows Scri
4170: 70 74 69 6e 67 20 48 6f 73 74 20 65 6e 76 69 72  pting Host envir
4180: 6f 6e 6d 65 6e 74 20 67 6c 6f 62 61 6c 73 0d 0a  onment globals..
4190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 70 72 65  // should be pre
41c0: 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 20 20 20  defined..       
41d0: 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   },....        /
41e0: 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20  / These are the 
41f0: 4a 53 48 69 6e 74 20 6f 70 74 69 6f 6e 73 20 74  JSHint options t
4200: 68 61 74 20 63 61 6e 20 74 61 6b 65 20 61 6e 79  hat can take any
4210: 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
4220: 2f 2f 20 28 77 65 20 75 73 65 20 74 68 69 73 20  // (we use this 
4230: 6f 62 6a 65 63 74 20 74 6f 20 64 65 74 65 63 74  object to detect
4240: 20 69 6e 76 61 6c 69 64 20 6f 70 74 69 6f 6e 73   invalid options
4250: 29 0d 0a 20 20 20 20 20 20 20 20 76 61 6c 4f 70  )..        valOp
4260: 74 69 6f 6e 73 20 3d 20 7b 0d 0a 20 20 20 20 20  tions = {..     
4270: 20 20 20 20 20 20 20 6d 61 78 6c 65 6e 3a 20 66         maxlen: f
4280: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
4290: 20 20 20 69 6e 64 65 6e 74 3a 20 66 61 6c 73 65     indent: false
42a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d  ,..            m
42b0: 61 78 65 72 72 3a 20 66 61 6c 73 65 2c 0d 0a 20  axerr: false,.. 
42c0: 20 20 20 20 20 20 20 20 20 20 20 70 72 65 64 65             prede
42d0: 66 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20  f: false,..     
42e0: 20 20 20 20 20 20 20 71 75 6f 74 6d 61 72 6b 3a         quotmark:
42f0: 20 66 61 6c 73 65 20 2f 2f 27 73 69 6e 67 6c 65   false //'single
4300: 27 7c 27 64 6f 75 62 6c 65 27 7c 74 72 75 65 0d  '|'double'|true.
4310: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20  .        },.... 
4320: 20 20 20 20 20 20 20 2f 2f 20 54 68 65 73 65 20         // These 
4330: 61 72 65 20 4a 53 48 69 6e 74 20 62 6f 6f 6c 65  are JSHint boole
4340: 61 6e 20 6f 70 74 69 6f 6e 73 20 77 68 69 63 68  an options which
4350: 20 61 72 65 20 73 68 61 72 65 64 20 77 69 74 68   are shared with
4360: 20 4a 53 4c 69 6e 74 0d 0a 20 20 20 20 20 20 20   JSLint..       
4370: 20 2f 2f 20 77 68 65 72 65 20 74 68 65 20 64 65   // where the de
4380: 66 69 6e 69 74 69 6f 6e 20 69 6e 20 4a 53 48 69  finition in JSHi
4390: 6e 74 20 69 73 20 6f 70 70 6f 73 69 74 65 20 4a  nt is opposite J
43a0: 53 4c 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 69  SLint..        i
43b0: 6e 76 65 72 74 65 64 4f 70 74 69 6f 6e 73 20 3d  nvertedOptions =
43c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
43d0: 62 69 74 77 69 73 65 20 20 20 20 20 3a 20 74 72  bitwise     : tr
43e0: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
43f0: 20 66 6f 72 69 6e 20 20 20 20 20 20 20 3a 20 74   forin       : t
4400: 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rue,..          
4410: 20 20 6e 65 77 63 61 70 20 20 20 20 20 20 3a 20    newcap      : 
4420: 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  true,..         
4430: 20 20 20 6e 6f 6d 65 6e 20 20 20 20 20 20 20 3a     nomen       :
4440: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20   true,..        
4450: 20 20 20 20 70 6c 75 73 70 6c 75 73 20 20 20 20      plusplus    
4460: 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20  : true,..       
4470: 20 20 20 20 20 72 65 67 65 78 70 20 20 20 20 20       regexp     
4480: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   : true,..      
4490: 20 20 20 20 20 20 75 6e 64 65 66 20 20 20 20 20        undef     
44a0: 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20    : true,..     
44b0: 20 20 20 20 20 20 20 77 68 69 74 65 20 20 20 20         white    
44c0: 20 20 20 3a 20 74 72 75 65 2c 0d 0a 0d 0a 20 20     : true,....  
44d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 76            // Inv
44e0: 65 72 74 65 64 20 61 6e 64 20 72 65 6e 61 6d 65  erted and rename
44f0: 64 2c 20 75 73 65 20 4a 53 48 69 6e 74 20 6e 61  d, use JSHint na
4500: 6d 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20  me here..       
4510: 20 20 20 20 20 65 71 65 71 65 71 20 20 20 20 20       eqeqeq     
4520: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   : true,..      
4530: 20 20 20 20 20 20 6f 6e 65 76 61 72 20 20 20 20        onevar    
4540: 20 20 3a 20 74 72 75 65 0d 0a 20 20 20 20 20 20    : true..      
4550: 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20    },....        
4560: 2f 2f 20 54 68 65 73 65 20 61 72 65 20 4a 53 48  // These are JSH
4570: 69 6e 74 20 62 6f 6f 6c 65 61 6e 20 6f 70 74 69  int boolean opti
4580: 6f 6e 73 20 77 68 69 63 68 20 61 72 65 20 73 68  ons which are sh
4590: 61 72 65 64 20 77 69 74 68 20 4a 53 4c 69 6e 74  ared with JSLint
45a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 77 68 65  ..        // whe
45b0: 72 65 20 74 68 65 20 6e 61 6d 65 20 68 61 73 20  re the name has 
45c0: 62 65 65 6e 20 63 68 61 6e 67 65 64 20 62 75 74  been changed but
45d0: 20 74 68 65 20 65 66 66 65 63 74 20 69 73 20 75   the effect is u
45e0: 6e 63 68 61 6e 67 65 64 0d 0a 20 20 20 20 20 20  nchanged..      
45f0: 20 20 72 65 6e 61 6d 65 64 4f 70 74 69 6f 6e 73    renamedOptions
4600: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   = {..          
4610: 20 20 65 71 65 71 20 20 20 20 20 20 20 20 3a 20    eqeq        : 
4620: 22 65 71 65 71 65 71 22 2c 0d 0a 20 20 20 20 20  "eqeqeq",..     
4630: 20 20 20 20 20 20 20 76 61 72 73 20 20 20 20 20         vars     
4640: 20 20 20 3a 20 22 6f 6e 65 76 61 72 22 2c 0d 0a     : "onevar",..
4650: 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 64              wind
4660: 6f 77 73 20 20 20 20 20 3a 20 22 77 73 68 22 0d  ows     : "wsh".
4670: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 0d  .        },.....
4680: 0a 20 20 20 20 20 20 20 20 2f 2f 20 62 72 6f 77  .        // brow
4690: 73 65 72 20 63 6f 6e 74 61 69 6e 73 20 61 20 73  ser contains a s
46a0: 65 74 20 6f 66 20 67 6c 6f 62 61 6c 20 6e 61 6d  et of global nam
46b0: 65 73 20 77 68 69 63 68 20 61 72 65 20 63 6f 6d  es which are com
46c0: 6d 6f 6e 6c 79 20 70 72 6f 76 69 64 65 64 20 62  monly provided b
46d0: 79 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20  y a..        // 
46e0: 77 65 62 20 62 72 6f 77 73 65 72 20 65 6e 76 69  web browser envi
46f0: 72 6f 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  ronment...      
4700: 20 20 62 72 6f 77 73 65 72 20 3d 20 7b 0d 0a 20    browser = {.. 
4710: 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79             Array
4720: 42 75 66 66 65 72 20 20 20 20 20 20 20 20 20 20  Buffer          
4730: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4740: 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79             Array
4750: 42 75 66 66 65 72 56 69 65 77 20 20 20 20 20 20  BufferView      
4760: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4770: 20 20 20 20 20 20 20 20 20 20 20 41 75 64 69 6f             Audio
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4790: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
47a0: 20 20 20 20 20 20 20 20 20 20 20 61 64 64 45 76             addEv
47b0: 65 6e 74 4c 69 73 74 65 6e 65 72 20 20 20 20 20  entListener     
47c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
47d0: 20 20 20 20 20 20 20 20 20 20 20 61 70 70 6c 69             appli
47e0: 63 61 74 69 6f 6e 43 61 63 68 65 20 20 20 20 20  cationCache     
47f0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4800: 20 20 20 20 20 20 20 20 20 20 20 61 74 6f 62 20             atob 
4810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4820: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4830: 20 20 20 20 20 20 20 20 20 20 20 62 6c 75 72 20             blur 
4840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4850: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4860: 20 20 20 20 20 20 20 20 20 20 20 62 74 6f 61 20             btoa 
4870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4880: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4890: 20 20 20 20 20 20 20 20 20 20 20 63 6c 65 61 72             clear
48a0: 49 6e 74 65 72 76 61 6c 20 20 20 20 20 20 20 20  Interval        
48b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
48c0: 20 20 20 20 20 20 20 20 20 20 20 63 6c 65 61 72             clear
48d0: 54 69 6d 65 6f 75 74 20 20 20 20 20 20 20 20 20  Timeout         
48e0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
48f0: 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65             close
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4910: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4920: 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65             close
4930: 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  d               
4940: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4950: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 61 56             DataV
4960: 69 65 77 20 20 20 20 20 20 20 20 20 20 20 20 20  iew             
4970: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4980: 20 20 20 20 20 20 20 20 20 20 20 44 4f 4d 50 61             DOMPa
4990: 72 73 65 72 20 20 20 20 20 20 20 20 20 20 20 20  rser            
49a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
49b0: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
49c0: 6c 74 53 74 61 74 75 73 20 20 20 20 20 20 20 20  ltStatus        
49d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
49e0: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
49f0: 65 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20  ent             
4a00: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4a10: 20 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74             event
4a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a30: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4a40: 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65 52             FileR
4a50: 65 61 64 65 72 20 20 20 20 20 20 20 20 20 20 20  eader           
4a60: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4a70: 20 20 20 20 20 20 20 20 20 20 20 46 6c 6f 61 74             Float
4a80: 33 32 41 72 72 61 79 20 20 20 20 20 20 20 20 20  32Array         
4a90: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4aa0: 20 20 20 20 20 20 20 20 20 20 20 46 6c 6f 61 74             Float
4ab0: 36 34 41 72 72 61 79 20 20 20 20 20 20 20 20 20  64Array         
4ac0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4ad0: 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 6d 44             FormD
4ae0: 61 74 61 20 20 20 20 20 20 20 20 20 20 20 20 20  ata             
4af0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4b00: 20 20 20 20 20 20 20 20 20 20 20 66 6f 63 75 73             focus
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b20: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4b30: 20 20 20 20 20 20 20 20 20 20 20 66 72 61 6d 65             frame
4b40: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  s               
4b50: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4b60: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 43 6f             getCo
4b70: 6d 70 75 74 65 64 53 74 79 6c 65 20 20 20 20 20  mputedStyle     
4b80: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4b90: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 45             HTMLE
4ba0: 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 20 20  lement          
4bb0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4bc0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 41             HTMLA
4bd0: 6e 63 68 6f 72 45 6c 65 6d 65 6e 74 20 20 20 20  nchorElement    
4be0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4bf0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42             HTMLB
4c00: 61 73 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  aseElement      
4c10: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4c20: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42             HTMLB
4c30: 6c 6f 63 6b 71 75 6f 74 65 45 6c 65 6d 65 6e 74  lockquoteElement
4c40: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4c50: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42             HTMLB
4c60: 6f 64 79 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  odyElement      
4c70: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4c80: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42             HTMLB
4c90: 52 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20  RElement        
4ca0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4cb0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 42             HTMLB
4cc0: 75 74 74 6f 6e 45 6c 65 6d 65 6e 74 20 20 20 20  uttonElement    
4cd0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4ce0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 43             HTMLC
4cf0: 61 6e 76 61 73 45 6c 65 6d 65 6e 74 20 20 20 20  anvasElement    
4d00: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4d10: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 44             HTMLD
4d20: 69 72 65 63 74 6f 72 79 45 6c 65 6d 65 6e 74 20  irectoryElement 
4d30: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4d40: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 44             HTMLD
4d50: 69 76 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20  ivElement       
4d60: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4d70: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 44             HTMLD
4d80: 4c 69 73 74 45 6c 65 6d 65 6e 74 20 20 20 20 20  ListElement     
4d90: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4da0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46             HTMLF
4db0: 69 65 6c 64 53 65 74 45 6c 65 6d 65 6e 74 20 20  ieldSetElement  
4dc0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4dd0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46             HTMLF
4de0: 6f 6e 74 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  ontElement      
4df0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4e00: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46             HTMLF
4e10: 6f 72 6d 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  ormElement      
4e20: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4e30: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46             HTMLF
4e40: 72 61 6d 65 45 6c 65 6d 65 6e 74 20 20 20 20 20  rameElement     
4e50: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4e60: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 46             HTMLF
4e70: 72 61 6d 65 53 65 74 45 6c 65 6d 65 6e 74 20 20  rameSetElement  
4e80: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4e90: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48             HTMLH
4ea0: 65 61 64 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  eadElement      
4eb0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4ec0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48             HTMLH
4ed0: 65 61 64 69 6e 67 45 6c 65 6d 65 6e 74 20 20 20  eadingElement   
4ee0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4ef0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48             HTMLH
4f00: 52 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20  RElement        
4f10: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4f20: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 48             HTMLH
4f30: 74 6d 6c 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  tmlElement      
4f40: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4f50: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49             HTMLI
4f60: 46 72 61 6d 65 45 6c 65 6d 65 6e 74 20 20 20 20  FrameElement    
4f70: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4f80: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49             HTMLI
4f90: 6d 61 67 65 45 6c 65 6d 65 6e 74 20 20 20 20 20  mageElement     
4fa0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4fb0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49             HTMLI
4fc0: 6e 70 75 74 45 6c 65 6d 65 6e 74 20 20 20 20 20  nputElement     
4fd0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
4fe0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 49             HTMLI
4ff0: 73 49 6e 64 65 78 45 6c 65 6d 65 6e 74 20 20 20  sIndexElement   
5000: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5010: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c             HTMLL
5020: 61 62 65 6c 45 6c 65 6d 65 6e 74 20 20 20 20 20  abelElement     
5030: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5040: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c             HTMLL
5050: 61 79 65 72 45 6c 65 6d 65 6e 74 20 20 20 20 20  ayerElement     
5060: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5070: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c             HTMLL
5080: 65 67 65 6e 64 45 6c 65 6d 65 6e 74 20 20 20 20  egendElement    
5090: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
50a0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c             HTMLL
50b0: 49 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20  IElement        
50c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
50d0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4c             HTMLL
50e0: 69 6e 6b 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  inkElement      
50f0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5100: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d             HTMLM
5110: 61 70 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20  apElement       
5120: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5130: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d             HTMLM
5140: 65 6e 75 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  enuElement      
5150: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5160: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d             HTMLM
5170: 65 74 61 45 6c 65 6d 65 6e 74 20 20 20 20 20 20  etaElement      
5180: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5190: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4d             HTMLM
51a0: 6f 64 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20  odElement       
51b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
51c0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f             HTMLO
51d0: 62 6a 65 63 74 45 6c 65 6d 65 6e 74 20 20 20 20  bjectElement    
51e0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
51f0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f             HTMLO
5200: 4c 69 73 74 45 6c 65 6d 65 6e 74 20 20 20 20 20  ListElement     
5210: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5220: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f             HTMLO
5230: 70 74 47 72 6f 75 70 45 6c 65 6d 65 6e 74 20 20  ptGroupElement  
5240: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5250: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 4f             HTMLO
5260: 70 74 69 6f 6e 45 6c 65 6d 65 6e 74 20 20 20 20  ptionElement    
5270: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5280: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 50             HTMLP
5290: 61 72 61 67 72 61 70 68 45 6c 65 6d 65 6e 74 20  aragraphElement 
52a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
52b0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 50             HTMLP
52c0: 61 72 61 6d 45 6c 65 6d 65 6e 74 20 20 20 20 20  aramElement     
52d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
52e0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 50             HTMLP
52f0: 72 65 45 6c 65 6d 65 6e 74 20 20 20 20 20 20 20  reElement       
5300: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5310: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 51             HTMLQ
5320: 75 6f 74 65 45 6c 65 6d 65 6e 74 20 20 20 20 20  uoteElement     
5330: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5340: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 53             HTMLS
5350: 63 72 69 70 74 45 6c 65 6d 65 6e 74 20 20 20 20  criptElement    
5360: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5370: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 53             HTMLS
5380: 65 6c 65 63 74 45 6c 65 6d 65 6e 74 20 20 20 20  electElement    
5390: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
53a0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 53             HTMLS
53b0: 74 79 6c 65 45 6c 65 6d 65 6e 74 20 20 20 20 20  tyleElement     
53c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
53d0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
53e0: 61 62 6c 65 43 61 70 74 69 6f 6e 45 6c 65 6d 65  ableCaptionEleme
53f0: 6e 74 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20  nt  :  false,.. 
5400: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
5410: 61 62 6c 65 43 65 6c 6c 45 6c 65 6d 65 6e 74 20  ableCellElement 
5420: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5430: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
5440: 61 62 6c 65 43 6f 6c 45 6c 65 6d 65 6e 74 20 20  ableColElement  
5450: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5460: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
5470: 61 62 6c 65 45 6c 65 6d 65 6e 74 20 20 20 20 20  ableElement     
5480: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5490: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
54a0: 61 62 6c 65 52 6f 77 45 6c 65 6d 65 6e 74 20 20  ableRowElement  
54b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
54c0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
54d0: 61 62 6c 65 53 65 63 74 69 6f 6e 45 6c 65 6d 65  ableSectionEleme
54e0: 6e 74 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20  nt  :  false,.. 
54f0: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
5500: 65 78 74 41 72 65 61 45 6c 65 6d 65 6e 74 20 20  extAreaElement  
5510: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5520: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 54             HTMLT
5530: 69 74 6c 65 45 6c 65 6d 65 6e 74 20 20 20 20 20  itleElement     
5540: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5550: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 55             HTMLU
5560: 4c 69 73 74 45 6c 65 6d 65 6e 74 20 20 20 20 20  ListElement     
5570: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5580: 20 20 20 20 20 20 20 20 20 20 20 48 54 4d 4c 56             HTMLV
5590: 69 64 65 6f 45 6c 65 6d 65 6e 74 20 20 20 20 20  ideoElement     
55a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
55b0: 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f             histo
55c0: 72 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ry              
55d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
55e0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 31 36             Int16
55f0: 41 72 72 61 79 20 20 20 20 20 20 20 20 20 20 20  Array           
5600: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5610: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 33 32             Int32
5620: 41 72 72 61 79 20 20 20 20 20 20 20 20 20 20 20  Array           
5630: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5640: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 38 41             Int8A
5650: 72 72 61 79 20 20 20 20 20 20 20 20 20 20 20 20  rray            
5660: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5670: 20 20 20 20 20 20 20 20 20 20 20 49 6d 61 67 65             Image
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5690: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
56a0: 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74             lengt
56b0: 68 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  h               
56c0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
56d0: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c             local
56e0: 53 74 6f 72 61 67 65 20 20 20 20 20 20 20 20 20  Storage         
56f0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5700: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 74             locat
5710: 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 20  ion             
5720: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5730: 20 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61             Messa
5740: 67 65 43 68 61 6e 6e 65 6c 20 20 20 20 20 20 20  geChannel       
5750: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5760: 20 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61             Messa
5770: 67 65 45 76 65 6e 74 20 20 20 20 20 20 20 20 20  geEvent         
5780: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5790: 20 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61             Messa
57a0: 67 65 50 6f 72 74 20 20 20 20 20 20 20 20 20 20  gePort          
57b0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
57c0: 20 20 20 20 20 20 20 20 20 20 20 6d 6f 76 65 42             moveB
57d0: 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y               
57e0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
57f0: 20 20 20 20 20 20 20 20 20 20 20 6d 6f 76 65 54             moveT
5800: 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  o               
5810: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5820: 20 20 20 20 20 20 20 20 20 20 20 4d 75 74 61 74             Mutat
5830: 69 6f 6e 4f 62 73 65 72 76 65 72 20 20 20 20 20  ionObserver     
5840: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5850: 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20             name 
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5870: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5880: 20 20 20 20 20 20 20 20 20 20 20 4e 6f 64 65 20             Node 
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
58b0: 20 20 20 20 20 20 20 20 20 20 20 4e 6f 64 65 46             NodeF
58c0: 69 6c 74 65 72 20 20 20 20 20 20 20 20 20 20 20  ilter           
58d0: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
58e0: 20 20 20 20 20 20 20 20 20 20 20 6e 61 76 69 67             navig
58f0: 61 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20  ator            
5900: 20 20 20 20 3a 20 20 66 61 6c 73 65 2c 0d 0a 20      :  false,.. 
5910: 20 20 20 20 20 20 20 20 20 20 20 6f 6e 62 65 66             onbef
5920: 6f 72 65 75 6e 6c 6f 61 64 20 20 20 20 20 20 20  oreunload       
5930: 20 20 20 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20      :  true,..  
5940: 20 20 20 20 20 20 20 20 20 20 6f 6e 62 6c 75 72            onblur
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5960: 20 20 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20     :  true,..   
5970: 20 20 20 20 20 20 20 20 20 6f 6e 65 72 72 6f 72           onerror
5980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5990: 20 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20 20    :  true,..    
59a0: 20 20 20 20 20 20 20 20 6f 6e 66 6f 63 75 73 20          onfocus 
59b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59c0: 20 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20 20 20   :  true,..     
59d0: 20 20 20 20 20 20 20 6f 6e 6c 6f 61 64 20 20 20         onload   
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59f0: 3a 20 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20  :  true,..      
5a00: 20 20 20 20 20 20 6f 6e 72 65 73 69 7a 65 20 20        onresize  
5a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a                 :
5a20: 20 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20    true,..       
5a30: 20 20 20 20 20 6f 6e 75 6e 6c 6f 61 64 20 20 20       onunload   
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
5a50: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20   true,..        
5a60: 20 20 20 20 6f 70 65 6e 20 20 20 20 20 20 20 20      open        
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5a80: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5a90: 20 20 20 20 6f 70 65 6e 44 61 74 61 62 61 73 65      openDatabase
5aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5ab0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5ac0: 20 20 20 20 6f 70 65 6e 65 72 20 20 20 20 20 20      opener      
5ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5ae0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5af0: 20 20 20 20 4f 70 74 69 6f 6e 20 20 20 20 20 20      Option      
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5b10: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5b20: 20 20 20 20 70 61 72 65 6e 74 20 20 20 20 20 20      parent      
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5b40: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5b50: 20 20 20 20 70 72 69 6e 74 20 20 20 20 20 20 20      print       
5b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5b70: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5b80: 20 20 20 20 72 65 6d 6f 76 65 45 76 65 6e 74 4c      removeEventL
5b90: 69 73 74 65 6e 65 72 20 20 20 20 20 20 3a 20 20  istener      :  
5ba0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5bb0: 20 20 20 20 72 65 73 69 7a 65 42 79 20 20 20 20      resizeBy    
5bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5bd0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5be0: 20 20 20 20 72 65 73 69 7a 65 54 6f 20 20 20 20      resizeTo    
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5c00: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5c10: 20 20 20 20 73 63 72 65 65 6e 20 20 20 20 20 20      screen      
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5c30: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5c40: 20 20 20 20 73 63 72 6f 6c 6c 20 20 20 20 20 20      scroll      
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5c60: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5c70: 20 20 20 20 73 63 72 6f 6c 6c 42 79 20 20 20 20      scrollBy    
5c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5c90: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5ca0: 20 20 20 20 73 63 72 6f 6c 6c 54 6f 20 20 20 20      scrollTo    
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5cc0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5cd0: 20 20 20 20 73 65 73 73 69 6f 6e 53 74 6f 72 61      sessionStora
5ce0: 67 65 20 20 20 20 20 20 20 20 20 20 20 3a 20 20  ge           :  
5cf0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5d00: 20 20 20 20 73 65 74 49 6e 74 65 72 76 61 6c 20      setInterval 
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5d20: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5d30: 20 20 20 20 73 65 74 54 69 6d 65 6f 75 74 20 20      setTimeout  
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5d50: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5d60: 20 20 20 20 53 68 61 72 65 64 57 6f 72 6b 65 72      SharedWorker
5d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5d80: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5d90: 20 20 20 20 73 74 61 74 75 73 20 20 20 20 20 20      status      
5da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5db0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5dc0: 20 20 20 20 74 6f 70 20 20 20 20 20 20 20 20 20      top         
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5de0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5df0: 20 20 20 20 55 69 6e 74 31 36 41 72 72 61 79 20      Uint16Array 
5e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5e10: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5e20: 20 20 20 20 55 69 6e 74 33 32 41 72 72 61 79 20      Uint32Array 
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5e40: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5e50: 20 20 20 20 55 69 6e 74 38 41 72 72 61 79 20 20      Uint8Array  
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5e70: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5e80: 20 20 20 20 57 65 62 53 6f 63 6b 65 74 20 20 20      WebSocket   
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5ea0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5eb0: 20 20 20 20 77 69 6e 64 6f 77 20 20 20 20 20 20      window      
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5ed0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5ee0: 20 20 20 20 57 6f 72 6b 65 72 20 20 20 20 20 20      Worker      
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
5f00: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5f10: 20 20 20 20 58 4d 4c 48 74 74 70 52 65 71 75 65      XMLHttpReque
5f20: 73 74 20 20 20 20 20 20 20 20 20 20 20 3a 20 20  st           :  
5f30: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5f40: 20 20 20 20 58 4d 4c 53 65 72 69 61 6c 69 7a 65      XMLSerialize
5f50: 72 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20  r            :  
5f60: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5f70: 20 20 20 20 58 50 61 74 68 45 76 61 6c 75 61 74      XPathEvaluat
5f80: 6f 72 20 20 20 20 20 20 20 20 20 20 20 3a 20 20  or           :  
5f90: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5fa0: 20 20 20 20 58 50 61 74 68 45 78 63 65 70 74 69      XPathExcepti
5fb0: 6f 6e 20 20 20 20 20 20 20 20 20 20 20 3a 20 20  on           :  
5fc0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
5fd0: 20 20 20 20 58 50 61 74 68 45 78 70 72 65 73 73      XPathExpress
5fe0: 69 6f 6e 20 20 20 20 20 20 20 20 20 20 3a 20 20  ion          :  
5ff0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6000: 20 20 20 20 58 50 61 74 68 4e 61 6d 65 73 70 61      XPathNamespa
6010: 63 65 20 20 20 20 20 20 20 20 20 20 20 3a 20 20  ce           :  
6020: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6030: 20 20 20 20 58 50 61 74 68 4e 53 52 65 73 6f 6c      XPathNSResol
6040: 76 65 72 20 20 20 20 20 20 20 20 20 20 3a 20 20  ver          :  
6050: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6060: 20 20 20 20 58 50 61 74 68 52 65 73 75 6c 74 20      XPathResult 
6070: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20               :  
6080: 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7d  false..        }
6090: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 75  ,....        cou
60a0: 63 68 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  ch = {..        
60b0: 20 20 20 20 22 72 65 71 75 69 72 65 22 20 3a 20      "require" : 
60c0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
60d0: 20 20 20 20 72 65 73 70 6f 6e 64 20 20 20 3a 20      respond   : 
60e0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
60f0: 20 20 20 20 67 65 74 52 6f 77 20 20 20 20 3a 20      getRow    : 
6100: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6110: 20 20 20 20 65 6d 69 74 20 20 20 20 20 20 3a 20      emit      : 
6120: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6130: 20 20 20 20 73 65 6e 64 20 20 20 20 20 20 3a 20      send      : 
6140: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6150: 20 20 20 20 73 74 61 72 74 20 20 20 20 20 3a 20      start     : 
6160: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6170: 20 20 20 20 73 75 6d 20 20 20 20 20 20 20 3a 20      sum       : 
6180: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
6190: 20 20 20 20 6c 6f 67 20 20 20 20 20 20 20 3a 20      log       : 
61a0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
61b0: 20 20 20 20 65 78 70 6f 72 74 73 20 20 20 3a 20      exports   : 
61c0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
61d0: 20 20 20 20 6d 6f 64 75 6c 65 20 20 20 20 3a 20      module    : 
61e0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
61f0: 20 20 20 20 70 72 6f 76 69 64 65 73 20 20 3a 20      provides  : 
6200: 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7d  false..        }
6210: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 63  ,....        dec
6220: 6c 61 72 65 64 2c 20 2f 2f 20 47 6c 6f 62 61 6c  lared, // Global
6230: 73 20 74 68 61 74 20 77 65 72 65 20 64 65 63 6c  s that were decl
6240: 61 72 65 64 20 75 73 69 6e 67 20 2f 2a 67 6c 6f  ared using /*glo
6250: 62 61 6c 20 2e 2e 2e 20 2a 2f 20 73 79 6e 74 61  bal ... */ synta
6260: 78 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65  x.....        de
6270: 76 65 6c 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  vel = {..       
6280: 20 20 20 20 20 61 6c 65 72 74 20 20 20 3a 20 66       alert   : f
6290: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
62a0: 20 20 20 63 6f 6e 66 69 72 6d 20 3a 20 66 61 6c     confirm : fal
62b0: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
62c0: 20 63 6f 6e 73 6f 6c 65 20 3a 20 66 61 6c 73 65   console : false
62d0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  ,..            D
62e0: 65 62 75 67 20 20 20 3a 20 66 61 6c 73 65 2c 0d  ebug   : false,.
62f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65  .            ope
6300: 72 61 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20  ra   : false,.. 
6310: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70             promp
6320: 74 20 20 3a 20 66 61 6c 73 65 0d 0a 20 20 20 20  t  : false..    
6330: 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20      },....      
6340: 20 20 64 6f 6a 6f 20 3d 20 7b 0d 0a 20 20 20 20    dojo = {..    
6350: 20 20 20 20 20 20 20 20 64 6f 6a 6f 20 20 20 20          dojo    
6360: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
6370: 20 20 20 20 20 20 20 20 64 69 6a 69 74 20 20 20          dijit   
6380: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
6390: 20 20 20 20 20 20 20 20 64 6f 6a 6f 78 20 20 20          dojox   
63a0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
63b0: 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 20          define  
63c0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
63d0: 20 20 20 20 20 20 20 20 22 72 65 71 75 69 72 65          "require
63e0: 22 20 3a 20 66 61 6c 73 65 0d 0a 20 20 20 20 20  " : false..     
63f0: 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20 20     },....       
6400: 20 66 75 6e 63 74 2c 20 20 20 20 20 20 20 20 20   funct,         
6410: 20 2f 2f 20 54 68 65 20 63 75 72 72 65 6e 74 20   // The current 
6420: 66 75 6e 63 74 69 6f 6e 0d 0a 0d 0a 20 20 20 20  function....    
6430: 20 20 20 20 66 75 6e 63 74 69 6f 6e 69 63 69 74      functionicit
6440: 79 20 3d 20 5b 0d 0a 20 20 20 20 20 20 20 20 20  y = [..         
6450: 20 20 20 22 63 6c 6f 73 75 72 65 22 2c 20 22 65     "closure", "e
6460: 78 63 65 70 74 69 6f 6e 22 2c 20 22 67 6c 6f 62  xception", "glob
6470: 61 6c 22 2c 20 22 6c 61 62 65 6c 22 2c 0d 0a 20  al", "label",.. 
6480: 20 20 20 20 20 20 20 20 20 20 20 22 6f 75 74 65             "oute
6490: 72 22 2c 20 22 75 6e 75 73 65 64 22 2c 20 22 76  r", "unused", "v
64a0: 61 72 22 0d 0a 20 20 20 20 20 20 20 20 5d 2c 0d  ar"..        ],.
64b0: 0a 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74  ...        funct
64c0: 69 6f 6e 73 2c 20 20 20 20 20 20 2f 2f 20 41 6c  ions,      // Al
64d0: 6c 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f  l of the functio
64e0: 6e 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 67 6c  ns....        gl
64f0: 6f 62 61 6c 2c 20 20 20 20 20 20 20 20 20 2f 2f  obal,         //
6500: 20 54 68 65 20 67 6c 6f 62 61 6c 20 73 63 6f 70   The global scop
6510: 65 0d 0a 20 20 20 20 20 20 20 20 69 6d 70 6c 69  e..        impli
6520: 65 64 2c 20 20 20 20 20 20 20 20 2f 2f 20 49 6d  ed,        // Im
6530: 70 6c 69 65 64 20 67 6c 6f 62 61 6c 73 0d 0a 20  plied globals.. 
6540: 20 20 20 20 20 20 20 69 6e 62 6c 6f 63 6b 2c 0d         inblock,.
6550: 0a 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 2c  .        indent,
6560: 0d 0a 20 20 20 20 20 20 20 20 6a 73 6f 6e 6d 6f  ..        jsonmo
6570: 64 65 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6a  de,....        j
6580: 71 75 65 72 79 20 3d 20 7b 0d 0a 20 20 20 20 20  query = {..     
6590: 20 20 20 20 20 20 20 22 24 22 20 20 20 20 3a 20         "$"    : 
65a0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
65b0: 20 20 20 20 6a 51 75 65 72 79 20 3a 20 66 61 6c      jQuery : fal
65c0: 73 65 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a  se..        },..
65d0: 0d 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 73 2c  ..        lines,
65e0: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6f 6b 61 68  ..        lookah
65f0: 65 61 64 2c 0d 0a 20 20 20 20 20 20 20 20 6d 65  ead,..        me
6600: 6d 62 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 6d  mber,..        m
6610: 65 6d 62 65 72 73 4f 6e 6c 79 2c 0d 0a 0d 0a 20  embersOnly,.... 
6620: 20 20 20 20 20 20 20 6d 6f 6f 74 6f 6f 6c 73 20         mootools 
6630: 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  = {..           
6640: 20 22 24 22 20 20 20 20 20 20 20 20 20 20 20 20   "$"            
6650: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
6660: 20 20 20 20 20 20 20 22 24 24 22 20 20 20 20 20         "$$"     
6670: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d         : false,.
6680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73  .            Ass
6690: 65 74 73 20 20 20 20 20 20 20 20 20 20 3a 20 66  ets          : f
66a0: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
66b0: 20 20 20 42 72 6f 77 73 65 72 20 20 20 20 20 20     Browser      
66c0: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20     : false,..   
66d0: 20 20 20 20 20 20 20 20 20 43 68 61 69 6e 20 20           Chain  
66e0: 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65           : false
66f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  ,..            C
6700: 6c 61 73 73 20 20 20 20 20 20 20 20 20 20 20 3a  lass           :
6710: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
6720: 20 20 20 20 20 43 6f 6c 6f 72 20 20 20 20 20 20       Color      
6730: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20       : false,.. 
6740: 20 20 20 20 20 20 20 20 20 20 20 43 6f 6f 6b 69             Cooki
6750: 65 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c  e          : fal
6760: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
6770: 20 43 6f 72 65 20 20 20 20 20 20 20 20 20 20 20   Core           
6780: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
6790: 20 20 20 20 20 20 20 44 6f 63 75 6d 65 6e 74 20         Document 
67a0: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d         : false,.
67b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 6f 6d  .            Dom
67c0: 52 65 61 64 79 20 20 20 20 20 20 20 20 3a 20 66  Ready        : f
67d0: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
67e0: 20 20 20 44 4f 4d 52 65 61 64 79 20 20 20 20 20     DOMReady     
67f0: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20     : false,..   
6800: 20 20 20 20 20 20 20 20 20 44 72 61 67 20 20 20           Drag   
6810: 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65           : false
6820: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45  ,..            E
6830: 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 20 3a  lement         :
6840: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
6850: 20 20 20 20 20 45 6c 65 6d 65 6e 74 73 20 20 20       Elements   
6860: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20       : false,.. 
6870: 20 20 20 20 20 20 20 20 20 20 20 45 76 65 6e 74             Event
6880: 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c             : fal
6890: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
68a0: 20 45 76 65 6e 74 73 20 20 20 20 20 20 20 20 20   Events         
68b0: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
68c0: 20 20 20 20 20 20 20 46 78 20 20 20 20 20 20 20         Fx       
68d0: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d         : false,.
68e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 72 6f  .            Gro
68f0: 75 70 20 20 20 20 20 20 20 20 20 20 20 3a 20 66  up           : f
6900: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
6910: 20 20 20 48 61 73 68 20 20 20 20 20 20 20 20 20     Hash         
6920: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20     : false,..   
6930: 20 20 20 20 20 20 20 20 20 48 74 6d 6c 54 61 62           HtmlTab
6940: 6c 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65  le       : false
6950: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
6960: 66 72 61 6d 65 20 20 20 20 20 20 20 20 20 20 3a  frame          :
6970: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
6980: 20 20 20 20 20 49 66 72 61 6d 65 53 68 69 6d 20       IframeShim 
6990: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20       : false,.. 
69a0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 70 75 74             Input
69b0: 56 61 6c 69 64 61 74 6f 72 20 20 3a 20 66 61 6c  Validator  : fal
69c0: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
69d0: 20 69 6e 73 74 61 6e 63 65 4f 66 20 20 20 20 20   instanceOf     
69e0: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
69f0: 20 20 20 20 20 20 20 4b 65 79 62 6f 61 72 64 20         Keyboard 
6a00: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d         : false,.
6a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 63  .            Loc
6a20: 61 6c 65 20 20 20 20 20 20 20 20 20 20 3a 20 66  ale          : f
6a30: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
6a40: 20 20 20 4d 61 73 6b 20 20 20 20 20 20 20 20 20     Mask         
6a50: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20     : false,..   
6a60: 20 20 20 20 20 20 20 20 20 4d 6f 6f 54 6f 6f 6c           MooTool
6a70: 73 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65  s        : false
6a80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e  ,..            N
6a90: 61 74 69 76 65 20 20 20 20 20 20 20 20 20 20 3a  ative          :
6aa0: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
6ab0: 20 20 20 20 20 4f 70 74 69 6f 6e 73 20 20 20 20       Options    
6ac0: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20       : false,.. 
6ad0: 20 20 20 20 20 20 20 20 20 20 20 4f 76 65 72 54             OverT
6ae0: 65 78 74 20 20 20 20 20 20 20 20 3a 20 66 61 6c  ext        : fal
6af0: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
6b00: 20 52 65 71 75 65 73 74 20 20 20 20 20 20 20 20   Request        
6b10: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
6b20: 20 20 20 20 20 20 20 53 63 72 6f 6c 6c 65 72 20         Scroller 
6b30: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d         : false,.
6b40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 6c 69  .            Sli
6b50: 63 6b 20 20 20 20 20 20 20 20 20 20 20 3a 20 66  ck           : f
6b60: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
6b70: 20 20 20 53 6c 69 64 65 72 20 20 20 20 20 20 20     Slider       
6b80: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20     : false,..   
6b90: 20 20 20 20 20 20 20 20 20 53 6f 72 74 61 62 6c           Sortabl
6ba0: 65 73 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65  es       : false
6bb0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
6bc0: 70 69 6e 6e 65 72 20 20 20 20 20 20 20 20 20 3a  pinner         :
6bd0: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
6be0: 20 20 20 20 20 53 77 69 66 66 20 20 20 20 20 20       Swiff      
6bf0: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20       : false,.. 
6c00: 20 20 20 20 20 20 20 20 20 20 20 54 69 70 73 20             Tips 
6c10: 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c             : fal
6c20: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
6c30: 20 54 79 70 65 20 20 20 20 20 20 20 20 20 20 20   Type           
6c40: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
6c50: 20 20 20 20 20 20 20 74 79 70 65 4f 66 20 20 20         typeOf   
6c60: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d         : false,.
6c70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 52 49  .            URI
6c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66               : f
6c90: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
6ca0: 20 20 20 57 69 6e 64 6f 77 20 20 20 20 20 20 20     Window       
6cb0: 20 20 20 3a 20 66 61 6c 73 65 0d 0a 20 20 20 20     : false..    
6cc0: 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 20 20      },....      
6cd0: 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 0d 0a 0d 0a    nexttoken,....
6ce0: 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 7b          node = {
6cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 5f  ..            __
6d00: 66 69 6c 65 6e 61 6d 65 20 20 20 20 3a 20 66 61  filename    : fa
6d10: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lse,..          
6d20: 20 20 5f 5f 64 69 72 6e 61 6d 65 20 20 20 20 20    __dirname     
6d30: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
6d40: 20 20 20 20 20 20 42 75 66 66 65 72 20 20 20 20        Buffer    
6d50: 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20      : false,..  
6d60: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c            consol
6d70: 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c  e       : false,
6d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78  ..            ex
6d90: 70 6f 72 74 73 20 20 20 20 20 20 20 3a 20 74 72  ports       : tr
6da0: 75 65 2c 20 20 2f 2f 20 49 6e 20 4e 6f 64 65 20  ue,  // In Node 
6db0: 69 74 20 69 73 20 6f 6b 20 74 6f 20 65 78 70 6f  it is ok to expo
6dc0: 72 74 73 20 3d 20 6d 6f 64 75 6c 65 2e 65 78 70  rts = module.exp
6dd0: 6f 72 74 73 20 3d 20 66 6f 6f 28 29 3b 0d 0a 20  orts = foo();.. 
6de0: 20 20 20 20 20 20 20 20 20 20 20 47 4c 4f 42 41             GLOBA
6df0: 4c 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65  L        : false
6e00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  ,..            g
6e10: 6c 6f 62 61 6c 20 20 20 20 20 20 20 20 3a 20 66  lobal        : f
6e20: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
6e30: 20 20 20 6d 6f 64 75 6c 65 20 20 20 20 20 20 20     module       
6e40: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
6e50: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 20 20         process  
6e60: 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20       : false,.. 
6e70: 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 69             requi
6e80: 72 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65  re       : false
6e90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
6ea0: 65 74 54 69 6d 65 6f 75 74 20 20 20 20 3a 20 66  etTimeout    : f
6eb0: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
6ec0: 20 20 20 63 6c 65 61 72 54 69 6d 65 6f 75 74 20     clearTimeout 
6ed0: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
6ee0: 20 20 20 20 20 20 20 73 65 74 49 6e 74 65 72 76         setInterv
6ef0: 61 6c 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20  al   : false,.. 
6f00: 20 20 20 20 20 20 20 20 20 20 20 63 6c 65 61 72             clear
6f10: 49 6e 74 65 72 76 61 6c 20 3a 20 66 61 6c 73 65  Interval : false
6f20: 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a  ..        },....
6f30: 20 20 20 20 20 20 20 20 6e 6f 72 65 61 63 68 2c          noreach,
6f40: 0d 0a 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e  ..        option
6f50: 2c 0d 0a 20 20 20 20 20 20 20 20 70 72 65 64 65  ,..        prede
6f60: 66 69 6e 65 64 2c 20 20 20 20 20 2f 2f 20 47 6c  fined,     // Gl
6f70: 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 64  obal variables d
6f80: 65 66 69 6e 65 64 20 62 79 20 6f 70 74 69 6f 6e  efined by option
6f90: 0d 0a 20 20 20 20 20 20 20 20 70 72 65 72 65 67  ..        prereg
6fa0: 2c 0d 0a 20 20 20 20 20 20 20 20 70 72 65 76 74  ,..        prevt
6fb0: 6f 6b 65 6e 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  oken,....       
6fc0: 20 70 72 6f 74 6f 74 79 70 65 6a 73 20 3d 20 7b   prototypejs = {
6fd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24  ..            "$
6fe0: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  "               
6ff0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7000: 20 20 20 20 20 20 22 24 24 22 20 20 20 20 20 20        "$$"      
7010: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24  ..            "$
7030: 41 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20  A"              
7040: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7050: 20 20 20 20 20 20 22 24 46 22 20 20 20 20 20 20        "$F"      
7060: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24  ..            "$
7080: 48 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20  H"              
7090: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
70a0: 20 20 20 20 20 20 22 24 52 22 20 20 20 20 20 20        "$R"      
70b0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
70c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24  ..            "$
70d0: 62 72 65 61 6b 22 20 20 20 20 20 20 20 20 20 20  break"          
70e0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
70f0: 20 20 20 20 20 20 22 24 63 6f 6e 74 69 6e 75 65        "$continue
7100: 22 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c  "       : false,
7110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 24  ..            "$
7120: 77 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20  w"              
7130: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7140: 20 20 20 20 20 20 41 62 73 74 72 61 63 74 20 20        Abstract  
7150: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 6a  ..            Aj
7170: 61 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ax              
7180: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7190: 20 20 20 20 20 20 43 6c 61 73 73 20 20 20 20 20        Class     
71a0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
71b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 6e  ..            En
71c0: 75 6d 65 72 61 62 6c 65 20 20 20 20 20 20 20 20  umerable        
71d0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
71e0: 20 20 20 20 20 20 45 6c 65 6d 65 6e 74 20 20 20        Element   
71f0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7200: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 76  ..            Ev
7210: 65 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20  ent             
7220: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7230: 20 20 20 20 20 20 46 69 65 6c 64 20 20 20 20 20        Field     
7240: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 46 6f  ..            Fo
7260: 72 6d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  rm              
7270: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7280: 20 20 20 20 20 20 48 61 73 68 20 20 20 20 20 20        Hash      
7290: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
72a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
72b0: 73 65 72 74 69 6f 6e 20 20 20 20 20 20 20 20 20  sertion         
72c0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
72d0: 20 20 20 20 20 20 4f 62 6a 65 63 74 52 61 6e 67        ObjectRang
72e0: 65 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c  e       : false,
72f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 65  ..            Pe
7300: 72 69 6f 64 69 63 61 6c 45 78 65 63 75 74 65 72  riodicalExecuter
7310: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7320: 20 20 20 20 20 20 50 6f 73 69 74 69 6f 6e 20 20        Position  
7330: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 72  ..            Pr
7350: 6f 74 6f 74 79 70 65 20 20 20 20 20 20 20 20 20  ototype         
7360: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7370: 20 20 20 20 20 20 53 65 6c 65 63 74 6f 72 20 20        Selector  
7380: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 65  ..            Te
73a0: 6d 70 6c 61 74 65 20 20 20 20 20 20 20 20 20 20  mplate          
73b0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
73c0: 20 20 20 20 20 20 54 6f 67 67 6c 65 20 20 20 20        Toggle    
73d0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
73e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72  ..            Tr
73f0: 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y               
7400: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7410: 20 20 20 20 20 20 41 75 74 6f 63 6f 6d 70 6c 65        Autocomple
7420: 74 65 72 20 20 20 20 20 3a 20 66 61 6c 73 65 2c  ter     : false,
7430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 75  ..            Bu
7440: 69 6c 64 65 72 20 20 20 20 20 20 20 20 20 20 20  ilder           
7450: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7460: 20 20 20 20 20 20 43 6f 6e 74 72 6f 6c 20 20 20        Control   
7470: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 72  ..            Dr
7490: 61 67 67 61 62 6c 65 20 20 20 20 20 20 20 20 20  aggable         
74a0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
74b0: 20 20 20 20 20 20 44 72 61 67 67 61 62 6c 65 73        Draggables
74c0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
74d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 72  ..            Dr
74e0: 6f 70 70 61 62 6c 65 73 20 20 20 20 20 20 20 20  oppables        
74f0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7500: 20 20 20 20 20 20 45 66 66 65 63 74 20 20 20 20        Effect    
7510: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 6f  ..            So
7530: 72 74 61 62 6c 65 20 20 20 20 20 20 20 20 20 20  rtable          
7540: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7550: 20 20 20 20 20 20 53 6f 72 74 61 62 6c 65 4f 62        SortableOb
7560: 73 65 72 76 65 72 20 20 3a 20 66 61 6c 73 65 2c  server  : false,
7570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 6f  ..            So
7580: 75 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20  und             
7590: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
75a0: 20 20 20 20 20 20 53 63 72 69 70 74 61 63 75 6c        Scriptacul
75b0: 6f 75 73 20 20 20 20 20 3a 20 66 61 6c 73 65 0d  ous     : false.
75c0: 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20  .        },.... 
75d0: 20 20 20 20 20 20 20 71 75 6f 74 6d 61 72 6b 2c         quotmark,
75e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 68 69 6e  ....        rhin
75f0: 6f 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  o = {..         
7600: 20 20 20 64 65 66 69 6e 65 43 6c 61 73 73 20 20     defineClass  
7610: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7620: 20 20 20 20 20 20 64 65 73 65 72 69 61 6c 69 7a        deserializ
7630: 65 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20  e  : false,..   
7640: 20 20 20 20 20 20 20 20 20 67 63 20 20 20 20 20           gc     
7650: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a        : false,..
7660: 20 20 20 20 20 20 20 20 20 20 20 20 68 65 6c 70              help
7670: 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65           : false
7680: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
7690: 6d 70 6f 72 74 50 61 63 6b 61 67 65 3a 20 66 61  mportPackage: fa
76a0: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lse,..          
76b0: 20 20 22 6a 61 76 61 22 20 20 20 20 20 20 20 3a    "java"       :
76c0: 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
76d0: 20 20 20 20 20 6c 6f 61 64 20 20 20 20 20 20 20       load       
76e0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
76f0: 20 20 20 20 20 20 20 20 6c 6f 61 64 43 6c 61 73          loadClas
7700: 73 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20  s    : false,.. 
7710: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74             print
7720: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 71 75  ..            qu
7740: 69 74 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c  it         : fal
7750: 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
7760: 20 72 65 61 64 46 69 6c 65 20 20 20 20 20 3a 20   readFile     : 
7770: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
7780: 20 20 20 20 72 65 61 64 55 72 6c 20 20 20 20 20      readUrl     
7790: 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   : false,..     
77a0: 20 20 20 20 20 20 20 72 75 6e 43 6f 6d 6d 61 6e         runComman
77b0: 64 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20  d   : false,..  
77c0: 20 20 20 20 20 20 20 20 20 20 73 65 61 6c 20 20            seal  
77d0: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d         : false,.
77e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 72  .            ser
77f0: 69 61 6c 69 7a 65 20 20 20 20 3a 20 66 61 6c 73  ialize    : fals
7800: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
7810: 73 70 61 77 6e 20 20 20 20 20 20 20 20 3a 20 66  spawn        : f
7820: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
7830: 20 20 20 73 79 6e 63 20 20 20 20 20 20 20 20 20     sync         
7840: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7850: 20 20 20 20 20 20 74 6f 69 6e 74 33 32 20 20 20        toint32   
7860: 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20     : false,..   
7870: 20 20 20 20 20 20 20 20 20 76 65 72 73 69 6f 6e           version
7880: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 0d 0a 20        : false.. 
7890: 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20         },....   
78a0: 20 20 20 20 20 73 63 6f 70 65 2c 20 20 20 20 20       scope,     
78b0: 20 2f 2f 20 54 68 65 20 63 75 72 72 65 6e 74 20   // The current 
78c0: 73 63 6f 70 65 0d 0a 20 20 20 20 20 20 20 20 73  scope..        s
78d0: 74 61 63 6b 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  tack,....       
78e0: 20 2f 2f 20 73 74 61 6e 64 61 72 64 20 63 6f 6e   // standard con
78f0: 74 61 69 6e 73 20 74 68 65 20 67 6c 6f 62 61 6c  tains the global
7900: 20 6e 61 6d 65 73 20 74 68 61 74 20 61 72 65 20   names that are 
7910: 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d  provided by the.
7920: 0a 20 20 20 20 20 20 20 20 2f 2f 20 45 43 4d 41  .        // ECMA
7930: 53 63 72 69 70 74 20 73 74 61 6e 64 61 72 64 2e  Script standard.
7940: 0d 0a 20 20 20 20 20 20 20 20 73 74 61 6e 64 61  ..        standa
7950: 72 64 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  rd = {..        
7960: 20 20 20 20 41 72 72 61 79 20 20 20 20 20 20 20      Array       
7970: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 6f  ..            Bo
7990: 6f 6c 65 61 6e 20 20 20 20 20 20 20 20 20 20 20  olean           
79a0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
79b0: 20 20 20 20 20 20 20 20 44 61 74 65 20 20 20 20          Date    
79c0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61              : fa
79d0: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lse,..          
79e0: 20 20 64 65 63 6f 64 65 55 52 49 20 20 20 20 20    decodeURI     
79f0: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a        : false,..
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 63 6f              deco
7a10: 64 65 55 52 49 43 6f 6d 70 6f 6e 65 6e 74 20 20  deURIComponent  
7a20: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7a30: 20 20 20 20 20 20 65 6e 63 6f 64 65 55 52 49 20        encodeURI 
7a40: 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73            : fals
7a50: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
7a60: 65 6e 63 6f 64 65 55 52 49 43 6f 6d 70 6f 6e 65  encodeURICompone
7a70: 6e 74 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20  nt  : false,..  
7a80: 20 20 20 20 20 20 20 20 20 20 45 72 72 6f 72 20            Error 
7a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
7aa0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
7ab0: 20 20 20 20 22 65 76 61 6c 22 20 20 20 20 20 20      "eval"      
7ac0: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7ad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 76  ..            Ev
7ae0: 61 6c 45 72 72 6f 72 20 20 20 20 20 20 20 20 20  alError         
7af0: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
7b00: 20 20 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e          Function
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61              : fa
7b20: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lse,..          
7b30: 20 20 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79    hasOwnProperty
7b40: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a        : false,..
7b50: 20 20 20 20 20 20 20 20 20 20 20 20 69 73 46 69              isFi
7b60: 6e 69 74 65 20 20 20 20 20 20 20 20 20 20 20 20  nite            
7b70: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7b80: 20 20 20 20 20 20 69 73 4e 61 4e 20 20 20 20 20        isNaN     
7b90: 20 20 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73            : fals
7ba0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
7bb0: 4a 53 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20  JSON            
7bc0: 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20      : false,..  
7bd0: 20 20 20 20 20 20 20 20 20 20 4d 61 74 68 20 20            Math  
7be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
7bf0: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
7c00: 20 20 20 20 4e 75 6d 62 65 72 20 20 20 20 20 20      Number      
7c10: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4f 62  ..            Ob
7c30: 6a 65 63 74 20 20 20 20 20 20 20 20 20 20 20 20  ject            
7c40: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
7c50: 20 20 20 20 20 20 20 20 70 61 72 73 65 49 6e 74          parseInt
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61              : fa
7c70: 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lse,..          
7c80: 20 20 70 61 72 73 65 46 6c 6f 61 74 20 20 20 20    parseFloat    
7c90: 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a        : false,..
7ca0: 20 20 20 20 20 20 20 20 20 20 20 20 52 61 6e 67              Rang
7cb0: 65 45 72 72 6f 72 20 20 20 20 20 20 20 20 20 20  eError          
7cc0: 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  : false,..      
7cd0: 20 20 20 20 20 20 52 65 66 65 72 65 6e 63 65 45        ReferenceE
7ce0: 72 72 6f 72 20 20 20 20 20 20 3a 20 66 61 6c 73  rror      : fals
7cf0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
7d00: 52 65 67 45 78 70 20 20 20 20 20 20 20 20 20 20  RegExp          
7d10: 20 20 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20      : false,..  
7d20: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
7d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
7d40: 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
7d50: 20 20 20 20 53 79 6e 74 61 78 45 72 72 6f 72 20      SyntaxError 
7d60: 20 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 2c          : false,
7d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79  ..            Ty
7d80: 70 65 45 72 72 6f 72 20 20 20 20 20 20 20 20 20  peError         
7d90: 20 20 3a 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20    : false,..    
7da0: 20 20 20 20 20 20 20 20 55 52 49 45 72 72 6f 72          URIError
7db0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66 61              : fa
7dc0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d  lse..        },.
7dd0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 77 69  ...        // wi
7de0: 64 65 6c 79 20 61 64 6f 70 74 65 64 20 67 6c 6f  dely adopted glo
7df0: 62 61 6c 20 6e 61 6d 65 73 20 74 68 61 74 20 61  bal names that a
7e00: 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 45  re not part of E
7e10: 43 4d 41 53 63 72 69 70 74 20 73 74 61 6e 64 61  CMAScript standa
7e20: 72 64 0d 0a 20 20 20 20 20 20 20 20 6e 6f 6e 73  rd..        nons
7e30: 74 61 6e 64 61 72 64 20 3d 20 7b 0d 0a 20 20 20  tandard = {..   
7e40: 20 20 20 20 20 20 20 20 20 65 73 63 61 70 65 20           escape 
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 66               : f
7e60: 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alse,..         
7e70: 20 20 20 75 6e 65 73 63 61 70 65 20 20 20 20 20     unescape     
7e80: 20 20 20 20 20 20 20 3a 20 66 61 6c 73 65 0d 0a         : false..
7e90: 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20          },....  
7ea0: 20 20 20 20 20 20 64 69 72 65 63 74 69 76 65 2c        directive,
7eb0: 0d 0a 20 20 20 20 20 20 20 20 73 79 6e 74 61 78  ..        syntax
7ec0: 20 3d 20 7b 7d 2c 0d 0a 20 20 20 20 20 20 20 20   = {},..        
7ed0: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 74 6f  tab,..        to
7ee0: 6b 65 6e 2c 0d 0a 20 20 20 20 20 20 20 20 75 6e  ken,..        un
7ef0: 75 73 65 64 73 2c 0d 0a 20 20 20 20 20 20 20 20  useds,..        
7f00: 75 72 6c 73 2c 0d 0a 20 20 20 20 20 20 20 20 75  urls,..        u
7f10: 73 65 45 53 4e 65 78 74 53 79 6e 74 61 78 2c 0d  seESNextSyntax,.
7f20: 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67  .        warning
7f30: 73 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 6f  s,....        wo
7f40: 72 6b 65 72 20 3d 20 7b 0d 0a 20 20 20 20 20 20  rker = {..      
7f50: 20 20 20 20 20 20 69 6d 70 6f 72 74 53 63 72 69        importScri
7f60: 70 74 73 20 20 20 20 20 20 20 3a 20 74 72 75 65  pts       : true
7f70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ,..            p
7f80: 6f 73 74 4d 65 73 73 61 67 65 20 20 20 20 20 20  ostMessage      
7f90: 20 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20     : true,..    
7fa0: 20 20 20 20 20 20 20 20 73 65 6c 66 20 20 20 20          self    
7fb0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 72              : tr
7fc0: 75 65 0d 0a 20 20 20 20 20 20 20 20 7d 2c 0d 0a  ue..        },..
7fd0: 0d 0a 20 20 20 20 20 20 20 20 77 73 68 20 3d 20  ..        wsh = 
7fe0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41  {..            A
7ff0: 63 74 69 76 65 58 4f 62 6a 65 63 74 20 20 20 20  ctiveXObject    
8000: 20 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c           : true,
8010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 6e  ..            En
8020: 75 6d 65 72 61 74 6f 72 20 20 20 20 20 20 20 20  umerator        
8030: 20 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 0d          : true,.
8040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74  .            Get
8050: 4f 62 6a 65 63 74 20 20 20 20 20 20 20 20 20 20  Object          
8060: 20 20 20 20 20 20 20 3a 20 74 72 75 65 2c 0d 0a         : true,..
8070: 20 20 20 20 20 20 20 20 20 20 20 20 53 63 72 69              Scri
8080: 70 74 45 6e 67 69 6e 65 20 20 20 20 20 20 20 20  ptEngine        
8090: 20 20 20 20 20 20 3a 20 74 72 75 65 2c 0d 0a 20        : true,.. 
80a0: 20 20 20 20 20 20 20 20 20 20 20 53 63 72 69 70             Scrip
80b0: 74 45 6e 67 69 6e 65 42 75 69 6c 64 56 65 72 73  tEngineBuildVers
80c0: 69 6f 6e 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20  ion  : true,..  
80d0: 20 20 20 20 20 20 20 20 20 20 53 63 72 69 70 74            Script
80e0: 45 6e 67 69 6e 65 4d 61 6a 6f 72 56 65 72 73 69  EngineMajorVersi
80f0: 6f 6e 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20  on  : true,..   
8100: 20 20 20 20 20 20 20 20 20 53 63 72 69 70 74 45           ScriptE
8110: 6e 67 69 6e 65 4d 69 6e 6f 72 56 65 72 73 69 6f  ngineMinorVersio
8120: 6e 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20  n  : true,..    
8130: 20 20 20 20 20 20 20 20 56 42 41 72 72 61 79 20          VBArray 
8140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8150: 20 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20    : true,..     
8160: 20 20 20 20 20 20 20 57 53 48 20 20 20 20 20 20         WSH      
8170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8180: 20 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   : true,..      
8190: 20 20 20 20 20 20 57 53 63 72 69 70 74 20 20 20        WScript   
81a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81b0: 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20  : true,..       
81c0: 20 20 20 20 20 58 44 6f 6d 61 69 6e 52 65 71 75       XDomainRequ
81d0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 3a  est            :
81e0: 20 74 72 75 65 0d 0a 20 20 20 20 20 20 20 20 7d   true..        }
81f0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 52 65 67 75  ;....    // Regu
8200: 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 2e  lar expressions.
8210: 20 53 6f 6d 65 20 6f 66 20 74 68 65 73 65 20 61   Some of these a
8220: 72 65 20 73 74 75 70 69 64 6c 79 20 6c 6f 6e 67  re stupidly long
8230: 2e 0d 0a 20 20 20 20 76 61 72 20 61 78 2c 20 63  ...    var ax, c
8240: 78 2c 20 74 78 2c 20 6e 78 2c 20 6e 78 67 2c 20  x, tx, nx, nxg, 
8250: 6c 78 2c 20 69 78 2c 20 6a 78 2c 20 66 74 3b 0d  lx, ix, jx, ft;.
8260: 0a 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 28  .    (function (
8270: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 6a  ) {..        /*j
8280: 73 68 69 6e 74 20 6d 61 78 6c 65 6e 3a 33 30 30  shint maxlen:300
8290: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   */....        /
82a0: 2f 20 75 6e 73 61 66 65 20 63 6f 6d 6d 65 6e 74  / unsafe comment
82b0: 20 6f 72 20 73 74 72 69 6e 67 0d 0a 20 20 20 20   or string..    
82c0: 20 20 20 20 61 78 20 3d 20 2f 40 63 63 7c 3c 5c      ax = /@cc|<\
82d0: 2f 3f 7c 73 63 72 69 70 74 7c 5c 5d 5c 73 2a 5c  /?|script|\]\s*\
82e0: 5d 7c 3c 5c 73 2a 21 7c 26 6c 74 2f 69 3b 0d 0a  ]|<\s*!|&lt/i;..
82f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 75 6e 73  ..        // uns
8300: 61 66 65 20 63 68 61 72 61 63 74 65 72 73 20 74  afe characters t
8310: 68 61 74 20 61 72 65 20 73 69 6c 65 6e 74 6c 79  hat are silently
8320: 20 64 65 6c 65 74 65 64 20 62 79 20 6f 6e 65 20   deleted by one 
8330: 6f 72 20 6d 6f 72 65 20 62 72 6f 77 73 65 72 73  or more browsers
8340: 0d 0a 20 20 20 20 20 20 20 20 63 78 20 3d 20 2f  ..        cx = /
8350: 5b 5c 75 30 30 30 30 2d 5c 75 30 30 31 66 5c 75  [\u0000-\u001f\u
8360: 30 30 37 66 2d 5c 75 30 30 39 66 5c 75 30 30 61  007f-\u009f\u00a
8370: 64 5c 75 30 36 30 30 2d 5c 75 30 36 30 34 5c 75  d\u0600-\u0604\u
8380: 30 37 30 66 5c 75 31 37 62 34 5c 75 31 37 62 35  070f\u17b4\u17b5
8390: 5c 75 32 30 30 63 2d 5c 75 32 30 30 66 5c 75 32  \u200c-\u200f\u2
83a0: 30 32 38 2d 5c 75 32 30 32 66 5c 75 32 30 36 30  028-\u202f\u2060
83b0: 2d 5c 75 32 30 36 66 5c 75 66 65 66 66 5c 75 66  -\u206f\ufeff\uf
83c0: 66 66 30 2d 5c 75 66 66 66 66 5d 2f 3b 0d 0a 0d  ff0-\uffff]/;...
83d0: 0a 20 20 20 20 20 20 20 20 2f 2f 20 74 6f 6b 65  .        // toke
83e0: 6e 0d 0a 20 20 20 20 20 20 20 20 74 78 20 3d 20  n..        tx = 
83f0: 2f 5e 5c 73 2a 28 5b 28 29 7b 7d 5c 5b 2e 2c 3a  /^\s*([(){}\[.,:
8400: 3b 27 22 7e 5c 3f 5c 5d 23 40 5d 7c 3d 3d 3f 3d  ;'"~\?\]#@]|==?=
8410: 3f 7c 5c 2f 28 5c 2a 28 6a 73 68 69 6e 74 7c 6a  ?|\/(\*(jshint|j
8420: 73 6c 69 6e 74 7c 6d 65 6d 62 65 72 73 3f 7c 67  slint|members?|g
8430: 6c 6f 62 61 6c 29 3f 7c 3d 7c 5c 2f 29 3f 7c 5c  lobal)?|=|\/)?|\
8440: 2a 5b 5c 2f 3d 5d 3f 7c 5c 2b 28 3f 3a 3d 7c 5c  *[\/=]?|\+(?:=|\
8450: 2b 2b 29 3f 7c 2d 28 3f 3a 3d 7c 2d 2b 29 3f 7c  ++)?|-(?:=|-+)?|
8460: 25 3d 3f 7c 26 5b 26 3d 5d 3f 7c 5c 7c 5b 7c 3d  %=?|&[&=]?|\|[|=
8470: 5d 3f 7c 3e 3e 3f 3e 3f 3d 3f 7c 3c 28 5b 5c 2f  ]?|>>?>?=?|<([\/
8480: 3d 21 5d 7c 5c 21 28 5c 5b 7c 2d 2d 29 3f 7c 3c  =!]|\!(\[|--)?|<
8490: 3d 3f 29 3f 7c 5c 5e 3d 3f 7c 5c 21 3d 3f 3d 3f  =?)?|\^=?|\!=?=?
84a0: 7c 5b 61 2d 7a 41 2d 5a d0 b0 2d d1 8f d0 90 2d  |[a-zA-Z..-....-
84b0: d0 af 5f 24 5d 5b 61 2d 7a 41 2d 5a d0 b0 2d d1  .._$][a-zA-Z..-.
84c0: 8f d0 90 2d d0 af 30 2d 39 5f 24 5d 2a 7c 5b 30  ...-..0-9_$]*|[0
84d0: 2d 39 5d 2b 28 5b 78 58 5d 5b 30 2d 39 61 2d 66  -9]+([xX][0-9a-f
84e0: 41 2d 46 5d 2b 7c 5c 2e 5b 30 2d 39 5d 2a 29 3f  A-F]+|\.[0-9]*)?
84f0: 28 5b 65 45 5d 5b 2b 5c 2d 5d 3f 5b 30 2d 39 5d  ([eE][+\-]?[0-9]
8500: 2b 29 3f 29 2f 3b 0d 0a 0d 0a 20 20 20 20 20 20  +)?)/;....      
8510: 20 20 2f 2f 20 63 68 61 72 61 63 74 65 72 73 20    // characters 
8520: 69 6e 20 73 74 72 69 6e 67 73 20 74 68 61 74 20  in strings that 
8530: 6e 65 65 64 20 65 73 63 61 70 65 6d 65 6e 74 0d  need escapement.
8540: 0a 20 20 20 20 20 20 20 20 6e 78 20 3d 20 2f 5b  .        nx = /[
8550: 5c 75 30 30 30 30 2d 5c 75 30 30 31 66 26 3c 22  \u0000-\u001f&<"
8560: 5c 2f 5c 5c 5c 75 30 30 37 66 2d 5c 75 30 30 39  \/\\\u007f-\u009
8570: 66 5c 75 30 30 61 64 5c 75 30 36 30 30 2d 5c 75  f\u00ad\u0600-\u
8580: 30 36 30 34 5c 75 30 37 30 66 5c 75 31 37 62 34  0604\u070f\u17b4
8590: 5c 75 31 37 62 35 5c 75 32 30 30 63 2d 5c 75 32  \u17b5\u200c-\u2
85a0: 30 30 66 5c 75 32 30 32 38 2d 5c 75 32 30 32 66  00f\u2028-\u202f
85b0: 5c 75 32 30 36 30 2d 5c 75 32 30 36 66 5c 75 66  \u2060-\u206f\uf
85c0: 65 66 66 5c 75 66 66 66 30 2d 5c 75 66 66 66 66  eff\ufff0-\uffff
85d0: 5d 2f 3b 0d 0a 20 20 20 20 20 20 20 20 6e 78 67  ]/;..        nxg
85e0: 20 3d 20 2f 5b 5c 75 30 30 30 30 2d 5c 75 30 30   = /[\u0000-\u00
85f0: 31 66 26 3c 22 5c 2f 5c 5c 5c 75 30 30 37 66 2d  1f&<"\/\\\u007f-
8600: 5c 75 30 30 39 66 5c 75 30 30 61 64 5c 75 30 36  \u009f\u00ad\u06
8610: 30 30 2d 5c 75 30 36 30 34 5c 75 30 37 30 66 5c  00-\u0604\u070f\
8620: 75 31 37 62 34 5c 75 31 37 62 35 5c 75 32 30 30  u17b4\u17b5\u200
8630: 63 2d 5c 75 32 30 30 66 5c 75 32 30 32 38 2d 5c  c-\u200f\u2028-\
8640: 75 32 30 32 66 5c 75 32 30 36 30 2d 5c 75 32 30  u202f\u2060-\u20
8650: 36 66 5c 75 66 65 66 66 5c 75 66 66 66 30 2d 5c  6f\ufeff\ufff0-\
8660: 75 66 66 66 66 5d 2f 67 3b 0d 0a 0d 0a 20 20 20  uffff]/g;....   
8670: 20 20 20 20 20 2f 2f 20 73 74 61 72 20 73 6c 61       // star sla
8680: 73 68 0d 0a 20 20 20 20 20 20 20 20 6c 78 20 3d  sh..        lx =
8690: 20 2f 5c 2a 5c 2f 2f 3b 0d 0a 0d 0a 20 20 20 20   /\*\//;....    
86a0: 20 20 20 20 2f 2f 20 69 64 65 6e 74 69 66 69 65      // identifie
86b0: 72 0d 0a 20 20 20 20 20 20 20 20 69 78 20 3d 20  r..        ix = 
86c0: 2f 5e 28 5b 61 2d 7a 41 2d 5a d0 b0 2d d1 8f d0  /^([a-zA-Z..-...
86d0: 90 2d d0 af 24 5d 5b 61 2d 7a 41 2d 5a d0 b0 2d  .-..$][a-zA-Z..-
86e0: d1 8f d0 90 2d d0 af 30 2d 39 5f 24 5d 2a 29 24  ....-..0-9_$]*)$
86f0: 2f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  /;....        //
8700: 20 6a 61 76 61 73 63 72 69 70 74 20 75 72 6c 0d   javascript url.
8710: 0a 20 20 20 20 20 20 20 20 6a 78 20 3d 20 2f 5e  .        jx = /^
8720: 28 3f 3a 6a 61 76 61 73 63 72 69 70 74 7c 6a 73  (?:javascript|js
8730: 63 72 69 70 74 7c 65 63 6d 61 73 63 72 69 70 74  cript|ecmascript
8740: 7c 76 62 73 63 72 69 70 74 7c 6d 6f 63 68 61 7c  |vbscript|mocha|
8750: 6c 69 76 65 73 63 72 69 70 74 29 5c 73 2a 3a 2f  livescript)\s*:/
8760: 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  i;....        //
8770: 20 63 61 74 63 68 65 73 20 2f 2a 20 66 61 6c 6c   catches /* fall
8780: 73 20 74 68 72 6f 75 67 68 20 2a 2f 20 63 6f 6d  s through */ com
8790: 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 66  ments..        f
87a0: 74 20 3d 20 2f 5e 5c 73 2a 5c 2f 5c 2a 5c 73 2a  t = /^\s*\/\*\s*
87b0: 66 61 6c 6c 73 5c 73 74 68 72 6f 75 67 68 5c 73  falls\sthrough\s
87c0: 2a 5c 2a 5c 2f 5c 73 2a 24 2f 3b 0d 0a 20 20 20  *\*\/\s*$/;..   
87d0: 20 7d 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 66 75   }());....    fu
87e0: 6e 63 74 69 6f 6e 20 46 28 29 20 7b 7d 20 20 20  nction F() {}   
87f0: 20 20 2f 2f 20 55 73 65 64 20 62 79 20 4f 62 6a    // Used by Obj
8800: 65 63 74 2e 63 72 65 61 74 65 0d 0a 0d 0a 20 20  ect.create....  
8810: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 5f 6f 77    function is_ow
8820: 6e 28 6f 62 6a 65 63 74 2c 20 6e 61 6d 65 29 20  n(object, name) 
8830: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68  {..        // Th
8840: 65 20 6f 62 6a 65 63 74 2e 68 61 73 4f 77 6e 50  e object.hasOwnP
8850: 72 6f 70 65 72 74 79 20 6d 65 74 68 6f 64 20 66  roperty method f
8860: 61 69 6c 73 20 77 68 65 6e 20 74 68 65 20 70 72  ails when the pr
8870: 6f 70 65 72 74 79 20 75 6e 64 65 72 20 63 6f 6e  operty under con
8880: 73 69 64 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20  sideration..    
8890: 20 20 20 20 2f 2f 20 69 73 20 6e 61 6d 65 64 20      // is named 
88a0: 27 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 27  'hasOwnProperty'
88b0: 2e 20 53 6f 20 77 65 20 68 61 76 65 20 74 6f 20  . So we have to 
88c0: 75 73 65 20 74 68 69 73 20 6d 6f 72 65 20 63 6f  use this more co
88d0: 6e 76 6f 6c 75 74 65 64 20 66 6f 72 6d 2e 0d 0a  nvoluted form...
88e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f          return O
88f0: 62 6a 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e  bject.prototype.
8900: 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 2e 63  hasOwnProperty.c
8910: 61 6c 6c 28 6f 62 6a 65 63 74 2c 20 6e 61 6d 65  all(object, name
8920: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
8930: 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 6b 4f   function checkO
8940: 70 74 69 6f 6e 28 6e 61 6d 65 2c 20 74 29 20 7b  ption(name, t) {
8950: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61  ..        if (va
8960: 6c 4f 70 74 69 6f 6e 73 5b 6e 61 6d 65 5d 20 3d  lOptions[name] =
8970: 3d 3d 20 75 6e 64 65 66 69 6e 65 64 20 26 26 20  == undefined && 
8980: 62 6f 6f 6c 4f 70 74 69 6f 6e 73 5b 6e 61 6d 65  boolOptions[name
8990: 5d 20 3d 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29  ] === undefined)
89a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
89b0: 77 61 72 6e 69 6e 67 28 22 42 61 64 20 6f 70 74  warning("Bad opt
89c0: 69 6f 6e 3a 20 27 22 20 2b 20 6e 61 6d 65 20 2b  ion: '" + name +
89d0: 20 22 27 2e 22 2c 20 74 29 3b 0d 0a 20 20 20 20   "'.", t);..    
89e0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
89f0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53      function isS
8a00: 74 72 69 6e 67 28 6f 62 6a 29 20 7b 0d 0a 20 20  tring(obj) {..  
8a10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f 62 6a        return Obj
8a20: 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f  ect.prototype.to
8a30: 53 74 72 69 6e 67 2e 63 61 6c 6c 28 6f 62 6a 29  String.call(obj)
8a40: 20 3d 3d 3d 20 22 5b 6f 62 6a 65 63 74 20 53 74   === "[object St
8a50: 72 69 6e 67 5d 22 3b 0d 0a 20 20 20 20 7d 0d 0a  ring]";..    }..
8a60: 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65  ..    // Provide
8a70: 20 63 72 69 74 69 63 61 6c 20 45 53 35 20 66 75   critical ES5 fu
8a80: 6e 63 74 69 6f 6e 73 20 74 6f 20 45 53 33 2e 0d  nctions to ES3..
8a90: 0a 0d 0a 20 20 20 20 69 66 20 28 74 79 70 65 6f  ...    if (typeo
8aa0: 66 20 41 72 72 61 79 2e 69 73 41 72 72 61 79 20  f Array.isArray 
8ab0: 21 3d 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29 20  !== "function") 
8ac0: 7b 0d 0a 20 20 20 20 20 20 20 20 41 72 72 61 79  {..        Array
8ad0: 2e 69 73 41 72 72 61 79 20 3d 20 66 75 6e 63 74  .isArray = funct
8ae0: 69 6f 6e 20 28 6f 29 20 7b 0d 0a 20 20 20 20 20  ion (o) {..     
8af0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f 62         return Ob
8b00: 6a 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 74  ject.prototype.t
8b10: 6f 53 74 72 69 6e 67 2e 61 70 70 6c 79 28 6f 29  oString.apply(o)
8b20: 20 3d 3d 3d 20 22 5b 6f 62 6a 65 63 74 20 41 72   === "[object Ar
8b30: 72 61 79 5d 22 3b 0d 0a 20 20 20 20 20 20 20 20  ray]";..        
8b40: 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  };..    }....   
8b50: 20 69 66 20 28 21 41 72 72 61 79 2e 70 72 6f 74   if (!Array.prot
8b60: 6f 74 79 70 65 2e 66 6f 72 45 61 63 68 29 20 7b  otype.forEach) {
8b70: 0d 0a 20 20 20 20 20 20 20 20 41 72 72 61 79 2e  ..        Array.
8b80: 70 72 6f 74 6f 74 79 70 65 2e 66 6f 72 45 61 63  prototype.forEac
8b90: 68 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 66 6e  h = function (fn
8ba0: 2c 20 73 63 6f 70 65 29 20 7b 0d 0a 20 20 20 20  , scope) {..    
8bb0: 20 20 20 20 20 20 20 20 76 61 72 20 6c 65 6e 20          var len 
8bc0: 3d 20 74 68 69 73 2e 6c 65 6e 67 74 68 3b 0d 0a  = this.length;..
8bd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
8be0: 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20  r (var i = 0; i 
8bf0: 3c 20 6c 65 6e 3b 20 69 2b 2b 29 20 7b 0d 0a 20  < len; i++) {.. 
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
8c10: 6e 2e 63 61 6c 6c 28 73 63 6f 70 65 20 7c 7c 20  n.call(scope || 
8c20: 74 68 69 73 2c 20 74 68 69 73 5b 69 5d 2c 20 69  this, this[i], i
8c30: 2c 20 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  , this);..      
8c40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8c50: 20 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   };..    }....  
8c60: 20 20 69 66 20 28 21 41 72 72 61 79 2e 70 72 6f    if (!Array.pro
8c70: 74 6f 74 79 70 65 2e 69 6e 64 65 78 4f 66 29 20  totype.indexOf) 
8c80: 7b 0d 0a 20 20 20 20 20 20 20 20 41 72 72 61 79  {..        Array
8c90: 2e 70 72 6f 74 6f 74 79 70 65 2e 69 6e 64 65 78  .prototype.index
8ca0: 4f 66 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 73  Of = function (s
8cb0: 65 61 72 63 68 45 6c 65 6d 65 6e 74 20 2f 2a 2c  earchElement /*,
8cc0: 20 66 72 6f 6d 49 6e 64 65 78 20 2a 2f 20 29 20   fromIndex */ ) 
8cd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
8ce0: 66 20 28 74 68 69 73 20 3d 3d 3d 20 6e 75 6c 6c  f (this === null
8cf0: 20 7c 7c 20 74 68 69 73 20 3d 3d 3d 20 75 6e 64   || this === und
8d00: 65 66 69 6e 65 64 29 20 7b 0d 0a 20 20 20 20 20  efined) {..     
8d10: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
8d20: 20 6e 65 77 20 54 79 70 65 45 72 72 6f 72 28 29   new TypeError()
8d30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
8d40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8d50: 76 61 72 20 74 20 3d 20 6e 65 77 20 4f 62 6a 65  var t = new Obje
8d60: 63 74 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  ct(this);..     
8d70: 20 20 20 20 20 20 20 76 61 72 20 6c 65 6e 20 3d         var len =
8d80: 20 74 2e 6c 65 6e 67 74 68 20 3e 3e 3e 20 30 3b   t.length >>> 0;
8d90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8da0: 69 66 20 28 6c 65 6e 20 3d 3d 3d 20 30 29 20 7b  if (len === 0) {
8db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8dc0: 20 20 72 65 74 75 72 6e 20 2d 31 3b 0d 0a 20 20    return -1;..  
8dd0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
8de0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e             var n
8df0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
8e00: 20 20 20 69 66 20 28 61 72 67 75 6d 65 6e 74 73     if (arguments
8e10: 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0d 0a  .length > 0) {..
8e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e30: 6e 20 3d 20 4e 75 6d 62 65 72 28 61 72 67 75 6d  n = Number(argum
8e40: 65 6e 74 73 5b 31 5d 29 3b 0d 0a 20 20 20 20 20  ents[1]);..     
8e50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
8e60: 20 21 3d 20 6e 29 20 7b 20 2f 2f 20 73 68 6f 72   != n) { // shor
8e70: 74 63 75 74 20 66 6f 72 20 76 65 72 69 66 79 69  tcut for verifyi
8e80: 6e 67 20 69 66 20 69 74 27 73 20 4e 61 4e 0d 0a  ng if it's NaN..
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ea0: 20 20 20 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20      n = 0;..    
8eb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
8ec0: 73 65 20 69 66 20 28 6e 20 21 3d 3d 20 30 20 26  se if (n !== 0 &
8ed0: 26 20 6e 20 21 3d 20 49 6e 66 69 6e 69 74 79 20  & n != Infinity 
8ee0: 26 26 20 6e 20 21 3d 20 2d 49 6e 66 69 6e 69 74  && n != -Infinit
8ef0: 79 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  y) {..          
8f00: 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 28 6e            n = (n
8f10: 20 3e 20 30 20 7c 7c 20 2d 31 29 20 2a 20 4d 61   > 0 || -1) * Ma
8f20: 74 68 2e 66 6c 6f 6f 72 28 4d 61 74 68 2e 61 62  th.floor(Math.ab
8f30: 73 28 6e 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  s(n));..        
8f40: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8f50: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8f60: 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3e 3d          if (n >=
8f70: 20 6c 65 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20   len) {..       
8f80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8f90: 2d 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  -1;..           
8fa0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
8fb0: 20 20 76 61 72 20 6b 20 3d 20 6e 20 3e 3d 20 30    var k = n >= 0
8fc0: 20 3f 20 6e 20 3a 20 4d 61 74 68 2e 6d 61 78 28   ? n : Math.max(
8fd0: 6c 65 6e 20 2d 20 4d 61 74 68 2e 61 62 73 28 6e  len - Math.abs(n
8fe0: 29 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  ), 0);..        
8ff0: 20 20 20 20 66 6f 72 20 28 3b 20 6b 20 3c 20 6c      for (; k < l
9000: 65 6e 3b 20 6b 2b 2b 29 20 7b 0d 0a 20 20 20 20  en; k++) {..    
9010: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9020: 6b 20 69 6e 20 74 20 26 26 20 74 5b 6b 5d 20 3d  k in t && t[k] =
9030: 3d 3d 20 73 65 61 72 63 68 45 6c 65 6d 65 6e 74  == searchElement
9040: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
9050: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9060: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
9070: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
9080: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9090: 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 0d 0a      return -1;..
90a0: 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20          };..    
90b0: 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 28 74 79 70  }....    if (typ
90c0: 65 6f 66 20 4f 62 6a 65 63 74 2e 63 72 65 61 74  eof Object.creat
90d0: 65 20 21 3d 3d 20 22 66 75 6e 63 74 69 6f 6e 22  e !== "function"
90e0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 4f 62 6a  ) {..        Obj
90f0: 65 63 74 2e 63 72 65 61 74 65 20 3d 20 66 75 6e  ect.create = fun
9100: 63 74 69 6f 6e 20 28 6f 29 20 7b 0d 0a 20 20 20  ction (o) {..   
9110: 20 20 20 20 20 20 20 20 20 46 2e 70 72 6f 74 6f           F.proto
9120: 74 79 70 65 20 3d 20 6f 3b 0d 0a 20 20 20 20 20  type = o;..     
9130: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
9140: 77 20 46 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  w F();..        
9150: 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  };..    }....   
9160: 20 69 66 20 28 74 79 70 65 6f 66 20 4f 62 6a 65   if (typeof Obje
9170: 63 74 2e 6b 65 79 73 20 21 3d 3d 20 22 66 75 6e  ct.keys !== "fun
9180: 63 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20  ction") {..     
9190: 20 20 20 4f 62 6a 65 63 74 2e 6b 65 79 73 20 3d     Object.keys =
91a0: 20 66 75 6e 63 74 69 6f 6e 20 28 6f 29 20 7b 0d   function (o) {.
91b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
91c0: 20 61 20 3d 20 5b 5d 2c 20 6b 3b 0d 0a 20 20 20   a = [], k;..   
91d0: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6b 20           for (k 
91e0: 69 6e 20 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20  in o) {..       
91f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f           if (is_
9200: 6f 77 6e 28 6f 2c 20 6b 29 29 20 7b 0d 0a 20 20  own(o, k)) {..  
9210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9220: 20 20 61 2e 70 75 73 68 28 6b 29 3b 0d 0a 20 20    a.push(k);..  
9230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
9250: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9260: 72 6e 20 61 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rn a;..        }
9270: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
9280: 2f 2f 20 4e 6f 6e 20 73 74 61 6e 64 61 72 64 20  // Non standard 
9290: 6d 65 74 68 6f 64 73 0d 0a 0d 0a 20 20 20 20 66  methods....    f
92a0: 75 6e 63 74 69 6f 6e 20 69 73 41 6c 70 68 61 28  unction isAlpha(
92b0: 73 74 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  str) {..        
92c0: 72 65 74 75 72 6e 20 28 73 74 72 20 3e 3d 20 22  return (str >= "
92d0: 61 22 20 26 26 20 73 74 72 20 3c 3d 20 22 7a 5c  a" && str <= "z\
92e0: 75 66 66 66 66 22 29 20 7c 7c 0d 0a 20 20 20 20  uffff") ||..    
92f0: 20 20 20 20 20 20 20 20 28 73 74 72 20 3e 3d 20          (str >= 
9300: 22 41 22 20 26 26 20 73 74 72 20 3c 3d 20 22 5a  "A" && str <= "Z
9310: 5c 75 66 66 66 66 22 29 20 7c 7c 20 0d 0a 20 20  \uffff") || ..  
9320: 20 20 20 20 20 20 20 20 20 20 28 73 74 72 20 3e            (str >
9330: 3d 20 27 d0 b0 27 20 26 26 20 73 74 72 20 3c 3d  = '..' && str <=
9340: 20 27 d1 8f 27 29 20 7c 7c 0d 0a 20 20 20 20 20   '..') ||..     
9350: 20 20 20 20 20 20 20 28 73 74 72 20 3e 3d 20 27         (str >= '
9360: d0 90 27 20 26 26 20 73 74 72 20 3c 3d 20 27 d0  ..' && str <= '.
9370: af 27 29 20 20 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  .')  ;..    }...
9380: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73  .    function is
9390: 44 69 67 69 74 28 73 74 72 29 20 7b 0d 0a 20 20  Digit(str) {..  
93a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 73 74        return (st
93b0: 72 20 3e 3d 20 22 30 22 20 26 26 20 73 74 72 20  r >= "0" && str 
93c0: 3c 3d 20 22 39 22 29 3b 0d 0a 20 20 20 20 7d 0d  <= "9");..    }.
93d0: 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  ...    function 
93e0: 73 75 70 70 6c 61 6e 74 28 73 74 72 2c 20 64 61  supplant(str, da
93f0: 74 61 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  ta) {..        r
9400: 65 74 75 72 6e 20 73 74 72 2e 72 65 70 6c 61 63  eturn str.replac
9410: 65 28 2f 5c 7b 28 5b 5e 7b 7d 5d 2a 29 5c 7d 2f  e(/\{([^{}]*)\}/
9420: 67 2c 20 66 75 6e 63 74 69 6f 6e 20 28 61 2c 20  g, function (a, 
9430: 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  b) {..          
9440: 20 20 76 61 72 20 72 20 3d 20 64 61 74 61 5b 62    var r = data[b
9450: 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
9460: 72 65 74 75 72 6e 20 74 79 70 65 6f 66 20 72 20  return typeof r 
9470: 3d 3d 3d 20 22 73 74 72 69 6e 67 22 20 7c 7c 20  === "string" || 
9480: 74 79 70 65 6f 66 20 72 20 3d 3d 3d 20 22 6e 75  typeof r === "nu
9490: 6d 62 65 72 22 20 3f 20 72 20 3a 20 61 3b 0d 0a  mber" ? r : a;..
94a0: 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20 20          });..   
94b0: 20 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69   }....    functi
94c0: 6f 6e 20 63 6f 6d 62 69 6e 65 28 74 2c 20 6f 29  on combine(t, o)
94d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20   {..        var 
94e0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20  n;..        for 
94f0: 28 6e 20 69 6e 20 6f 29 20 7b 0d 0a 20 20 20 20  (n in o) {..    
9500: 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f 6f          if (is_o
9510: 77 6e 28 6f 2c 20 6e 29 20 26 26 20 21 69 73 5f  wn(o, n) && !is_
9520: 6f 77 6e 28 4a 53 48 49 4e 54 2e 62 6c 61 63 6b  own(JSHINT.black
9530: 6c 69 73 74 2c 20 6e 29 29 20 7b 0d 0a 20 20 20  list, n)) {..   
9540: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 5b 6e               t[n
9550: 5d 20 3d 20 6f 5b 6e 5d 3b 0d 0a 20 20 20 20 20  ] = o[n];..     
9560: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9570: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
9580: 20 20 66 75 6e 63 74 69 6f 6e 20 75 70 64 61 74    function updat
9590: 65 50 72 65 64 65 66 69 6e 65 64 28 29 20 7b 0d  ePredefined() {.
95a0: 0a 20 20 20 20 20 20 20 20 4f 62 6a 65 63 74 2e  .        Object.
95b0: 6b 65 79 73 28 4a 53 48 49 4e 54 2e 62 6c 61 63  keys(JSHINT.blac
95c0: 6b 6c 69 73 74 29 2e 66 6f 72 45 61 63 68 28 66  klist).forEach(f
95d0: 75 6e 63 74 69 6f 6e 20 28 6b 65 79 29 20 7b 0d  unction (key) {.
95e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c  .            del
95f0: 65 74 65 20 70 72 65 64 65 66 69 6e 65 64 5b 6b  ete predefined[k
9600: 65 79 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 29  ey];..        })
9610: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
9620: 66 75 6e 63 74 69 6f 6e 20 61 73 73 75 6d 65 28  function assume(
9630: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ) {..        if 
9640: 28 6f 70 74 69 6f 6e 2e 63 6f 75 63 68 29 20 7b  (option.couch) {
9650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  ..            co
9660: 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64  mbine(predefined
9670: 2c 20 63 6f 75 63 68 29 3b 0d 0a 20 20 20 20 20  , couch);..     
9680: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9690: 69 66 20 28 6f 70 74 69 6f 6e 2e 72 68 69 6e 6f  if (option.rhino
96a0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
96b0: 20 63 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69   combine(predefi
96c0: 6e 65 64 2c 20 72 68 69 6e 6f 29 3b 0d 0a 20 20  ned, rhino);..  
96d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
96e0: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 72     if (option.pr
96f0: 6f 74 6f 74 79 70 65 6a 73 29 20 7b 0d 0a 20 20  ototypejs) {..  
9700: 20 20 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e            combin
9710: 65 28 70 72 65 64 65 66 69 6e 65 64 2c 20 70 72  e(predefined, pr
9720: 6f 74 6f 74 79 70 65 6a 73 29 3b 0d 0a 20 20 20  ototypejs);..   
9730: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9740: 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 6f 64    if (option.nod
9750: 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  e) {..          
9760: 20 20 63 6f 6d 62 69 6e 65 28 70 72 65 64 65 66    combine(predef
9770: 69 6e 65 64 2c 20 6e 6f 64 65 29 3b 0d 0a 20 20  ined, node);..  
9780: 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e            option
9790: 2e 67 6c 6f 62 61 6c 73 74 72 69 63 74 20 3d 20  .globalstrict = 
97a0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  true;..        }
97b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
97c0: 6f 70 74 69 6f 6e 2e 64 65 76 65 6c 29 20 7b 0d  option.devel) {.
97d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d  .            com
97e0: 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64 2c  bine(predefined,
97f0: 20 64 65 76 65 6c 29 3b 0d 0a 20 20 20 20 20 20   devel);..      
9800: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
9810: 66 20 28 6f 70 74 69 6f 6e 2e 64 6f 6a 6f 29 20  f (option.dojo) 
9820: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
9830: 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65  ombine(predefine
9840: 64 2c 20 64 6f 6a 6f 29 3b 0d 0a 20 20 20 20 20  d, dojo);..     
9850: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9860: 69 66 20 28 6f 70 74 69 6f 6e 2e 62 72 6f 77 73  if (option.brows
9870: 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  er) {..         
9880: 20 20 20 63 6f 6d 62 69 6e 65 28 70 72 65 64 65     combine(prede
9890: 66 69 6e 65 64 2c 20 62 72 6f 77 73 65 72 29 3b  fined, browser);
98a0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
98b0: 20 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f         if (optio
98c0: 6e 2e 6e 6f 6e 73 74 61 6e 64 61 72 64 29 20 7b  n.nonstandard) {
98d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  ..            co
98e0: 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64  mbine(predefined
98f0: 2c 20 6e 6f 6e 73 74 61 6e 64 61 72 64 29 3b 0d  , nonstandard);.
9900: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9910: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e        if (option
9920: 2e 6a 71 75 65 72 79 29 20 7b 0d 0a 20 20 20 20  .jquery) {..    
9930: 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28          combine(
9940: 70 72 65 64 65 66 69 6e 65 64 2c 20 6a 71 75 65  predefined, jque
9950: 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ry);..        }.
9960: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f  ...        if (o
9970: 70 74 69 6f 6e 2e 6d 6f 6f 74 6f 6f 6c 73 29 20  ption.mootools) 
9980: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
9990: 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e 65  ombine(predefine
99a0: 64 2c 20 6d 6f 6f 74 6f 6f 6c 73 29 3b 0d 0a 20  d, mootools);.. 
99b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
99c0: 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 77      if (option.w
99d0: 6f 72 6b 65 72 29 20 7b 0d 0a 20 20 20 20 20 20  orker) {..      
99e0: 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28 70 72        combine(pr
99f0: 65 64 65 66 69 6e 65 64 2c 20 77 6f 72 6b 65 72  edefined, worker
9a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
9a10: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 74  .        if (opt
9a20: 69 6f 6e 2e 77 73 68 29 20 7b 0d 0a 20 20 20 20  ion.wsh) {..    
9a30: 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28          combine(
9a40: 70 72 65 64 65 66 69 6e 65 64 2c 20 77 73 68 29  predefined, wsh)
9a50: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
9a60: 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 74 69          if (opti
9a70: 6f 6e 2e 65 73 6e 65 78 74 29 20 7b 0d 0a 20 20  on.esnext) {..  
9a80: 20 20 20 20 20 20 20 20 20 20 75 73 65 45 53 4e            useESN
9a90: 65 78 74 53 79 6e 74 61 78 28 29 3b 0d 0a 20 20  extSyntax();..  
9aa0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9ab0: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 67 6c     if (option.gl
9ac0: 6f 62 61 6c 73 74 72 69 63 74 20 26 26 20 6f 70  obalstrict && op
9ad0: 74 69 6f 6e 2e 73 74 72 69 63 74 20 21 3d 3d 20  tion.strict !== 
9ae0: 66 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20  false) {..      
9af0: 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e 73 74 72        option.str
9b00: 69 63 74 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ict = true;..   
9b10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
9b20: 0a 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 64 75 63  ...    // Produc
9b30: 65 20 61 6e 20 65 72 72 6f 72 20 77 61 72 6e 69  e an error warni
9b40: 6e 67 2e 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f  ng...    functio
9b50: 6e 20 71 75 69 74 28 6d 65 73 73 61 67 65 2c 20  n quit(message, 
9b60: 6c 69 6e 65 2c 20 63 68 72 29 20 7b 0d 0a 20 20  line, chr) {..  
9b70: 20 20 20 20 20 20 76 61 72 20 70 65 72 63 65 6e        var percen
9b80: 74 61 67 65 20 3d 20 4d 61 74 68 2e 66 6c 6f 6f  tage = Math.floo
9b90: 72 28 28 6c 69 6e 65 20 2f 20 6c 69 6e 65 73 2e  r((line / lines.
9ba0: 6c 65 6e 67 74 68 29 20 2a 20 31 30 30 29 3b 0d  length) * 100);.
9bb0: 0a 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77  ...        throw
9bc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9bd0: 6e 61 6d 65 3a 20 22 4a 53 48 69 6e 74 45 72 72  name: "JSHintErr
9be0: 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  or",..          
9bf0: 20 20 6c 69 6e 65 3a 20 6c 69 6e 65 2c 0d 0a 20    line: line,.. 
9c00: 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 61             chara
9c10: 63 74 65 72 3a 20 63 68 72 2c 0d 0a 20 20 20 20  cter: chr,..    
9c20: 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 3a          message:
9c30: 20 6d 65 73 73 61 67 65 20 2b 20 22 20 28 22 20   message + " (" 
9c40: 2b 20 70 65 72 63 65 6e 74 61 67 65 20 2b 20 22  + percentage + "
9c50: 25 20 73 63 61 6e 6e 65 64 29 2e 22 2c 0d 0a 20  % scanned).",.. 
9c60: 20 20 20 20 20 20 20 20 20 20 20 72 61 77 3a 20             raw: 
9c70: 6d 65 73 73 61 67 65 0d 0a 20 20 20 20 20 20 20  message..       
9c80: 20 7d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   };..    }....  
9c90: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 75 6e 64    function isund
9ca0: 65 66 28 73 63 6f 70 65 2c 20 6d 2c 20 74 2c 20  ef(scope, m, t, 
9cb0: 61 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65  a) {..        re
9cc0: 74 75 72 6e 20 4a 53 48 49 4e 54 2e 75 6e 64 65  turn JSHINT.unde
9cd0: 66 73 2e 70 75 73 68 28 5b 73 63 6f 70 65 2c 20  fs.push([scope, 
9ce0: 6d 2c 20 74 2c 20 61 5d 29 3b 0d 0a 20 20 20 20  m, t, a]);..    
9cf0: 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f  }....    functio
9d00: 6e 20 77 61 72 6e 69 6e 67 28 6d 2c 20 74 2c 20  n warning(m, t, 
9d10: 61 2c 20 62 2c 20 63 2c 20 64 29 20 7b 0d 0a 20  a, b, c, d) {.. 
9d20: 20 20 20 20 20 20 20 76 61 72 20 63 68 2c 20 6c         var ch, l
9d30: 2c 20 77 3b 0d 0a 20 20 20 20 20 20 20 20 74 20  , w;..        t 
9d40: 3d 20 74 20 7c 7c 20 6e 65 78 74 74 6f 6b 65 6e  = t || nexttoken
9d50: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  ;..        if (t
9d60: 2e 69 64 20 3d 3d 3d 20 22 28 65 6e 64 29 22 29  .id === "(end)")
9d70: 20 7b 20 20 2f 2f 20 60 7e 0d 0a 20 20 20 20 20   {  // `~..     
9d80: 20 20 20 20 20 20 20 74 20 3d 20 74 6f 6b 65 6e         t = token
9d90: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
9da0: 20 20 20 20 20 20 6c 20 3d 20 74 2e 6c 69 6e 65        l = t.line
9db0: 20 7c 7c 20 30 3b 0d 0a 20 20 20 20 20 20 20 20   || 0;..        
9dc0: 63 68 20 3d 20 74 2e 66 72 6f 6d 20 7c 7c 20 30  ch = t.from || 0
9dd0: 3b 0d 0a 20 20 20 20 20 20 20 20 77 20 3d 20 7b  ;..        w = {
9de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 64  ..            id
9df0: 3a 20 22 28 65 72 72 6f 72 29 22 2c 0d 0a 20 20  : "(error)",..  
9e00: 20 20 20 20 20 20 20 20 20 20 72 61 77 3a 20 6d            raw: m
9e10: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  ,..            e
9e20: 76 69 64 65 6e 63 65 3a 20 6c 69 6e 65 73 5b 6c  vidence: lines[l
9e30: 20 2d 20 31 5d 20 7c 7c 20 22 22 2c 0d 0a 20 20   - 1] || "",..  
9e40: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20            line: 
9e50: 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
9e60: 63 68 61 72 61 63 74 65 72 3a 20 63 68 2c 0d 0a  character: ch,..
9e70: 20 20 20 20 20 20 20 20 20 20 20 20 61 3a 20 61              a: a
9e80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
9e90: 3a 20 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  : b,..          
9ea0: 20 20 63 3a 20 63 2c 0d 0a 20 20 20 20 20 20 20    c: c,..       
9eb0: 20 20 20 20 20 64 3a 20 64 0d 0a 20 20 20 20 20       d: d..     
9ec0: 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 77     };..        w
9ed0: 2e 72 65 61 73 6f 6e 20 3d 20 73 75 70 70 6c 61  .reason = suppla
9ee0: 6e 74 28 6d 2c 20 77 29 3b 0d 0a 20 20 20 20 20  nt(m, w);..     
9ef0: 20 20 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73     JSHINT.errors
9f00: 2e 70 75 73 68 28 77 29 3b 0d 0a 20 20 20 20 20  .push(w);..     
9f10: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 61     if (option.pa
9f20: 73 73 66 61 69 6c 29 20 7b 0d 0a 20 20 20 20 20  ssfail) {..     
9f30: 20 20 20 20 20 20 20 71 75 69 74 28 22 53 74 6f         quit("Sto
9f40: 70 70 69 6e 67 2e 20 22 2c 20 6c 2c 20 63 68 29  pping. ", l, ch)
9f50: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
9f60: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 20 2b        warnings +
9f70: 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  = 1;..        if
9f80: 20 28 77 61 72 6e 69 6e 67 73 20 3e 3d 20 6f 70   (warnings >= op
9f90: 74 69 6f 6e 2e 6d 61 78 65 72 72 29 20 7b 0d 0a  tion.maxerr) {..
9fa0: 20 20 20 20 20 20 20 20 20 20 20 20 71 75 69 74              quit
9fb0: 28 22 54 6f 6f 20 6d 61 6e 79 20 65 72 72 6f 72  ("Too many error
9fc0: 73 2e 22 2c 20 6c 2c 20 63 68 29 3b 0d 0a 20 20  s.", l, ch);..  
9fd0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9fe0: 20 72 65 74 75 72 6e 20 77 3b 0d 0a 20 20 20 20   return w;..    
9ff0: 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f  }....    functio
a000: 6e 20 77 61 72 6e 69 6e 67 41 74 28 6d 2c 20 6c  n warningAt(m, l
a010: 2c 20 63 68 2c 20 61 2c 20 62 2c 20 63 2c 20 64  , ch, a, b, c, d
a020: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ) {..        ret
a030: 75 72 6e 20 77 61 72 6e 69 6e 67 28 6d 2c 20 7b  urn warning(m, {
a040: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69  ..            li
a050: 6e 65 3a 20 6c 2c 0d 0a 20 20 20 20 20 20 20 20  ne: l,..        
a060: 20 20 20 20 66 72 6f 6d 3a 20 63 68 0d 0a 20 20      from: ch..  
a070: 20 20 20 20 20 20 7d 2c 20 61 2c 20 62 2c 20 63        }, a, b, c
a080: 2c 20 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  , d);..    }....
a090: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 65 72 72      function err
a0a0: 6f 72 28 6d 2c 20 74 2c 20 61 2c 20 62 2c 20 63  or(m, t, a, b, c
a0b0: 2c 20 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  , d) {..        
a0c0: 77 61 72 6e 69 6e 67 28 6d 2c 20 74 2c 20 61 2c  warning(m, t, a,
a0d0: 20 62 2c 20 63 2c 20 64 29 3b 0d 0a 20 20 20 20   b, c, d);..    
a0e0: 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f  }....    functio
a0f0: 6e 20 65 72 72 6f 72 41 74 28 6d 2c 20 6c 2c 20  n errorAt(m, l, 
a100: 63 68 2c 20 61 2c 20 62 2c 20 63 2c 20 64 29 20  ch, a, b, c, d) 
a110: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
a120: 6e 20 65 72 72 6f 72 28 6d 2c 20 7b 0d 0a 20 20  n error(m, {..  
a130: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 3a 20            line: 
a140: 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
a150: 66 72 6f 6d 3a 20 63 68 0d 0a 20 20 20 20 20 20  from: ch..      
a160: 20 20 7d 2c 20 61 2c 20 62 2c 20 63 2c 20 64 29    }, a, b, c, d)
a170: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 0d 0a  ;..    }........
a180: 2f 2f 20 6c 65 78 69 63 61 6c 20 61 6e 61 6c 79  // lexical analy
a190: 73 69 73 20 61 6e 64 20 74 6f 6b 65 6e 20 63 6f  sis and token co
a1a0: 6e 73 74 72 75 63 74 69 6f 6e 0d 0a 0d 0a 20 20  nstruction....  
a1b0: 20 20 76 61 72 20 6c 65 78 20 3d 20 28 66 75 6e    var lex = (fun
a1c0: 63 74 69 6f 6e 20 6c 65 78 28 29 20 7b 0d 0a 20  ction lex() {.. 
a1d0: 20 20 20 20 20 20 20 76 61 72 20 63 68 61 72 61         var chara
a1e0: 63 74 65 72 2c 20 66 72 6f 6d 2c 20 6c 69 6e 65  cter, from, line
a1f0: 2c 20 73 3b 0d 0a 0d 0a 2f 2f 20 50 72 69 76 61  , s;....// Priva
a200: 74 65 20 6c 65 78 20 6d 65 74 68 6f 64 73 0d 0a  te lex methods..
a210: 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 69  ..        functi
a220: 6f 6e 20 6e 65 78 74 4c 69 6e 65 28 29 20 7b 0d  on nextLine() {.
a230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
a240: 20 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20   at,..          
a250: 20 20 20 20 20 20 74 77 3b 20 2f 2f 20 74 72 61        tw; // tra
a260: 69 6c 69 6e 67 20 77 68 69 74 65 73 70 61 63 65  iling whitespace
a270: 20 63 68 65 63 6b 0d 0a 0d 0a 20 20 20 20 20 20   check....      
a280: 20 20 20 20 20 20 69 66 20 28 6c 69 6e 65 20 3e        if (line >
a290: 3d 20 6c 69 6e 65 73 2e 6c 65 6e 67 74 68 29 0d  = lines.length).
a2a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a2b0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
a2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 68  ..            ch
a2d0: 61 72 61 63 74 65 72 20 3d 20 31 3b 0d 0a 20 20  aracter = 1;..  
a2e0: 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 6c 69            s = li
a2f0: 6e 65 73 5b 6c 69 6e 65 5d 3b 0d 0a 20 20 20 20  nes[line];..    
a300: 20 20 20 20 20 20 20 20 6c 69 6e 65 20 2b 3d 20          line += 
a310: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  1;....          
a320: 20 20 2f 2f 20 49 66 20 73 6d 61 72 74 74 61 62    // If smarttab
a330: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
a340: 20 63 68 65 63 6b 20 66 6f 72 20 73 70 61 63 65   check for space
a350: 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 61  s followed by ta
a360: 62 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  bs only...      
a370: 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 72 77 69        // Otherwi
a380: 73 65 20 63 68 65 63 6b 20 66 6f 72 20 61 6e 79  se check for any
a390: 20 6f 63 63 75 72 65 6e 63 65 20 6f 66 20 6d 69   occurence of mi
a3a0: 78 65 64 20 74 61 62 73 20 61 6e 64 20 73 70 61  xed tabs and spa
a3b0: 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ces...          
a3c0: 20 20 2f 2f 20 54 61 62 73 20 61 6e 64 20 6f 6e    // Tabs and on
a3d0: 65 20 73 70 61 63 65 20 66 6f 6c 6c 6f 77 65 64  e space followed
a3e0: 20 62 79 20 62 6c 6f 63 6b 20 63 6f 6d 6d 65 6e   by block commen
a3f0: 74 20 69 73 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20  t is allowed... 
a400: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
a410: 70 74 69 6f 6e 2e 73 6d 61 72 74 74 61 62 73 29  ption.smarttabs)
a420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a430: 20 20 61 74 20 3d 20 73 2e 73 65 61 72 63 68 28    at = s.search(
a440: 2f 20 5c 74 2f 29 3b 0d 0a 20 20 20 20 20 20 20  / \t/);..       
a450: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
a460: 20 20 20 20 20 20 20 20 20 20 20 61 74 20 3d 20             at = 
a470: 73 2e 73 65 61 72 63 68 28 2f 20 5c 74 7c 5c 74  s.search(/ \t|\t
a480: 20 5b 5e 5c 2a 5d 2f 29 3b 0d 0a 0d 0a 20 20 20   [^\*]/);....   
a490: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 74 20           if (at 
a4a0: 3e 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  >= 0)..         
a4b0: 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74         warningAt
a4c0: 28 22 4d 69 78 65 64 20 73 70 61 63 65 73 20 61  ("Mixed spaces a
a4d0: 6e 64 20 74 61 62 73 2e 22 2c 20 6c 69 6e 65 2c  nd tabs.", line,
a4e0: 20 61 74 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20   at + 1);....   
a4f0: 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e 72           s = s.r
a500: 65 70 6c 61 63 65 28 2f 5c 74 2f 67 2c 20 74 61  eplace(/\t/g, ta
a510: 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
a520: 20 61 74 20 3d 20 73 2e 73 65 61 72 63 68 28 63   at = s.search(c
a530: 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
a540: 20 20 20 69 66 20 28 61 74 20 3e 3d 20 30 29 0d     if (at >= 0).
a550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a560: 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 73 61   warningAt("Unsa
a570: 66 65 20 63 68 61 72 61 63 74 65 72 2e 22 2c 20  fe character.", 
a580: 6c 69 6e 65 2c 20 61 74 29 3b 0d 0a 0d 0a 20 20  line, at);....  
a590: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
a5a0: 74 69 6f 6e 2e 6d 61 78 6c 65 6e 20 26 26 20 6f  tion.maxlen && o
a5b0: 70 74 69 6f 6e 2e 6d 61 78 6c 65 6e 20 3c 20 73  ption.maxlen < s
a5c0: 2e 6c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20  .length)..      
a5d0: 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
a5e0: 67 41 74 28 22 4c 69 6e 65 20 74 6f 6f 20 6c 6f  gAt("Line too lo
a5f0: 6e 67 2e 22 2c 20 6c 69 6e 65 2c 20 73 2e 6c 65  ng.", line, s.le
a600: 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth);....      
a610: 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 66        // Check f
a620: 6f 72 20 74 72 61 69 6c 69 6e 67 20 77 68 69 74  or trailing whit
a630: 65 73 70 61 63 65 73 0d 0a 20 20 20 20 20 20 20  espaces..       
a640: 20 20 20 20 20 74 77 20 3d 20 6f 70 74 69 6f 6e       tw = option
a650: 2e 74 72 61 69 6c 69 6e 67 20 26 26 20 73 2e 6d  .trailing && s.m
a660: 61 74 63 68 28 2f 5e 28 2e 2a 3f 29 5c 73 2b 24  atch(/^(.*?)\s+$
a670: 2f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /);..           
a680: 20 69 66 20 28 74 77 20 26 26 20 21 2f 5e 5c 73   if (tw && !/^\s
a690: 2b 24 2f 2e 74 65 73 74 28 73 29 29 20 7b 0d 0a  +$/.test(s)) {..
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6b0: 77 61 72 6e 69 6e 67 41 74 28 22 54 72 61 69 6c  warningAt("Trail
a6c0: 69 6e 67 20 77 68 69 74 65 73 70 61 63 65 2e 22  ing whitespace."
a6d0: 2c 20 6c 69 6e 65 2c 20 74 77 5b 31 5d 2e 6c 65  , line, tw[1].le
a6e0: 6e 67 74 68 20 2b 20 31 29 3b 0d 0a 20 20 20 20  ngth + 1);..    
a6f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
a700: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
a710: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
a720: 0d 0a 2f 2f 20 50 72 6f 64 75 63 65 20 61 20 74  ..// Produce a t
a730: 6f 6b 65 6e 20 6f 62 6a 65 63 74 2e 20 20 54 68  oken object.  Th
a740: 65 20 74 6f 6b 65 6e 20 69 6e 68 65 72 69 74 73  e token inherits
a750: 20 66 72 6f 6d 20 61 20 73 79 6e 74 61 78 20 73   from a syntax s
a760: 79 6d 62 6f 6c 2e 0d 0a 0d 0a 20 20 20 20 20 20  ymbol.....      
a770: 20 20 66 75 6e 63 74 69 6f 6e 20 69 74 28 74 79    function it(ty
a780: 70 65 2c 20 76 61 6c 75 65 29 20 7b 0d 0a 20 20  pe, value) {..  
a790: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 2c            var i,
a7a0: 20 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   t;....         
a7b0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63     function chec
a7c0: 6b 4e 61 6d 65 28 6e 61 6d 65 29 20 7b 0d 0a 20  kName(name) {.. 
a7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a7e0: 66 20 28 21 6f 70 74 69 6f 6e 2e 70 72 6f 74 6f  f (!option.proto
a7f0: 20 26 26 20 6e 61 6d 65 20 3d 3d 3d 20 22 5f 5f   && name === "__
a800: 70 72 6f 74 6f 5f 5f 22 29 20 7b 0d 0a 20 20 20  proto__") {..   
a810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a820: 20 77 61 72 6e 69 6e 67 41 74 28 22 54 68 65 20   warningAt("The 
a830: 27 7b 61 7d 27 20 70 72 6f 70 65 72 74 79 20 69  '{a}' property i
a840: 73 20 64 65 70 72 65 63 61 74 65 64 2e 22 2c 20  s deprecated.", 
a850: 6c 69 6e 65 2c 20 66 72 6f 6d 2c 20 6e 61 6d 65  line, from, name
a860: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a870: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
a880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a890: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
a8a0: 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f        if (!optio
a8b0: 6e 2e 69 74 65 72 61 74 6f 72 20 26 26 20 6e 61  n.iterator && na
a8c0: 6d 65 20 3d 3d 3d 20 22 5f 5f 69 74 65 72 61 74  me === "__iterat
a8d0: 6f 72 5f 5f 22 29 20 7b 0d 0a 20 20 20 20 20 20  or__") {..      
a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
a8f0: 72 6e 69 6e 67 41 74 28 22 27 7b 61 7d 27 20 69  rningAt("'{a}' i
a900: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
a910: 20 69 6e 20 4a 61 76 61 53 63 72 69 70 74 20 31   in JavaScript 1
a920: 2e 37 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d  .7.", line, from
a930: 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  , name);..      
a940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a950: 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  turn;..         
a960: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
a970: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
a980: 68 65 63 6b 20 66 6f 72 20 64 61 6e 67 6c 69 6e  heck for danglin
a990: 67 20 75 6e 64 65 72 73 63 6f 72 65 73 20 75 6e  g underscores un
a9a0: 6c 65 73 73 20 77 65 27 72 65 20 69 6e 20 4e 6f  less we're in No
a9b0: 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  de..            
a9c0: 20 20 20 20 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65      // environme
a9d0: 6e 74 20 61 6e 64 20 74 68 69 73 20 69 64 65 6e  nt and this iden
a9e0: 74 69 66 69 65 72 20 72 65 70 72 65 73 65 6e 74  tifier represent
a9f0: 73 20 62 75 69 6c 74 2d 69 6e 0d 0a 20 20 20 20  s built-in..    
aa00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
aa10: 6f 64 65 20 67 6c 6f 62 61 6c 73 20 77 69 74 68  ode globals with
aa20: 20 75 6e 64 65 72 73 63 6f 72 65 73 2e 0d 0a 0d   underscores....
aa30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa40: 20 76 61 72 20 68 61 73 44 61 6e 67 6c 69 6e 67   var hasDangling
aa50: 20 3d 20 2f 5e 28 5f 2b 2e 2a 7c 2e 2a 5f 2b 29   = /^(_+.*|.*_+)
aa60: 24 2f 2e 74 65 73 74 28 6e 61 6d 65 29 3b 0d 0a  $/.test(name);..
aa70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa80: 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 6f 6d    if (option.nom
aa90: 65 6e 20 26 26 20 68 61 73 44 61 6e 67 6c 69 6e  en && hasDanglin
aaa0: 67 20 26 26 20 6e 61 6d 65 20 21 3d 3d 20 22 5f  g && name !== "_
aab0: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
aac0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
aad0: 74 69 6f 6e 2e 6e 6f 64 65 20 26 26 20 74 6f 6b  tion.node && tok
aae0: 65 6e 2e 69 64 20 21 3d 3d 20 22 2e 22 20 26 26  en.id !== "." &&
aaf0: 20 2f 5e 28 5f 5f 64 69 72 6e 61 6d 65 7c 5f 5f   /^(__dirname|__
ab00: 66 69 6c 65 6e 61 6d 65 29 24 2f 2e 74 65 73 74  filename)$/.test
ab10: 28 6e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  (name))..       
ab20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab30: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab50: 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 78 70  warningAt("Unexp
ab60: 65 63 74 65 64 20 7b 61 7d 20 69 6e 20 27 7b 62  ected {a} in '{b
ab70: 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d  }'.", line, from
ab80: 2c 20 22 64 61 6e 67 6c 69 6e 67 20 27 5f 27 22  , "dangling '_'"
ab90: 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  , name);..      
aba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
abb0: 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  turn;..         
abc0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
abd0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
abe0: 68 65 63 6b 20 66 6f 72 20 6e 6f 6e 2d 63 61 6d  heck for non-cam
abf0: 65 6c 63 61 73 65 20 6e 61 6d 65 73 2e 20 4e 61  elcase names. Na
ac00: 6d 65 73 20 6c 69 6b 65 20 4d 59 5f 56 41 52 20  mes like MY_VAR 
ac10: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
ac20: 20 20 20 20 20 2f 2f 20 5f 6d 79 56 61 72 20 61       // _myVar a
ac30: 72 65 20 6f 6b 61 79 20 74 68 6f 75 67 68 2e 0d  re okay though..
ac40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ac50: 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 63 61     if (option.ca
ac60: 6d 65 6c 63 61 73 65 29 20 7b 0d 0a 20 20 20 20  melcase) {..    
ac70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac80: 69 66 20 28 6e 61 6d 65 2e 72 65 70 6c 61 63 65  if (name.replace
ac90: 28 2f 5e 5f 2b 2f 2c 20 22 22 29 2e 69 6e 64 65  (/^_+/, "").inde
aca0: 78 4f 66 28 22 5f 22 29 20 3e 20 2d 31 20 26 26  xOf("_") > -1 &&
acb0: 20 21 6e 61 6d 65 2e 6d 61 74 63 68 28 2f 5e 5b   !name.match(/^[
acc0: 41 2d 5a 30 2d 39 5f d0 90 2d d0 af 5d 2a 24 2f  A-Z0-9_..-..]*$/
acd0: 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  )) {..          
ace0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
acf0: 72 6e 69 6e 67 41 74 28 22 49 64 65 6e 74 69 66  rningAt("Identif
ad00: 69 65 72 20 27 7b 61 7d 27 20 69 73 20 6e 6f 74  ier '{a}' is not
ad10: 20 69 6e 20 63 61 6d 65 6c 20 63 61 73 65 2e 22   in camel case."
ad20: 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 2c 20 76 61  , line, from, va
ad30: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
ad40: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
ad50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ad60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ad70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
ad80: 20 28 74 79 70 65 20 3d 3d 3d 20 22 28 63 6f 6c   (type === "(col
ad90: 6f 72 29 22 20 7c 7c 20 74 79 70 65 20 3d 3d 3d  or)" || type ===
ada0: 20 22 28 72 61 6e 67 65 29 22 29 20 7b 0d 0a 20   "(range)") {.. 
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
adc0: 20 3d 20 7b 74 79 70 65 3a 20 74 79 70 65 7d 3b   = {type: type};
add0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
ade0: 65 6c 73 65 20 69 66 20 28 74 79 70 65 20 3d 3d  else if (type ==
adf0: 3d 20 22 28 70 75 6e 63 74 75 61 74 6f 72 29 22  = "(punctuator)"
ae00: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
ae10: 20 20 20 20 20 20 20 20 20 28 74 79 70 65 20 3d           (type =
ae20: 3d 3d 20 22 28 69 64 65 6e 74 69 66 69 65 72 29  == "(identifier)
ae30: 22 20 26 26 20 69 73 5f 6f 77 6e 28 73 79 6e 74  " && is_own(synt
ae40: 61 78 2c 20 76 61 6c 75 65 29 29 29 20 7b 0d 0a  ax, value))) {..
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae60: 74 20 3d 20 73 79 6e 74 61 78 5b 76 61 6c 75 65  t = syntax[value
ae70: 5d 20 7c 7c 20 73 79 6e 74 61 78 5b 22 28 65 72  ] || syntax["(er
ae80: 72 6f 72 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20  ror)"];..       
ae90: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
aeb0: 20 3d 20 73 79 6e 74 61 78 5b 74 79 70 65 5d 3b   = syntax[type];
aec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
aed0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
aee0: 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65   = Object.create
aef0: 28 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  (t);....        
af00: 20 20 20 20 69 66 20 28 74 79 70 65 20 3d 3d 3d      if (type ===
af10: 20 22 28 73 74 72 69 6e 67 29 22 20 7c 7c 20 74   "(string)" || t
af20: 79 70 65 20 3d 3d 3d 20 22 28 72 61 6e 67 65 29  ype === "(range)
af30: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
af40: 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f        if (!optio
af50: 6e 2e 73 63 72 69 70 74 75 72 6c 20 26 26 20 6a  n.scripturl && j
af60: 78 2e 74 65 73 74 28 76 61 6c 75 65 29 29 20 7b  x.test(value)) {
af70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
af80: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28        warningAt(
af90: 22 53 63 72 69 70 74 20 55 52 4c 2e 22 2c 20 6c  "Script URL.", l
afa0: 69 6e 65 2c 20 66 72 6f 6d 29 3b 0d 0a 20 20 20  ine, from);..   
afb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
afc0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
afd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
afe0: 28 74 79 70 65 20 3d 3d 3d 20 22 28 69 64 65 6e  (type === "(iden
aff0: 74 69 66 69 65 72 29 22 29 20 7b 0d 0a 20 20 20  tifier)") {..   
b000: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 2e 69               t.i
b010: 64 65 6e 74 69 66 69 65 72 20 3d 20 74 72 75 65  dentifier = true
b020: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
b030: 20 20 20 63 68 65 63 6b 4e 61 6d 65 28 76 61 6c     checkName(val
b040: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
b050: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
b060: 20 20 20 74 2e 76 61 6c 75 65 20 3d 20 76 61 6c     t.value = val
b070: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
b080: 20 74 2e 6c 69 6e 65 20 3d 20 6c 69 6e 65 3b 0d   t.line = line;.
b090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 2e 63  .            t.c
b0a0: 68 61 72 61 63 74 65 72 20 3d 20 63 68 61 72 61  haracter = chara
b0b0: 63 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  cter;..         
b0c0: 20 20 20 74 2e 66 72 6f 6d 20 3d 20 66 72 6f 6d     t.from = from
b0d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ;..            i
b0e0: 20 3d 20 74 2e 69 64 3b 0d 0a 20 20 20 20 20 20   = t.id;..      
b0f0: 20 20 20 20 20 20 69 66 20 28 69 20 21 3d 3d 20        if (i !== 
b100: 22 28 65 6e 64 6c 69 6e 65 29 22 29 20 7b 0d 0a  "(endline)") {..
b110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b120: 70 72 65 72 65 67 20 3d 20 69 20 26 26 0d 0a 20  prereg = i &&.. 
b130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b140: 20 20 20 28 28 22 28 2c 3d 3a 5b 21 26 7c 3f 7b     (("(,=:[!&|?{
b150: 7d 3b 22 2e 69 6e 64 65 78 4f 66 28 69 2e 63 68  };".indexOf(i.ch
b160: 61 72 41 74 28 69 2e 6c 65 6e 67 74 68 20 2d 20  arAt(i.length - 
b170: 31 29 29 20 3e 3d 20 30 29 20 7c 7c 0d 0a 20 20  1)) >= 0) ||..  
b180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b190: 20 20 69 20 3d 3d 3d 20 22 72 65 74 75 72 6e 22    i === "return"
b1a0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
b1b0: 20 20 20 20 20 20 20 20 20 69 20 3d 3d 3d 20 22           i === "
b1c0: 63 61 73 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  case");..       
b1d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b1e0: 20 20 20 20 72 65 74 75 72 6e 20 74 3b 0d 0a 20      return t;.. 
b1f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b200: 20 20 20 20 2f 2f 20 50 75 62 6c 69 63 20 6c 65      // Public le
b210: 78 20 6d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  x methods..     
b220: 20 20 20 72 65 74 75 72 6e 20 7b 0d 0a 20 20 20     return {..   
b230: 20 20 20 20 20 20 20 20 20 69 6e 69 74 3a 20 66           init: f
b240: 75 6e 63 74 69 6f 6e 20 28 73 6f 75 72 63 65 29  unction (source)
b250: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b260: 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 73      if (typeof s
b270: 6f 75 72 63 65 20 3d 3d 3d 20 22 73 74 72 69 6e  ource === "strin
b280: 67 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  g") {..         
b290: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 73             lines
b2a0: 20 3d 20 73 6f 75 72 63 65 0d 0a 20 20 20 20 20   = source..     
b2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b2c0: 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 72 5c     .replace(/\r\
b2d0: 6e 2f 67 2c 20 22 5c 6e 22 29 0d 0a 20 20 20 20  n/g, "\n")..    
b2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b2f0: 20 20 20 20 2e 72 65 70 6c 61 63 65 28 2f 5c 72      .replace(/\r
b300: 2f 67 2c 20 22 5c 6e 22 29 0d 0a 20 20 20 20 20  /g, "\n")..     
b310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b320: 20 20 20 2e 73 70 6c 69 74 28 22 5c 6e 22 29 3b     .split("\n");
b330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b340: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
b350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b360: 6c 69 6e 65 73 20 3d 20 73 6f 75 72 63 65 3b 0d  lines = source;.
b370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b380: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
b390: 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20        // If the 
b3a0: 66 69 72 73 74 20 6c 69 6e 65 20 69 73 20 61 20  first line is a 
b3b0: 73 68 65 62 61 6e 67 20 28 23 21 29 2c 20 6d 61  shebang (#!), ma
b3c0: 6b 65 20 69 74 20 61 20 62 6c 61 6e 6b 20 61 6e  ke it a blank an
b3d0: 64 20 6d 6f 76 65 20 6f 6e 2e 0d 0a 20 20 20 20  d move on...    
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
b3f0: 68 65 62 61 6e 67 73 20 61 72 65 20 75 73 65 64  hebangs are used
b400: 20 62 79 20 4e 6f 64 65 20 73 63 72 69 70 74 73   by Node scripts
b410: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b420: 20 20 20 69 66 20 28 6c 69 6e 65 73 5b 30 5d 20     if (lines[0] 
b430: 26 26 20 6c 69 6e 65 73 5b 30 5d 2e 73 75 62 73  && lines[0].subs
b440: 74 72 28 30 2c 20 32 29 20 3d 3d 3d 20 22 23 21  tr(0, 2) === "#!
b450: 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")..            
b460: 20 20 20 20 20 20 20 20 6c 69 6e 65 73 5b 30 5d          lines[0]
b470: 20 3d 20 22 22 3b 0d 0a 0d 0a 20 20 20 20 20 20   = "";....      
b480: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d            line =
b490: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
b4a0: 20 20 20 20 20 6e 65 78 74 4c 69 6e 65 28 29 3b       nextLine();
b4b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b4c0: 20 20 66 72 6f 6d 20 3d 20 31 3b 0d 0a 20 20 20    from = 1;..   
b4d0: 20 20 20 20 20 20 20 20 20 7d 2c 0d 0a 0d 0a 20           },.... 
b4e0: 20 20 20 20 20 20 20 20 20 20 20 72 61 6e 67 65             range
b4f0: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 62 65 67 69  : function (begi
b500: 6e 2c 20 65 6e 64 29 20 7b 0d 0a 20 20 20 20 20  n, end) {..     
b510: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63             var c
b520: 2c 20 76 61 6c 75 65 20 3d 20 22 22 3b 0d 0a 20  , value = "";.. 
b530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
b540: 72 6f 6d 20 3d 20 63 68 61 72 61 63 74 65 72 3b  rom = character;
b550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b560: 20 20 69 66 20 28 73 2e 63 68 61 72 41 74 28 30    if (s.charAt(0
b570: 29 20 21 3d 3d 20 62 65 67 69 6e 29 20 7b 0d 0a  ) !== begin) {..
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b590: 20 20 20 20 65 72 72 6f 72 41 74 28 22 45 78 70      errorAt("Exp
b5a0: 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20  ected '{a}' and 
b5b0: 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d  instead saw '{b}
b5c0: 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  '.",..          
b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b5e0: 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65    line, characte
b5f0: 72 2c 20 62 65 67 69 6e 2c 20 73 2e 63 68 61 72  r, begin, s.char
b600: 41 74 28 30 29 29 3b 0d 0a 20 20 20 20 20 20 20  At(0));..       
b610: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
b620: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
b630: 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  (;;) {..        
b640: 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d 20              s = 
b650: 73 2e 73 6c 69 63 65 28 31 29 3b 0d 0a 20 20 20  s.slice(1);..   
b660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b670: 20 63 68 61 72 61 63 74 65 72 20 2b 3d 20 31 3b   character += 1;
b680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b690: 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72        c = s.char
b6a0: 41 74 28 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  At(0);..        
b6b0: 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74              swit
b6c0: 63 68 20 28 63 29 20 7b 0d 0a 20 20 20 20 20 20  ch (c) {..      
b6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
b6e0: 73 65 20 22 22 3a 0d 0a 20 20 20 20 20 20 20 20  se "":..        
b6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b700: 65 72 72 6f 72 41 74 28 22 4d 69 73 73 69 6e 67  errorAt("Missing
b710: 20 27 7b 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20   '{a}'.", line, 
b720: 63 68 61 72 61 63 74 65 72 2c 20 63 29 3b 0d 0a  character, c);..
b730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b740: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
b750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b760: 20 20 20 20 63 61 73 65 20 65 6e 64 3a 0d 0a 20      case end:.. 
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 73 6c 69         s = s.sli
b790: 63 65 28 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  ce(1);..        
b7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7b0: 63 68 61 72 61 63 74 65 72 20 2b 3d 20 31 3b 0d  character += 1;.
b7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b7d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b7e0: 69 74 28 22 28 72 61 6e 67 65 29 22 2c 20 76 61  it("(range)", va
b7f0: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
b800: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
b810: 22 5c 5c 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  "\\":..         
b820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
b830: 61 72 6e 69 6e 67 41 74 28 22 28 31 29 55 6e 65  arningAt("(1)Une
b840: 78 70 65 63 74 65 64 20 27 7b 61 7d 27 2e 22 2c  xpected '{a}'.",
b850: 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72   line, character
b860: 2c 20 63 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , c);..         
b870: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
b880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b890: 20 20 76 61 6c 75 65 20 2b 3d 20 63 3b 0d 0a 20    value += c;.. 
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
b8b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b8c0: 7d 2c 0d 0a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  },......        
b8d0: 20 20 20 20 2f 2f 20 74 6f 6b 65 6e 20 2d 2d 20      // token -- 
b8e0: 74 68 69 73 20 69 73 20 63 61 6c 6c 65 64 20 62  this is called b
b8f0: 79 20 61 64 76 61 6e 63 65 20 74 6f 20 67 65 74  y advance to get
b900: 20 74 68 65 20 6e 65 78 74 20 74 6f 6b 65 6e 0d   the next token.
b910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b  .            tok
b920: 65 6e 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  en: function () 
b930: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b940: 20 20 20 76 61 72 20 62 2c 20 63 2c 20 63 61 70     var b, c, cap
b950: 74 75 72 65 73 2c 20 64 2c 20 64 65 70 74 68 2c  tures, d, depth,
b960: 20 68 69 67 68 2c 20 69 2c 20 6c 2c 20 6c 6f 77   high, i, l, low
b970: 2c 20 71 2c 20 74 2c 20 69 73 4c 69 74 65 72 61  , q, t, isLitera
b980: 6c 2c 20 69 73 49 6e 52 61 6e 67 65 2c 20 6e 3b  l, isInRange, n;
b990: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b9a0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6d 61 74      function mat
b9b0: 63 68 28 78 29 20 7b 0d 0a 20 20 20 20 20 20 20  ch(x) {..       
b9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72               var
b9d0: 20 72 20 3d 20 78 2e 65 78 65 63 28 73 29 2c 20   r = x.exec(s), 
b9e0: 72 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r1;..           
b9f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 29 20           if (r) 
ba00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ba10: 20 20 20 20 20 20 20 20 20 20 20 6c 20 3d 20 72             l = r
ba20: 5b 30 5d 2e 6c 65 6e 67 74 68 3b 0d 0a 20 20 20  [0].length;..   
ba30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba40: 20 20 20 20 20 72 31 20 3d 20 72 5b 31 5d 3b 0d       r1 = r[1];.
ba50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ba60: 20 20 20 20 20 20 20 20 20 63 20 3d 20 72 31 2e           c = r1.
ba70: 63 68 61 72 41 74 28 30 29 3b 0d 0a 20 20 20 20  charAt(0);..    
ba80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba90: 20 20 20 20 73 20 3d 20 73 2e 73 75 62 73 74 72      s = s.substr
baa0: 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (l);..          
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72                fr
bac0: 6f 6d 20 3d 20 63 68 61 72 61 63 74 65 72 20 2b  om = character +
bad0: 20 6c 20 2d 20 72 31 2e 6c 65 6e 67 74 68 3b 0d   l - r1.length;.
bae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
baf0: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74           charact
bb00: 65 72 20 2b 3d 20 6c 3b 0d 0a 20 20 20 20 20 20  er += l;..      
bb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb20: 20 20 72 65 74 75 72 6e 20 72 31 3b 0d 0a 20 20    return r1;..  
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
bb50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bb60: 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69            functi
bb70: 6f 6e 20 73 74 72 69 6e 67 28 78 29 20 7b 0d 0a  on string(x) {..
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb90: 20 20 20 20 76 61 72 20 63 2c 20 6a 2c 20 72 20      var c, j, r 
bba0: 3d 20 22 22 2c 20 61 6c 6c 6f 77 4e 65 77 4c 69  = "", allowNewLi
bbb0: 6e 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  ne = false;.... 
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbd0: 20 20 20 69 66 20 28 6a 73 6f 6e 6d 6f 64 65 20     if (jsonmode 
bbe0: 26 26 20 78 20 21 3d 3d 20 22 5c 22 22 29 20 7b  && x !== "\"") {
bbf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bc00: 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
bc10: 67 41 74 28 22 53 74 72 69 6e 67 73 20 6d 75 73  gAt("Strings mus
bc20: 74 20 75 73 65 20 64 6f 75 62 6c 65 71 75 6f 74  t use doublequot
bc30: 65 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e.",..          
bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc50: 20 20 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72        line, char
bc60: 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20  acter);..       
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
bc80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bc90: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e        if (option
bca0: 2e 71 75 6f 74 6d 61 72 6b 29 20 7b 0d 0a 20 20  .quotmark) {..  
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcc0: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e        if (option
bcd0: 2e 71 75 6f 74 6d 61 72 6b 20 3d 3d 3d 20 22 73  .quotmark === "s
bce0: 69 6e 67 6c 65 22 20 26 26 20 78 20 21 3d 3d 20  ingle" && x !== 
bcf0: 22 27 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  "'") {..        
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd10: 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 53      warningAt("S
bd20: 74 72 69 6e 67 73 20 6d 75 73 74 20 75 73 65 20  trings must use 
bd30: 73 69 6e 67 6c 65 71 75 6f 74 65 2e 22 2c 0d 0a  singlequote.",..
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd60: 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63      line, charac
bd70: 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ter);..         
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
bd90: 20 65 6c 73 65 20 69 66 20 28 6f 70 74 69 6f 6e   else if (option
bda0: 2e 71 75 6f 74 6d 61 72 6b 20 3d 3d 3d 20 22 64  .quotmark === "d
bdb0: 6f 75 62 6c 65 22 20 26 26 20 78 20 21 3d 3d 20  ouble" && x !== 
bdc0: 22 5c 22 22 29 20 7b 0d 0a 20 20 20 20 20 20 20  "\"") {..       
bdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bde0: 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22       warningAt("
bdf0: 53 74 72 69 6e 67 73 20 6d 75 73 74 20 75 73 65  Strings must use
be00: 20 64 6f 75 62 6c 65 71 75 6f 74 65 2e 22 2c 0d   doublequote.",.
be10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
be20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be30: 20 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72 61       line, chara
be40: 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  cter);..        
be50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be60: 7d 20 65 6c 73 65 20 69 66 20 28 6f 70 74 69 6f  } else if (optio
be70: 6e 2e 71 75 6f 74 6d 61 72 6b 20 3d 3d 3d 20 74  n.quotmark === t
be80: 72 75 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  rue) {..        
be90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bea0: 20 20 20 20 71 75 6f 74 6d 61 72 6b 20 3d 20 71      quotmark = q
beb0: 75 6f 74 6d 61 72 6b 20 7c 7c 20 78 3b 0d 0a 20  uotmark || x;.. 
bec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bed0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 71             if (q
bee0: 75 6f 74 6d 61 72 6b 20 21 3d 3d 20 78 29 20 7b  uotmark !== x) {
bef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf10: 20 20 77 61 72 6e 69 6e 67 41 74 28 22 4d 69 78    warningAt("Mix
bf20: 65 64 20 64 6f 75 62 6c 65 20 61 6e 64 20 73 69  ed double and si
bf30: 6e 67 6c 65 20 71 75 6f 74 65 73 2e 22 2c 0d 0a  ngle quotes.",..
bf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf60: 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 63 68          line, ch
bf70: 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20  aracter);..     
bf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfb0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
bfc0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
bfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfe0: 20 20 66 75 6e 63 74 69 6f 6e 20 65 73 63 28 6e    function esc(n
bff0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
c000: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72               var
c010: 20 69 20 3d 20 70 61 72 73 65 49 6e 74 28 73 2e   i = parseInt(s.
c020: 73 75 62 73 74 72 28 6a 20 2b 20 31 2c 20 6e 29  substr(j + 1, n)
c030: 2c 20 31 36 29 3b 0d 0a 20 20 20 20 20 20 20 20  , 16);..        
c040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c050: 6a 20 2b 3d 20 6e 3b 0d 0a 20 20 20 20 20 20 20  j += n;..       
c060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c070: 20 69 66 20 28 69 20 3e 3d 20 33 32 20 26 26 20   if (i >= 32 && 
c080: 69 20 3c 3d 20 31 32 36 20 26 26 0d 0a 20 20 20  i <= 126 &&..   
c090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 20 21               i !
c0b0: 3d 3d 20 33 34 20 26 26 20 69 20 21 3d 3d 20 39  == 34 && i !== 9
c0c0: 32 20 26 26 20 69 20 21 3d 3d 20 33 39 29 20 7b  2 && i !== 39) {
c0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
c0f0: 72 6e 69 6e 67 41 74 28 22 55 6e 6e 65 63 65 73  rningAt("Unneces
c100: 73 61 72 79 20 65 73 63 61 70 65 6d 65 6e 74 2e  sary escapement.
c110: 22 2c 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74  ", line, charact
c120: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  er);..          
c130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c150: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74           charact
c160: 65 72 20 2b 3d 20 6e 3b 0d 0a 20 20 20 20 20 20  er += n;..      
c170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c180: 20 20 63 20 3d 20 53 74 72 69 6e 67 2e 66 72 6f    c = String.fro
c190: 6d 43 68 61 72 43 6f 64 65 28 69 29 3b 0d 0a 20  mCharCode(i);.. 
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c1c0: 20 20 20 20 20 20 20 20 20 20 6a 20 3d 20 30 3b            j = 0;
c1d0: 0d 0a 75 6e 63 6c 6f 73 65 64 53 74 72 69 6e 67  ..unclosedString
c1e0: 3a 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b  :     for (;;) {
c1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c200: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20            while 
c210: 28 6a 20 3e 3d 20 73 2e 6c 65 6e 67 74 68 29 20  (j >= s.length) 
c220: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
c240: 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
c250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c260: 20 20 20 20 20 76 61 72 20 63 6c 20 3d 20 6c 69       var cl = li
c270: 6e 65 2c 20 63 66 20 3d 20 66 72 6f 6d 3b 0d 0a  ne, cf = from;..
c280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c290: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c2a0: 21 6e 65 78 74 4c 69 6e 65 28 29 29 20 7b 0d 0a  !nextLine()) {..
c2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2d0: 65 72 72 6f 72 41 74 28 22 55 6e 63 6c 6f 73 65  errorAt("Unclose
c2e0: 64 20 73 74 72 69 6e 67 2e 22 2c 20 63 6c 2c 20  d string.", cl, 
c2f0: 63 66 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cf);..          
c300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c310: 20 20 20 20 20 20 62 72 65 61 6b 20 75 6e 63 6c        break uncl
c320: 6f 73 65 64 53 74 72 69 6e 67 3b 0d 0a 20 20 20  osedString;..   
c330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c340: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c360: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c            if (al
c370: 6c 6f 77 4e 65 77 4c 69 6e 65 29 20 7b 0d 0a 20  lowNewLine) {.. 
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
c3a0: 6c 6c 6f 77 4e 65 77 4c 69 6e 65 20 3d 20 66 61  llowNewLine = fa
c3b0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
c3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3d0: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3f0: 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
c400: 69 6e 67 41 74 28 22 55 6e 63 6c 6f 73 65 64 20  ingAt("Unclosed 
c410: 73 74 72 69 6e 67 2e 22 2c 20 63 6c 2c 20 63 66  string.", cl, cf
c420: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c440: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
c450: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c470: 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72        c = s.char
c480: 41 74 28 6a 29 3b 0d 0a 20 20 20 20 20 20 20 20  At(j);..        
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4a0: 69 66 20 28 63 20 3d 3d 3d 20 78 29 20 7b 0d 0a  if (c === x) {..
c4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72              char
c4d0: 61 63 74 65 72 20 2b 3d 20 31 3b 0d 0a 20 20 20  acter += 1;..   
c4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4f0: 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e 73           s = s.s
c500: 75 62 73 74 72 28 6a 20 2b 20 31 29 3b 0d 0a 20  ubstr(j + 1);.. 
c510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c520: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c530: 6e 20 69 74 28 22 28 73 74 72 69 6e 67 29 22 2c  n it("(string)",
c540: 20 72 2c 20 78 29 3b 0d 0a 20 20 20 20 20 20 20   r, x);..       
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c560: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c570: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c580: 63 20 3c 20 22 20 22 29 20 7b 0d 0a 20 20 20 20  c < " ") {..    
c590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5a0: 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d          if (c ==
c5b0: 3d 20 22 5c 6e 22 20 7c 7c 20 63 20 3d 3d 3d 20  = "\n" || c === 
c5c0: 22 5c 72 22 29 20 7b 0d 0a 20 20 20 20 20 20 20  "\r") {..       
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5e0: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
c5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c620: 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
c630: 69 6e 67 41 74 28 22 43 6f 6e 74 72 6f 6c 20 63  ingAt("Control c
c640: 68 61 72 61 63 74 65 72 20 69 6e 20 73 74 72 69  haracter in stri
c650: 6e 67 3a 20 7b 61 7d 2e 22 2c 0d 0a 20 20 20 20  ng: {a}.",..    
c660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c680: 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 20  line, character 
c690: 2b 20 6a 2c 20 73 2e 73 6c 69 63 65 28 30 2c 20  + j, s.slice(0, 
c6a0: 6a 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  j));..          
c6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
c6c0: 65 6c 73 65 20 69 66 20 28 63 20 3d 3d 3d 20 22  else if (c === "
c6d0: 5c 5c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  \\") {..        
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6f0: 20 20 20 20 6a 20 2b 3d 20 31 3b 0d 0a 20 20 20      j += 1;..   
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c710: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74           charact
c720: 65 72 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20  er += 1;..      
c730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c740: 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72        c = s.char
c750: 41 74 28 6a 29 3b 0d 0a 20 20 20 20 20 20 20 20  At(j);..        
c760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c770: 20 20 20 20 6e 20 3d 20 73 2e 63 68 61 72 41 74      n = s.charAt
c780: 28 6a 20 2b 20 31 29 3b 0d 0a 20 20 20 20 20 20  (j + 1);..      
c790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7a0: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 63 29        switch (c)
c7b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7d0: 63 61 73 65 20 22 5c 5c 22 3a 0d 0a 20 20 20 20  case "\\":..    
c7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7f0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 5c 22          case "\"
c800: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c820: 63 61 73 65 20 22 2f 22 3a 0d 0a 20 20 20 20 20  case "/":..     
c830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c840: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
c850: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
c870: 61 73 65 20 22 5c 27 22 3a 0d 0a 20 20 20 20 20  ase "\'":..     
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c890: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6a             if (j
c8a0: 73 6f 6e 6d 6f 64 65 29 20 7b 0d 0a 20 20 20 20  sonmode) {..    
c8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8d0: 77 61 72 6e 69 6e 67 41 74 28 22 41 76 6f 69 64  warningAt("Avoid
c8e0: 20 5c 5c 27 2e 22 2c 20 6c 69 6e 65 2c 20 63 68   \\'.", line, ch
c8f0: 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20  aracter);..     
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c910: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
c940: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
c950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c960: 20 20 63 61 73 65 20 22 62 22 3a 0d 0a 20 20 20    case "b":..   
c970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c980: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d               c =
c990: 20 22 5c 62 22 3b 0d 0a 20 20 20 20 20 20 20 20   "\b";..        
c9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9b0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
c9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
c9e0: 20 22 66 22 3a 0d 0a 20 20 20 20 20 20 20 20 20   "f":..         
c9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca00: 20 20 20 20 20 20 20 63 20 3d 20 22 5c 66 22 3b         c = "\f";
ca10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca30: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
ca40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca50: 20 20 20 20 20 20 63 61 73 65 20 22 6e 22 3a 0d        case "n":.
ca60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca80: 20 63 20 3d 20 22 5c 6e 22 3b 0d 0a 20 20 20 20   c = "\n";..    
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
cab0: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
cac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cad0: 63 61 73 65 20 22 72 22 3a 0d 0a 20 20 20 20 20  case "r":..     
cae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
caf0: 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 22             c = "
cb00: 5c 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  \r";..          
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb20: 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20        break;..  
cb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb40: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
cb50: 74 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t":..           
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb70: 20 20 20 20 20 63 20 3d 20 22 5c 74 22 3b 0d 0a       c = "\t";..
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cba0: 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
cbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbc0: 20 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a 20      case "0":.. 
cbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
cbf0: 20 3d 20 22 5c 30 22 3b 0d 0a 20 20 20 20 20 20   = "\0";..      
cc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc10: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 63 74            // Oct
cc20: 61 6c 20 6c 69 74 65 72 61 6c 73 20 66 61 69 6c  al literals fail
cc30: 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 0d   in strict mode.
cc40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc60: 20 2f 2f 20 63 68 65 63 6b 20 69 66 20 74 68 65   // check if the
cc70: 20 6e 75 6d 62 65 72 20 69 73 20 62 65 74 77 65   number is betwe
cc80: 65 6e 20 30 30 20 61 6e 64 20 30 37 0d 0a 20 20  en 00 and 07..  
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ccb0: 20 77 68 65 72 65 20 27 6e 27 20 69 73 20 74 68   where 'n' is th
ccc0: 65 20 74 6f 6b 65 6e 20 6e 65 78 74 20 74 6f 20  e token next to 
ccd0: 27 63 27 0d 0a 20 20 20 20 20 20 20 20 20 20 20  'c'..           
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 20 20 20 20 20 69 66 20 28 6e 20 3e 3d 20 30 20       if (n >= 0 
cd00: 26 26 20 6e 20 3c 3d 20 37 20 26 26 20 64 69 72  && n <= 7 && dir
cd10: 65 63 74 69 76 65 5b 22 75 73 65 20 73 74 72 69  ective["use stri
cd20: 63 74 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20  ct"]) {..       
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
cd50: 6e 69 6e 67 41 74 28 0d 0a 20 20 20 20 20 20 20  ningAt(..       
cd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4f 63               "Oc
cd80: 74 61 6c 20 6c 69 74 65 72 61 6c 73 20 61 72 65  tal literals are
cd90: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e 20   not allowed in 
cda0: 73 74 72 69 63 74 20 6d 6f 64 65 2e 22 2c 0d 0a  strict mode.",..
cdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdd0: 20 20 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63      line, charac
cde0: 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ter);..         
cdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
ce10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce20: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
ce30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
ce50: 73 65 20 22 75 22 3a 0d 0a 20 20 20 20 20 20 20  se "u":..       
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce70: 20 20 20 20 20 20 20 20 20 65 73 63 28 34 29 3b           esc(4);
ce80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cea0: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
ceb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cec0: 20 20 20 20 20 20 63 61 73 65 20 22 76 22 3a 0d        case "v":.
ced0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cef0: 20 69 66 20 28 6a 73 6f 6e 6d 6f 64 65 29 20 7b   if (jsonmode) {
cf00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf20: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28        warningAt(
cf30: 22 41 76 6f 69 64 20 5c 5c 76 2e 22 2c 20 6c 69  "Avoid \\v.", li
cf40: 6e 65 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d  ne, character);.
cf50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf90: 20 20 20 20 63 20 3d 20 22 5c 76 22 3b 0d 0a 20      c = "\v";.. 
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
cfc0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
cfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfe0: 20 20 20 63 61 73 65 20 22 78 22 3a 0d 0a 20 20     case "x":..  
cff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
d010: 20 28 6a 73 6f 6e 6d 6f 64 65 29 20 7b 0d 0a 20   (jsonmode) {.. 
d020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d040: 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 41 76     warningAt("Av
d050: 6f 69 64 20 5c 5c 78 2d 2e 22 2c 20 6c 69 6e 65  oid \\x-.", line
d060: 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20  , character);.. 
d070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
d090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0b0: 20 20 65 73 63 28 32 29 3b 0d 0a 20 20 20 20 20    esc(2);..     
d0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0d0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
d0e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
d0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
d100: 61 73 65 20 22 22 3a 0d 0a 20 20 20 20 20 20 20  ase "":..       
d110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d120: 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 61 73 74           // last
d130: 20 63 68 61 72 61 63 74 65 72 20 69 73 20 65 73   character is es
d140: 63 61 70 65 20 63 68 61 72 61 63 74 65 72 0d 0a  cape character..
d150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d170: 2f 2f 20 61 6c 77 61 79 73 20 61 6c 6c 6f 77 20  // always allow 
d180: 6e 65 77 20 6c 69 6e 65 20 69 66 20 65 73 63 61  new line if esca
d190: 70 65 64 2c 20 62 75 74 20 73 68 6f 77 0d 0a 20  ped, but show.. 
d1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
d1c0: 2f 20 77 61 72 6e 69 6e 67 20 69 66 20 6f 70 74  / warning if opt
d1d0: 69 6f 6e 20 69 73 20 6e 6f 74 20 73 65 74 0d 0a  ion is not set..
d1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d200: 61 6c 6c 6f 77 4e 65 77 4c 69 6e 65 20 3d 20 74  allowNewLine = t
d210: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
d220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d230: 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e        if (option
d240: 2e 6d 75 6c 74 69 73 74 72 29 20 7b 0d 0a 20 20  .multistr) {..  
d250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d270: 20 20 69 66 20 28 6a 73 6f 6e 6d 6f 64 65 29 20    if (jsonmode) 
d280: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d2a0: 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
d2b0: 6e 67 41 74 28 22 41 76 6f 69 64 20 45 4f 4c 20  ngAt("Avoid EOL 
d2c0: 65 73 63 61 70 65 6d 65 6e 74 2e 22 2c 20 6c 69  escapement.", li
d2d0: 6e 65 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d  ne, character);.
d2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d300: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d320: 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d 20              c = 
d330: 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "";..           
d340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d350: 20 20 20 20 20 20 20 20 20 63 68 61 72 61 63 74           charact
d360: 65 72 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 20  er -= 1;..      
d370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
d390: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
d3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d3b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
d3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d3d0: 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
d3e0: 41 74 28 22 42 61 64 20 65 73 63 61 70 65 6d 65  At("Bad escapeme
d3f0: 6e 74 20 6f 66 20 45 4f 4c 2e 20 55 73 65 20 6f  nt of EOL. Use o
d400: 70 74 69 6f 6e 20 6d 75 6c 74 69 73 74 72 20 69  ption multistr i
d410: 66 20 6e 65 65 64 65 64 2e 22 2c 0d 0a 20 20 20  f needed.",..   
d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d440: 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72   line, character
d450: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d470: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
d480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d490: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
d4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4c0: 20 20 77 61 72 6e 69 6e 67 41 74 28 22 42 61 64    warningAt("Bad
d4d0: 20 65 73 63 61 70 65 6d 65 6e 74 2e 22 2c 20 6c   escapement.", l
d4e0: 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 29 3b  ine, character);
d4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d520: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d540: 20 20 20 20 72 20 2b 3d 20 63 3b 0d 0a 20 20 20      r += c;..   
d550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d560: 20 20 20 20 20 63 68 61 72 61 63 74 65 72 20 2b       character +
d570: 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1;..          
d580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 20                j 
d590: 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  += 1;..         
d5a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
d5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d5c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d5d0: 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20     for (;;) {.. 
d5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5f0: 20 20 20 69 66 20 28 21 73 29 20 7b 0d 0a 20 20     if (!s) {..  
d600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d610: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 28        return it(
d620: 6e 65 78 74 4c 69 6e 65 28 29 20 3f 20 22 28 65  nextLine() ? "(e
d630: 6e 64 6c 69 6e 65 29 22 20 3a 20 22 28 65 6e 64  ndline)" : "(end
d640: 29 22 2c 20 22 22 29 3b 0d 0a 20 20 20 20 20 20  )", "");..      
d650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d670: 20 20 20 20 20 74 20 3d 20 6d 61 74 63 68 28 74       t = match(t
d680: 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x);..           
d690: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 29           if (!t)
d6a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 20 3d 20              t = 
d6c0: 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "";..           
d6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 20 3d               c =
d6e0: 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   "";..          
d6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68                wh
d700: 69 6c 65 20 28 73 20 26 26 20 73 20 3c 20 22 21  ile (s && s < "!
d710: 22 20 7c 7c 20 73 2e 6d 61 74 63 68 28 2f 5b d0  " || s.match(/[.
d720: b0 2d d1 8f d0 90 2d d0 af 5d 2f 29 29 20 7b 0d  .-....-..]/)) {.
d730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d740: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d               s =
d750: 20 73 2e 73 75 62 73 74 72 28 31 29 3b 0d 0a 20   s.substr(1);.. 
d760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d770: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d790: 20 20 69 66 20 28 73 29 20 7b 0d 0a 20 20 20 20    if (s) {..    
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7b0: 20 20 20 20 20 20 20 20 65 72 72 6f 72 41 74 28          errorAt(
d7c0: 22 28 32 29 55 6e 65 78 70 65 63 74 65 64 20 27  "(2)Unexpected '
d7d0: 7b 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 63 68  {a}'.", line, ch
d7e0: 61 72 61 63 74 65 72 2c 20 73 2e 73 75 62 73 74  aracter, s.subst
d7f0: 72 28 30 2c 20 31 29 29 3b 0d 0a 20 20 20 20 20  r(0, 1));..     
d800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d810: 20 20 20 20 20 20 20 73 20 3d 20 22 22 3b 0d 0a         s = "";..
d820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d830: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
d850: 20 65 6c 73 65 20 7b 0d 0a 0d 0a 20 20 20 20 2f   else {....    /
d860: 2f 20 20 20 20 20 20 69 64 65 6e 74 69 66 69 65  /      identifie
d870: 72 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r....           
d880: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d890: 28 69 73 41 6c 70 68 61 28 63 29 20 7c 7c 20 63  (isAlpha(c) || c
d8a0: 20 3d 3d 3d 20 22 5f 22 20 7c 7c 20 63 20 3d 3d   === "_" || c ==
d8b0: 3d 20 22 24 22 29 20 7b 0d 0a 20 20 20 20 20 20  = "$") {..      
d8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 28        return it(
d8e0: 22 28 69 64 65 6e 74 69 66 69 65 72 29 22 2c 20  "(identifier)", 
d8f0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
d900: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
d910: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 6e 75  ..    //      nu
d920: 6d 62 65 72 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mber....        
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d940: 69 66 20 28 69 73 44 69 67 69 74 28 63 29 29 20  if (isDigit(c)) 
d950: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
d970: 66 20 28 21 69 73 46 69 6e 69 74 65 28 4e 75 6d  f (!isFinite(Num
d980: 62 65 72 28 74 29 29 29 20 7b 0d 0a 20 20 20 20  ber(t))) {..    
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
d9b0: 69 6e 67 41 74 28 22 42 61 64 20 6e 75 6d 62 65  ingAt("Bad numbe
d9c0: 72 20 27 7b 61 7d 27 2e 22 2c 0d 0a 20 20 20 20  r '{a}'.",..    
d9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72 2c  line, character,
da00: 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   t);..          
da10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da20: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
da30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da40: 20 69 66 20 28 69 73 41 6c 70 68 61 28 73 2e 73   if (isAlpha(s.s
da50: 75 62 73 74 72 28 30 2c 20 31 29 29 29 20 7b 0d  ubstr(0, 1))) {.
da60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da80: 20 77 61 72 6e 69 6e 67 41 74 28 22 4d 69 73 73   warningAt("Miss
da90: 69 6e 67 20 73 70 61 63 65 20 61 66 74 65 72 20  ing space after 
daa0: 27 7b 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20  '{a}'.",..      
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65    line, characte
dae0: 72 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  r, t);..        
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db00: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
db10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db20: 20 20 20 69 66 20 28 63 20 3d 3d 3d 20 22 30 22     if (c === "0"
db30: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db50: 20 20 20 20 20 64 20 3d 20 74 2e 73 75 62 73 74       d = t.subst
db60: 72 28 31 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  r(1, 1);..      
db70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73            if (is
db90: 44 69 67 69 74 28 64 29 29 20 7b 0d 0a 20 20 20  Digit(d)) {..   
dba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbc0: 20 69 66 20 28 74 6f 6b 65 6e 2e 69 64 20 21 3d   if (token.id !=
dbd0: 3d 20 22 2e 22 29 20 7b 0d 0a 20 20 20 20 20 20  = ".") {..      
dbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc00: 20 20 77 61 72 6e 69 6e 67 41 74 28 22 44 6f 6e    warningAt("Don
dc10: 27 74 20 75 73 65 20 65 78 74 72 61 20 6c 65 61  't use extra lea
dc20: 64 69 6e 67 20 7a 65 72 6f 73 20 27 7b 61 7d 27  ding zeros '{a}'
dc30: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65 72   line, character
dc70: 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , t);..         
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc90: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
dca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
dcc0: 65 6c 73 65 20 69 66 20 28 6a 73 6f 6e 6d 6f 64  else if (jsonmod
dcd0: 65 20 26 26 20 28 64 20 3d 3d 3d 20 22 78 22 20  e && (d === "x" 
dce0: 7c 7c 20 64 20 3d 3d 3d 20 22 58 22 29 29 20 7b  || d === "X")) {
dcf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd10: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28        warningAt(
dd20: 22 41 76 6f 69 64 20 30 78 2d 2e 20 27 7b 61 7d  "Avoid 0x-. '{a}
dd30: 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  '.",..          
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd60: 20 20 6c 69 6e 65 2c 20 63 68 61 72 61 63 74 65    line, characte
dd70: 72 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  r, t);..        
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
ddc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddd0: 20 20 20 20 20 20 69 66 20 28 74 2e 73 75 62 73        if (t.subs
dde0: 74 72 28 74 2e 6c 65 6e 67 74 68 20 2d 20 31 29  tr(t.length - 1)
ddf0: 20 3d 3d 3d 20 22 2e 22 29 20 7b 0d 0a 20 20 20   === ".") {..   
de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
de20: 6e 69 6e 67 41 74 28 0d 0a 22 41 20 74 72 61 69  ningAt(.."A trai
de30: 6c 69 6e 67 20 64 65 63 69 6d 61 6c 20 70 6f 69  ling decimal poi
de40: 6e 74 20 63 61 6e 20 62 65 20 63 6f 6e 66 75 73  nt can be confus
de50: 65 64 20 77 69 74 68 20 61 20 64 6f 74 20 27 7b  ed with a dot '{
de60: 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 63 68 61  a}'.", line, cha
de70: 72 61 63 74 65 72 2c 20 74 29 3b 0d 0a 20 20 20  racter, t);..   
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
deb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69          return i
dec0: 74 28 22 28 6e 75 6d 62 65 72 29 22 2c 20 74 29  t("(number)", t)
ded0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
dee0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df00: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74 29        switch (t)
df10: 20 7b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 20 20 20   {....    //    
df20: 20 20 73 74 72 69 6e 67 0d 0a 0d 0a 20 20 20 20    string....    
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df40: 20 20 20 20 63 61 73 65 20 22 5c 22 22 3a 0d 0a      case "\"":..
df50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df60: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 27 22          case "'"
df70: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
df80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
df90: 65 74 75 72 6e 20 73 74 72 69 6e 67 28 74 29 3b  eturn string(t);
dfa0: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  ....    //      
dfb0: 2f 2f 20 63 6f 6d 6d 65 6e 74 0d 0a 0d 0a 20 20  // comment....  
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfd0: 20 20 20 20 20 20 63 61 73 65 20 22 2f 2f 22 3a        case "//":
dfe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20                s 
e000: 3d 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  = "";..         
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e020: 20 20 20 74 6f 6b 65 6e 2e 63 6f 6d 6d 65 6e 74     token.comment
e030: 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a        break;....
e060: 20 20 20 20 2f 2f 20 20 20 20 20 20 2f 2a 20 63      //      /* c
e070: 6f 6d 6d 65 6e 74 0d 0a 0d 0a 20 20 20 20 20 20  omment....      
e080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e090: 20 20 63 61 73 65 20 22 2f 2a 22 3a 0d 0a 20 20    case "/*":..  
e0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0b0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b            for (;
e0c0: 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ;) {..          
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0e0: 20 20 20 20 20 20 69 20 3d 20 73 2e 73 65 61 72        i = s.sear
e0f0: 63 68 28 6c 78 29 3b 0d 0a 20 20 20 20 20 20 20  ch(lx);..       
e100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e110: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 20 3e           if (i >
e120: 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  = 0) {..        
e130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e140: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
e150: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e170: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
e180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e190: 20 20 20 20 20 20 20 69 66 20 28 21 6e 65 78 74         if (!next
e1a0: 4c 69 6e 65 28 29 29 20 7b 0d 0a 20 20 20 20 20  Line()) {..     
e1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
e1d0: 72 72 6f 72 41 74 28 22 55 6e 63 6c 6f 73 65 64  rrorAt("Unclosed
e1e0: 20 63 6f 6d 6d 65 6e 74 2e 22 2c 20 6c 69 6e 65   comment.", line
e1f0: 2c 20 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20  , character);.. 
e200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d               s =
e260: 20 73 2e 73 75 62 73 74 72 28 69 20 2b 20 32 29   s.substr(i + 2)
e270: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
e290: 6f 6b 65 6e 2e 63 6f 6d 6d 65 6e 74 20 3d 20 74  oken.comment = t
e2a0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2c0: 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20    break;....    
e2d0: 2f 2f 20 20 20 20 20 20 2f 2a 6d 65 6d 62 65 72  //      /*member
e2e0: 73 20 2f 2a 6a 73 68 69 6e 74 20 2f 2a 67 6c 6f  s /*jshint /*glo
e2f0: 62 61 6c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  bal....         
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
e310: 61 73 65 20 22 2f 2a 6d 65 6d 62 65 72 73 22 3a  ase "/*members":
e320: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e330: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
e340: 2f 2a 6d 65 6d 62 65 72 22 3a 0d 0a 20 20 20 20  /*member":..    
e350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e360: 20 20 20 20 63 61 73 65 20 22 2f 2a 6a 73 68 69      case "/*jshi
e370: 6e 74 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  nt":..          
e380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
e390: 73 65 20 22 2f 2a 6a 73 6c 69 6e 74 22 3a 0d 0a  se "/*jslint":..
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3b0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 2a          case "/*
e3c0: 67 6c 6f 62 61 6c 22 3a 0d 0a 20 20 20 20 20 20  global":..      
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3e0: 20 20 63 61 73 65 20 22 2a 2f 22 3a 0d 0a 20 20    case "*/":..  
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e400: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e410: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e430: 20 20 20 20 76 61 6c 75 65 3a 20 74 2c 0d 0a 20      value: t,.. 
e440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
e460: 79 70 65 3a 20 22 73 70 65 63 69 61 6c 22 2c 0d  ype: "special",.
e470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e490: 20 6c 69 6e 65 3a 20 6c 69 6e 65 2c 0d 0a 20 20   line: line,..  
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68                ch
e4c0: 61 72 61 63 74 65 72 3a 20 63 68 61 72 61 63 74  aracter: charact
e4d0: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
e4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4f0: 20 20 20 20 20 66 72 6f 6d 3a 20 66 72 6f 6d 0d       from: from.
e500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e510: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0d               };.
e520: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e530: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
e540: 22 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "":..           
e550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e560: 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 2f 2f 20   break;..    // 
e570: 20 20 20 20 20 2f 0d 0a 20 20 20 20 20 20 20 20       /..        
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e590: 63 61 73 65 20 22 2f 22 3a 0d 0a 20 20 20 20 20  case "/":..     
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5b0: 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e         if (token
e5c0: 2e 69 64 20 3d 3d 3d 20 22 2f 3d 22 29 20 7b 0d  .id === "/=") {.
e5d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5f0: 20 65 72 72 6f 72 41 74 28 22 41 20 72 65 67 75   errorAt("A regu
e600: 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 6c  lar expression l
e610: 69 74 65 72 61 6c 20 63 61 6e 20 62 65 20 63 6f  iteral can be co
e620: 6e 66 75 73 65 64 20 77 69 74 68 20 27 2f 3d 27  nfused with '/='
e630: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
e640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e650: 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 66           line, f
e660: 72 6f 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rom);..         
e670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e680: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6a0: 20 20 69 66 20 28 70 72 65 72 65 67 29 20 7b 0d    if (prereg) {.
e6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6d0: 20 64 65 70 74 68 20 3d 20 30 3b 0d 0a 20 20 20   depth = 0;..   
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 70               cap
e700: 74 75 72 65 73 20 3d 20 30 3b 0d 0a 20 20 20 20  tures = 0;..    
e710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e720: 20 20 20 20 20 20 20 20 20 20 20 20 6c 20 3d 20              l = 
e730: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
e740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e750: 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a      for (;;) {..
e760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e780: 20 20 20 20 62 20 3d 20 74 72 75 65 3b 0d 0a 20      b = true;.. 
e790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7b0: 20 20 20 63 20 3d 20 73 2e 63 68 61 72 41 74 28     c = s.charAt(
e7c0: 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l);..           
e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7e0: 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b           l += 1;
e7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e810: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 63 29        switch (c)
e820: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e840: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 22 3a          case "":
e850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e870: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 41            errorA
e880: 74 28 22 55 6e 63 6c 6f 73 65 64 20 72 65 67 75  t("Unclosed regu
e890: 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 22  lar expression."
e8a0: 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 29 3b 0d 0a  , line, from);..
e8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 71          return q
e8e0: 75 69 74 28 22 53 74 6f 70 70 69 6e 67 2e 22 2c  uit("Stopping.",
e8f0: 20 6c 69 6e 65 2c 20 66 72 6f 6d 29 3b 0d 0a 20   line, from);.. 
e900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e920: 20 20 20 63 61 73 65 20 22 2f 22 3a 0d 0a 20 20     case "/":..  
e930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e950: 20 20 20 20 20 20 69 66 20 28 64 65 70 74 68 20        if (depth 
e960: 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  > 0) {..        
e970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e990: 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 7b      warningAt("{
e9a0: 61 7d 20 75 6e 74 65 72 6d 69 6e 61 74 65 64 20  a} unterminated 
e9b0: 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69  regular expressi
e9c0: 6f 6e 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  on " +..        
e9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9f0: 20 20 20 20 20 20 20 20 22 67 72 6f 75 70 28 73          "group(s
ea00: 29 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 20  ).", line, from 
ea10: 2b 20 6c 2c 20 64 65 70 74 68 29 3b 0d 0a 20 20  + l, depth);..  
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ea50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea70: 20 63 20 3d 20 73 2e 73 75 62 73 74 72 28 30 2c   c = s.substr(0,
ea80: 20 6c 20 2d 20 31 29 3b 0d 0a 20 20 20 20 20 20   l - 1);..      
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eab0: 20 20 71 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20    q = {..       
eac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ead0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eae0: 20 20 20 20 20 67 3a 20 74 72 75 65 2c 0d 0a 20       g: true,.. 
eaf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb10: 20 20 20 20 20 20 20 20 20 20 20 69 3a 20 74 72             i: tr
eb20: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb50: 20 6d 3a 20 74 72 75 65 0d 0a 20 20 20 20 20 20   m: true..      
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb80: 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20    };..          
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68                wh
ebb0: 69 6c 65 20 28 71 5b 73 2e 63 68 61 72 41 74 28  ile (q[s.charAt(
ebc0: 6c 29 5d 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d  l)] === true) {.
ebd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ebe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 71 5b 73               q[s
ec00: 2e 63 68 61 72 41 74 28 6c 29 5d 20 3d 20 66 61  .charAt(l)] = fa
ec10: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
ec20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec40: 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20    l += 1;..     
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68                ch
eca0: 61 72 61 63 74 65 72 20 2b 3d 20 6c 3b 0d 0a 20  aracter += l;.. 
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecd0: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 73 75 62         s = s.sub
ece0: 73 74 72 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20  str(l);..       
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed10: 20 71 20 3d 20 73 2e 63 68 61 72 41 74 28 30 29   q = s.charAt(0)
ed20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 71             if (q
ed50: 20 3d 3d 3d 20 22 2f 22 20 7c 7c 20 71 20 3d 3d   === "/" || q ==
ed60: 3d 20 22 2a 22 29 20 7b 0d 0a 20 20 20 20 20 20  = "*") {..      
ed70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed90: 20 20 20 20 20 20 65 72 72 6f 72 41 74 28 22 43        errorAt("C
eda0: 6f 6e 66 75 73 69 6e 67 20 72 65 67 75 6c 61 72  onfusing regular
edb0: 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 2c 0d 0a   expression.",..
edc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edf0: 20 20 20 20 6c 69 6e 65 2c 20 66 72 6f 6d 29 3b      line, from);
ee00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ee30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee50: 20 20 20 20 20 72 65 74 75 72 6e 20 69 74 28 22       return it("
ee60: 28 72 65 67 65 78 70 29 22 2c 20 63 29 3b 0d 0a  (regexp)", c);..
ee70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee90: 20 20 20 20 63 61 73 65 20 22 5c 5c 22 3a 0d 0a      case "\\":..
eea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eec0: 20 20 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68          c = s.ch
eed0: 61 72 41 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20  arAt(l);..      
eee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef00: 20 20 69 66 20 28 63 20 3c 20 22 20 22 29 20 7b    if (c < " ") {
ef10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
ef40: 72 6e 69 6e 67 41 74 28 0d 0a 22 55 6e 65 78 70  rningAt(.."Unexp
ef50: 65 63 74 65 64 20 63 6f 6e 74 72 6f 6c 20 63 68  ected control ch
ef60: 61 72 61 63 74 65 72 20 69 6e 20 72 65 67 75 6c  aracter in regul
ef70: 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 22 2c  ar expression.",
ef80: 20 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c 29   line, from + l)
ef90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
efa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
efb0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
efc0: 65 20 69 66 20 28 63 20 3d 3d 3d 20 22 3c 22 29  e if (c === "<")
efd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
efe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f000: 77 61 72 6e 69 6e 67 41 74 28 0d 0a 22 55 6e 65  warningAt(.."Une
f010: 78 70 65 63 74 65 64 20 65 73 63 61 70 65 64 20  xpected escaped 
f020: 63 68 61 72 61 63 74 65 72 20 27 7b 61 7d 27 20  character '{a}' 
f030: 69 6e 20 72 65 67 75 6c 61 72 20 65 78 70 72 65  in regular expre
f040: 73 73 69 6f 6e 2e 22 2c 20 6c 69 6e 65 2c 20 66  ssion.", line, f
f050: 72 6f 6d 20 2b 20 6c 2c 20 63 29 3b 0d 0a 20 20  rom + l, c);..  
f060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f080: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0b0: 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20   l += 1;..      
f0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0e0: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
f110: 73 65 20 22 28 22 3a 0d 0a 20 20 20 20 20 20 20  se "(":..       
f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f140: 20 64 65 70 74 68 20 2b 3d 20 31 3b 0d 0a 20 20   depth += 1;..  
f150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f170: 20 20 20 20 20 20 62 20 3d 20 66 61 6c 73 65 3b        b = false;
f180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
f1b0: 63 68 61 72 41 74 28 6c 29 20 3d 3d 3d 20 22 3f  charAt(l) === "?
f1c0: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
f1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1f0: 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20    l += 1;..     
f200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f220: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 73         switch (s
f230: 2e 63 68 61 72 41 74 28 6c 29 29 20 7b 0d 0a 20  .charAt(l)) {.. 
f240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f260: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
f270: 22 3a 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ":":..          
f280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2a0: 20 20 63 61 73 65 20 22 3d 22 3a 0d 0a 20 20 20    case "=":..   
f2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2d0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 21           case "!
f2e0: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
f2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f310: 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20      l += 1;..   
f320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f340: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
f350: 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ak;..           
f360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f380: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3b0: 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
f3c0: 6e 67 41 74 28 0d 0a 22 45 78 70 65 63 74 65 64  ngAt(.."Expected
f3d0: 20 27 7b 61 7d 27 20 61 6e 64 20 69 6e 73 74 65   '{a}' and inste
f3e0: 61 64 20 73 61 77 20 27 7b 62 7d 27 2e 22 2c 20  ad saw '{b}'.", 
f3f0: 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20  line, from + l, 
f400: 22 3a 22 2c 20 73 2e 63 68 61 72 41 74 28 6c 29  ":", s.charAt(l)
f410: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
f420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f440: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
f450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f460: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
f470: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
f480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4a0: 20 63 61 70 74 75 72 65 73 20 2b 3d 20 31 3b 0d   captures += 1;.
f4b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f500: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
f510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f530: 63 61 73 65 20 22 7c 22 3a 0d 0a 20 20 20 20 20  case "|":..     
f540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f560: 20 20 20 62 20 3d 20 66 61 6c 73 65 3b 0d 0a 20     b = false;.. 
f570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f590: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
f5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5c0: 20 20 20 63 61 73 65 20 22 29 22 3a 0d 0a 20 20     case ")":..  
f5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5f0: 20 20 20 20 20 20 69 66 20 28 64 65 70 74 68 20        if (depth 
f600: 3d 3d 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20 20  === 0) {..      
f610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f630: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28        warningAt(
f640: 22 55 6e 65 73 63 61 70 65 64 20 27 7b 61 7d 27  "Unescaped '{a}'
f650: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
f660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f680: 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 66           line, f
f690: 72 6f 6d 20 2b 20 6c 2c 20 22 29 22 29 3b 0d 0a  rom + l, ")");..
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6c0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
f6d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
f700: 70 74 68 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20  pth -= 1;..     
f710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f730: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
f740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
f760: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
f770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f780: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
f790: 20 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ":..           
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 71 20 3d               q =
f7c0: 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
f7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69               whi
f7f0: 6c 65 20 28 73 2e 63 68 61 72 41 74 28 6c 29 20  le (s.charAt(l) 
f800: 3d 3d 3d 20 22 20 22 29 20 7b 0d 0a 20 20 20 20  === " ") {..    
f810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f830: 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d          l += 1;.
f840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f860: 20 20 20 20 20 20 20 20 20 20 20 20 20 71 20 2b               q +
f870: 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1;..          
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f8a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 71 20 3e           if (q >
f8d0: 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20   1) {..         
f8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f900: 20 20 20 77 61 72 6e 69 6e 67 41 74 28 0d 0a 22     warningAt(.."
f910: 53 70 61 63 65 73 20 61 72 65 20 68 61 72 64 20  Spaces are hard 
f920: 74 6f 20 63 6f 75 6e 74 2e 20 55 73 65 20 7b 7b  to count. Use {{
f930: 61 7d 7d 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f  a}}.", line, fro
f940: 6d 20 2b 20 6c 2c 20 71 29 3b 0d 0a 20 20 20 20  m + l, q);..    
f950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f970: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
f9a0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
f9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
f9d0: 22 5b 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "[":..          
f9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 20                c 
fa00: 3d 20 73 2e 63 68 61 72 41 74 28 6c 29 3b 0d 0a  = s.charAt(l);..
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa30: 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d 3d          if (c ==
fa40: 3d 20 22 5e 22 29 20 7b 0d 0a 20 20 20 20 20 20  = "^") {..      
fa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa70: 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20        l += 1;.. 
fa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
faa0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
fab0: 70 74 69 6f 6e 2e 72 65 67 65 78 70 29 20 7b 0d  ption.regexp) {.
fac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
faf0: 20 77 61 72 6e 69 6e 67 41 74 28 22 49 6e 73 65   warningAt("Inse
fb00: 63 75 72 65 20 27 7b 61 7d 27 2e 22 2c 0d 0a 20  cure '{a}'.",.. 
fb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb40: 20 20 20 20 20 20 20 6c 69 6e 65 2c 20 66 72 6f         line, fro
fb50: 6d 20 2b 20 6c 2c 20 63 29 3b 0d 0a 20 20 20 20  m + l, c);..    
fb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb80: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
fb90: 66 20 28 73 2e 63 68 61 72 41 74 28 6c 29 20 3d  f (s.charAt(l) =
fba0: 3d 3d 20 22 5d 22 29 20 7b 0d 0a 20 20 20 20 20  == "]") {..     
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbd0: 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
fbe0: 41 74 28 22 55 6e 65 73 63 61 70 65 64 20 27 7b  At("Unescaped '{
fbf0: 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  a}'.",..        
fc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
fc30: 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20 22 5e 22 29  , from + l, "^")
fc40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
fc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
fc70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
fca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcc0: 20 20 20 20 20 69 66 20 28 63 20 3d 3d 3d 20 22       if (c === "
fcd0: 5d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ]") {..         
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd00: 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 45 6d     warningAt("Em
fd10: 70 74 79 20 63 6c 61 73 73 2e 22 2c 20 6c 69 6e  pty class.", lin
fd20: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
fd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd50: 20 20 20 20 20 20 20 20 66 72 6f 6d 20 2b 20 6c          from + l
fd60: 20 2d 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20   - 1);..        
fd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdb0: 20 20 20 20 20 20 20 20 20 20 20 69 73 4c 69 74             isLit
fdc0: 65 72 61 6c 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  eral = false;.. 
fdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdf0: 20 20 20 20 20 20 20 69 73 49 6e 52 61 6e 67 65         isInRange
fe00: 20 3d 20 66 61 6c 73 65 3b 0d 0a 6b 6c 61 73 73   = false;..klass
fe10: 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :               
fe20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe30: 20 20 20 64 6f 20 7b 0d 0a 20 20 20 20 20 20 20     do {..       
fe40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe60: 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72 41       c = s.charA
fe70: 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  t(l);..         
fe80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fea0: 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20     l += 1;..    
feb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fed0: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
fee0: 63 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  c) {..          
fef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff10: 20 20 63 61 73 65 20 22 5b 22 3a 0d 0a 20 20 20    case "[":..   
ff20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff40: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 5e           case "^
ff50: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
ff60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff80: 20 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55      warningAt("U
ff90: 6e 65 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22  nescaped '{a}'."
ffa0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
ffb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffd0: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c             line,
ffe0: 20 66 72 6f 6d 20 2b 20 6c 2c 20 63 29 3b 0d 0a   from + l, c);..
fff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10020 69 66 20 28 69 73 49 6e 52 61 6e 67 65 29 20 7b  if (isInRange) {
10030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10060 20 20 20 20 20 20 69 73 49 6e 52 61 6e 67 65 20        isInRange 
10070 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
10080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100a0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
100b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
100c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100e0 20 20 20 20 20 20 20 20 69 73 4c 69 74 65 72 61          isLitera
100f0 6c 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  l = true;..     
10100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10120 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
10130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
10160 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
10170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10190 20 20 63 61 73 65 20 22 2d 22 3a 0d 0a 20 20 20    case "-":..   
101a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
101d0 28 69 73 4c 69 74 65 72 61 6c 20 26 26 20 21 69  (isLiteral && !i
101e0 73 49 6e 52 61 6e 67 65 29 20 7b 0d 0a 20 20 20  sInRange) {..   
101f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10220 20 69 73 4c 69 74 65 72 61 6c 20 3d 20 66 61 6c   isLiteral = fal
10230 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
10240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10260 20 20 20 20 20 20 20 20 20 69 73 49 6e 52 61 6e           isInRan
10270 67 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ge = true;..    
10280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
102b0 73 65 20 69 66 20 28 69 73 49 6e 52 61 6e 67 65  se if (isInRange
102c0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
102d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102f0 20 20 20 20 20 20 20 20 20 69 73 49 6e 52 61 6e           isInRan
10300 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ge = false;..   
10310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10330 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
10340 6c 73 65 20 69 66 20 28 73 2e 63 68 61 72 41 74  lse if (s.charAt
10350 28 6c 29 20 3d 3d 3d 20 22 5d 22 29 20 7b 0d 0a  (l) === "]") {..
10360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10390 20 20 20 20 69 73 49 6e 52 61 6e 67 65 20 3d 20      isInRange = 
103a0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
103b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103d0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d         } else {.
103e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
103f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10410 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e       if (option.
10420 72 65 67 65 78 64 61 73 68 20 21 3d 3d 20 28 6c  regexdash !== (l
10430 20 3d 3d 3d 20 32 20 7c 7c 20 28 6c 20 3d 3d 3d   === 2 || (l ===
10440 20 33 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20   3 &&..         
10450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
10480 2e 63 68 61 72 41 74 28 31 29 20 3d 3d 3d 20 22  .charAt(1) === "
10490 5e 22 29 29 29 20 7b 0d 0a 20 20 20 20 20 20 20  ^"))) {..       
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104d0 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 73   warningAt("Unes
104e0 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 0d 0a  caped '{a}'.",..
104f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10520 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
10530 2c 20 66 72 6f 6d 20 2b 20 6c 20 2d 20 31 2c 20  , from + l - 1, 
10540 22 2d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  "-");..         
10550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105b0 20 20 69 73 4c 69 74 65 72 61 6c 20 3d 20 74 72    isLiteral = tr
105c0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
105d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10620 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
10630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10650 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
10660 20 22 5d 22 3a 0d 0a 20 20 20 20 20 20 20 20 20   "]":..         
10670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10690 20 20 20 20 20 20 20 69 66 20 28 69 73 49 6e 52         if (isInR
106a0 61 6e 67 65 20 26 26 20 21 6f 70 74 69 6f 6e 2e  ange && !option.
106b0 72 65 67 65 78 64 61 73 68 29 20 7b 0d 0a 20 20  regexdash) {..  
106c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106f0 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65    warningAt("Une
10700 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 0d  scaped '{a}'.",.
10710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10740 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e               lin
10750 65 2c 20 66 72 6f 6d 20 2b 20 6c 20 2d 20 31 2c  e, from + l - 1,
10760 20 22 2d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20   "-");..        
10770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10790 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107c0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
107d0 20 6b 6c 61 73 73 3b 0d 0a 20 20 20 20 20 20 20   klass;..       
107e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10800 20 20 20 20 20 63 61 73 65 20 22 5c 5c 22 3a 0d       case "\\":.
10810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10840 20 63 20 3d 20 73 2e 63 68 61 72 41 74 28 6c 29   c = s.charAt(l)
10850 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10880 20 20 20 69 66 20 28 63 20 3c 20 22 20 22 29 20     if (c < " ") 
10890 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
108a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
108b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
108c0 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41 74         warningAt
108d0 28 0d 0a 22 55 6e 65 78 70 65 63 74 65 64 20 63  (.."Unexpected c
108e0 6f 6e 74 72 6f 6c 20 63 68 61 72 61 63 74 65 72  ontrol character
108f0 20 69 6e 20 72 65 67 75 6c 61 72 20 65 78 70 72   in regular expr
10900 65 73 73 69 6f 6e 2e 22 2c 20 6c 69 6e 65 2c 20  ession.", line, 
10910 66 72 6f 6d 20 2b 20 6c 29 3b 0d 0a 20 20 20 20  from + l);..    
10920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10940 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
10950 73 65 20 69 66 20 28 63 20 3d 3d 3d 20 22 3c 22  se if (c === "<"
10960 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
10970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10990 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
109a0 41 74 28 0d 0a 22 55 6e 65 78 70 65 63 74 65 64  At(.."Unexpected
109b0 20 65 73 63 61 70 65 64 20 63 68 61 72 61 63 74   escaped charact
109c0 65 72 20 27 7b 61 7d 27 20 69 6e 20 72 65 67 75  er '{a}' in regu
109d0 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 22  lar expression."
109e0 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c  , line, from + l
109f0 2c 20 63 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , c);..         
10a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a50 20 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31            l += 1
10a60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
10a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a90 20 20 20 20 20 2f 2f 20 5c 77 2c 20 5c 73 20 61       // \w, \s a
10aa0 6e 64 20 5c 64 20 61 72 65 20 6e 65 76 65 72 20  nd \d are never 
10ab0 70 61 72 74 20 6f 66 20 61 20 63 68 61 72 61 63  part of a charac
10ac0 74 65 72 20 72 61 6e 67 65 0d 0a 20 20 20 20 20  ter range..     
10ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10af0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 2f             if (/
10b00 5b 77 73 64 5d 2f 69 2e 74 65 73 74 28 63 29 29  [wsd]/i.test(c))
10b10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 20 20 20 20 20 20 20 20 69 66 20 28 69 73 49 6e          if (isIn
10b50 52 61 6e 67 65 29 20 7b 0d 0a 20 20 20 20 20 20  Range) {..      
10b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b90 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65    warningAt("Une
10ba0 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 0d  scaped '{a}'.",.
10bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10be0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e               lin
10bf0 65 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20 22 2d 22  e, from + l, "-"
10c00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c30 20 20 20 20 20 20 20 20 20 20 20 20 69 73 49 6e              isIn
10c40 52 61 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a  Range = false;..
10c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c80 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cb0 20 20 20 20 20 20 20 20 20 20 20 69 73 4c 69 74             isLit
10cc0 65 72 61 6c 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  eral = false;.. 
10cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10d00 20 65 6c 73 65 20 69 66 20 28 69 73 49 6e 52 61   else if (isInRa
10d10 6e 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  nge) {..        
10d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d40 20 20 20 20 20 20 20 20 20 20 20 20 69 73 49 6e              isIn
10d50 52 61 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a  Range = false;..
10d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d90 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
10da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73                is
10dd0 4c 69 74 65 72 61 6c 20 3d 20 74 72 75 65 3b 0d  Literal = true;.
10de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e40 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
10e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e70 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 22          case "/"
10e80 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
10e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10eb0 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 55 6e     warningAt("Un
10ec0 65 73 63 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c  escaped '{a}'.",
10ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f00 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 20            line, 
10f10 66 72 6f 6d 20 2b 20 6c 20 2d 20 31 2c 20 22 2f  from + l - 1, "/
10f20 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
10f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f50 20 20 20 20 20 20 20 69 66 20 28 69 73 49 6e 52         if (isInR
10f60 61 6e 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  ange) {..       
10f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 49               isI
10fa0 6e 52 61 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d  nRange = false;.
10fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fe0 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
10ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
11020 73 4c 69 74 65 72 61 6c 20 3d 20 74 72 75 65 3b  sLiteral = true;
11030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11060 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
11070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11090 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
110a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110c0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 3c           case "<
110d0 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
110e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11100 20 20 20 20 69 66 20 28 69 73 49 6e 52 61 6e 67      if (isInRang
11110 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  e) {..          
11120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11140 20 20 20 20 20 20 20 20 20 20 69 73 49 6e 52 61            isInRa
11150 6e 67 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  nge = false;..  
11160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
11190 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
111a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
111b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
111c0 20 20 20 20 20 20 20 20 20 20 20 20 69 73 4c 69              isLi
111d0 74 65 72 61 6c 20 3d 20 74 72 75 65 3b 0d 0a 20  teral = true;.. 
111e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
111f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
11210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11240 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
11250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11270 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
11280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
112a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
112b0 69 66 20 28 69 73 49 6e 52 61 6e 67 65 29 20 7b  if (isInRange) {
112c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
112d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
112e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
112f0 20 20 20 20 20 20 69 73 49 6e 52 61 6e 67 65 20        isInRange 
11300 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
11310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11330 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
11340 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11370 20 20 20 20 20 20 20 20 69 73 4c 69 74 65 72 61          isLitera
11380 6c 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  l = true;..     
11390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
113c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
113f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11410 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 63 29       } while (c)
11420 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11440 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
11450 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11470 20 20 20 20 20 20 20 63 61 73 65 20 22 2e 22 3a         case ".":
11480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
114b0 74 69 6f 6e 2e 72 65 67 65 78 70 29 20 7b 0d 0a  tion.regexp) {..
114c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114e0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
114f0 69 6e 67 41 74 28 22 49 6e 73 65 63 75 72 65 20  ingAt("Insecure 
11500 27 7b 61 7d 27 2e 22 2c 20 6c 69 6e 65 2c 0d 0a  '{a}'.", line,..
11510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11540 20 20 20 20 66 72 6f 6d 20 2b 20 6c 2c 20 63 29      from + l, c)
11550 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115a0 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20        break;..  
115b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115d0 20 20 63 61 73 65 20 22 5d 22 3a 0d 0a 20 20 20    case "]":..   
115e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11600 20 63 61 73 65 20 22 3f 22 3a 0d 0a 20 20 20 20   case "?":..    
11610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11630 63 61 73 65 20 22 7b 22 3a 0d 0a 20 20 20 20 20  case "{":..     
11640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
11660 61 73 65 20 22 7d 22 3a 0d 0a 20 20 20 20 20 20  ase "}":..      
11670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
11690 73 65 20 22 2b 22 3a 0d 0a 20 20 20 20 20 20 20  se "+":..       
116a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116b0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
116c0 65 20 22 2a 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "*":..        
116d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116f0 77 61 72 6e 69 6e 67 41 74 28 22 55 6e 65 73 63  warningAt("Unesc
11700 61 70 65 64 20 27 7b 61 7d 27 2e 22 2c 20 6c 69  aped '{a}'.", li
11710 6e 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne,..           
11720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11740 20 20 20 20 20 66 72 6f 6d 20 2b 20 6c 2c 20 63       from + l, c
11750 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
11760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11770 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
117a0 66 20 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20  f (b) {..       
117b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
117c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
117d0 20 73 77 69 74 63 68 20 28 73 2e 63 68 61 72 41   switch (s.charA
117e0 74 28 6c 29 29 20 7b 0d 0a 20 20 20 20 20 20 20  t(l)) {..       
117f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11810 20 63 61 73 65 20 22 3f 22 3a 0d 0a 20 20 20 20   case "?":..    
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11840 20 20 20 20 63 61 73 65 20 22 2b 22 3a 0d 0a 20      case "+":.. 
11850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11870 20 20 20 20 20 20 20 63 61 73 65 20 22 2a 22 3a         case "*":
11880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 20                l 
118b0 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  += 1;..         
118c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118e0 20 20 20 69 66 20 28 73 2e 63 68 61 72 41 74 28     if (s.charAt(
118f0 6c 29 20 3d 3d 3d 20 22 3f 22 29 20 7b 0d 0a 20  l) === "?") {.. 
11900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
11930 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20   += 1;..        
11940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11960 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
11970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11990 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119c0 20 20 20 63 61 73 65 20 22 7b 22 3a 0d 0a 20 20     case "{":..  
119d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119f0 20 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31            l += 1
11a00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
11a30 20 3d 20 73 2e 63 68 61 72 41 74 28 6c 29 3b 0d   = s.charAt(l);.
11a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11a70 28 63 20 3c 20 22 30 22 20 7c 7c 20 63 20 3e 20  (c < "0" || c > 
11a80 22 39 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  "9") {..        
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ab0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 41          warningA
11ac0 74 28 0d 0a 22 45 78 70 65 63 74 65 64 20 61 20  t(.."Expected a 
11ad0 6e 75 6d 62 65 72 20 61 6e 64 20 69 6e 73 74 65  number and inste
11ae0 61 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c 20  ad saw '{a}'.", 
11af0 6c 69 6e 65 2c 20 66 72 6f 6d 20 2b 20 6c 2c 20  line, from + l, 
11b00 63 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c);..           
11b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b60 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20  l += 1;..       
11b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b90 20 20 20 20 20 6c 6f 77 20 3d 20 2b 63 3b 0d 0a       low = +c;..
11ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11bc0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
11bd0 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  (;;) {..        
11be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c00 20 20 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68          c = s.ch
11c10 61 72 41 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20  arAt(l);..      
11c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 20            if (c 
11c50 3c 20 22 30 22 20 7c 7c 20 63 20 3e 20 22 39 22  < "0" || c > "9"
11c60 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
11c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c90 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
11ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11cd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d00 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20 20 20      l += 1;..   
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d30 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 77               low
11d40 20 3d 20 2b 63 20 2b 20 28 6c 6f 77 20 2a 20 31   = +c + (low * 1
11d50 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0);..           
11d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11db0 68 69 67 68 20 3d 20 6c 6f 77 3b 0d 0a 20 20 20  high = low;..   
11dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11de0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3d           if (c =
11df0 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20  == ",") {..     
11e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e20 20 20 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20             l += 
11e30 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
11e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e60 20 20 20 20 68 69 67 68 20 3d 20 49 6e 66 69 6e      high = Infin
11e70 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ity;..          
11e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ea0 20 20 20 20 20 20 63 20 3d 20 73 2e 63 68 61 72        c = s.char
11eb0 41 74 28 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  At(l);..        
11ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ee0 20 20 20 20 20 20 20 20 69 66 20 28 63 20 3e 3d          if (c >=
11ef0 20 22 30 22 20 26 26 20 63 20 3c 3d 20 22 39 22   "0" && c <= "9"
11f00 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
11f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f30 20 20 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b           l += 1;
11f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f70 20 20 20 20 20 20 68 69 67 68 20 3d 20 2b 63 3b        high = +c;
11f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fb0 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b        for (;;) {
11fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ff0 20 20 20 20 20 20 20 20 20 20 63 20 3d 20 73 2e            c = s.
12000 63 68 61 72 41 74 28 6c 29 3b 0d 0a 20 20 20 20  charAt(l);..    
12010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12040 20 20 20 20 69 66 20 28 63 20 3c 20 22 30 22 20      if (c < "0" 
12050 7c 7c 20 63 20 3e 20 22 39 22 29 20 7b 0d 0a 20  || c > "9") {.. 
12060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12090 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
120a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
120b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12110 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a 20        l += 1;.. 
12120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12150 20 20 20 20 20 20 20 68 69 67 68 20 3d 20 2b 63         high = +c
12160 20 2b 20 28 68 69 67 68 20 2a 20 31 30 29 3b 0d   + (high * 10);.
12170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
121b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
121e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12200 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12230 20 20 20 20 20 20 69 66 20 28 73 2e 63 68 61 72        if (s.char
12240 41 74 28 6c 29 20 21 3d 3d 20 22 7d 22 29 20 7b  At(l) !== "}") {
12250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12280 20 20 77 61 72 6e 69 6e 67 41 74 28 0d 0a 22 45    warningAt(.."E
12290 78 70 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e  xpected '{a}' an
122a0 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b  d instead saw '{
122b0 62 7d 27 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f  b}'.", line, fro
122c0 6d 20 2b 20 6c 2c 20 22 7d 22 2c 20 63 29 3b 0d  m + l, "}", c);.
122d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
122e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
12300 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
12310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12330 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a         l += 1;..
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12360 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12390 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
123a0 2e 63 68 61 72 41 74 28 6c 29 20 3d 3d 3d 20 22  .charAt(l) === "
123b0 3f 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ?") {..         
123c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123e0 20 20 20 20 20 20 20 6c 20 2b 3d 20 31 3b 0d 0a         l += 1;..
123f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12410 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12440 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
12450 6f 77 20 3e 20 68 69 67 68 29 20 7b 0d 0a 20 20  ow > high) {..  
12460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
12490 72 6e 69 6e 67 41 74 28 0d 0a 22 27 7b 61 7d 27  rningAt(.."'{a}'
124a0 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 67   should not be g
124b0 72 65 61 74 65 72 20 74 68 61 6e 20 27 7b 62 7d  reater than '{b}
124c0 27 2e 22 2c 20 6c 69 6e 65 2c 20 66 72 6f 6d 20  '.", line, from 
124d0 2b 20 6c 2c 20 6c 6f 77 2c 20 68 69 67 68 29 3b  + l, low, high);
124e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
124f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12530 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12560 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12580 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125a0 20 20 20 20 20 20 63 20 3d 20 73 2e 73 75 62 73        c = s.subs
125b0 74 72 28 30 2c 20 6c 20 2d 20 31 29 3b 0d 0a 20  tr(0, l - 1);.. 
125c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
125e0 68 61 72 61 63 74 65 72 20 2b 3d 20 6c 3b 0d 0a  haracter += l;..
125f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12610 73 20 3d 20 73 2e 73 75 62 73 74 72 28 6c 29 3b  s = s.substr(l);
12620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12640 20 20 72 65 74 75 72 6e 20 69 74 28 22 28 72 65    return it("(re
12650 67 65 78 70 29 22 2c 20 63 29 3b 0d 0a 20 20 20  gexp)", c);..   
12660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12670 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12690 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69          return i
126a0 74 28 22 28 70 75 6e 63 74 75 61 74 6f 72 29 22  t("(punctuator)"
126b0 2c 20 74 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20  , t);....    // 
126c0 20 20 20 20 20 70 75 6e 63 74 75 61 74 6f 72 0d       punctuator.
126d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
126e0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
126f0 22 23 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "#":..          
12700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12710 20 20 72 65 74 75 72 6e 20 69 74 28 22 28 70 75    return it("(pu
12720 6e 63 74 75 61 74 6f 72 29 22 2c 20 74 29 3b 0d  nctuator)", t);.
12730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12740 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
12750 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
12760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12770 65 74 75 72 6e 20 69 74 28 22 28 70 75 6e 63 74  eturn it("(punct
12780 75 61 74 6f 72 29 22 2c 20 74 29 3b 0d 0a 20 20  uator)", t);..  
12790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
127c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
127e0 0d 0a 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20  ..        };..  
127f0 20 20 7d 28 29 29 3b 0d 0a 0d 0a 0d 0a 20 20 20    }());......   
12800 20 66 75 6e 63 74 69 6f 6e 20 61 64 64 6c 61 62   function addlab
12810 65 6c 28 74 2c 20 74 79 70 65 2c 20 74 6f 6b 65  el(t, type, toke
12820 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66  n) {..        if
12830 20 28 74 20 3d 3d 3d 20 22 68 61 73 4f 77 6e 50   (t === "hasOwnP
12840 72 6f 70 65 72 74 79 22 29 20 7b 0d 0a 20 20 20  roperty") {..   
12850 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
12860 28 22 27 68 61 73 4f 77 6e 50 72 6f 70 65 72 74  ("'hasOwnPropert
12870 79 27 20 69 73 20 61 20 72 65 61 6c 6c 79 20 62  y' is a really b
12880 61 64 20 6e 61 6d 65 2e 22 29 3b 0d 0a 20 20 20  ad name.");..   
12890 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
128a0 20 20 2f 2f 20 44 65 66 69 6e 65 20 74 20 69 6e    // Define t in
128b0 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 75 6e   the current fun
128c0 63 74 69 6f 6e 20 69 6e 20 74 68 65 20 63 75 72  ction in the cur
128d0 72 65 6e 74 20 73 63 6f 70 65 2e 0d 0a 20 20 20  rent scope...   
128e0 20 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28       if (is_own(
128f0 66 75 6e 63 74 2c 20 74 29 20 26 26 20 21 66 75  funct, t) && !fu
12900 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22 5d 29  nct["(global)"])
12910 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12920 69 66 20 28 66 75 6e 63 74 5b 74 5d 20 3d 3d 3d  if (funct[t] ===
12930 20 74 72 75 65 29 20 7b 0d 0a 20 20 20 20 20 20   true) {..      
12940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
12950 74 69 6f 6e 2e 6c 61 74 65 64 65 66 29 0d 0a 20  tion.latedef).. 
12960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12970 20 20 20 77 61 72 6e 69 6e 67 28 22 27 7b 61 7d     warning("'{a}
12980 27 20 77 61 73 20 75 73 65 64 20 62 65 66 6f 72  ' was used befor
12990 65 20 69 74 20 77 61 73 20 64 65 66 69 6e 65 64  e it was defined
129a0 2e 22 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 74  .", nexttoken, t
129b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
129c0 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
129d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f            if (!o
129e0 70 74 69 6f 6e 2e 73 68 61 64 6f 77 20 26 26 20  ption.shadow && 
129f0 74 79 70 65 20 21 3d 3d 20 22 65 78 63 65 70 74  type !== "except
12a00 69 6f 6e 22 29 0d 0a 20 20 20 20 20 20 20 20 20  ion")..         
12a10 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
12a20 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 61 6c 72  ng("'{a}' is alr
12a30 65 61 64 79 20 64 65 66 69 6e 65 64 2e 22 2c 20  eady defined.", 
12a40 6e 65 78 74 74 6f 6b 65 6e 2c 20 74 29 3b 0d 0a  nexttoken, t);..
12a50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12a60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a70 20 20 20 20 66 75 6e 63 74 5b 74 5d 20 3d 20 74      funct[t] = t
12a80 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ype;....        
12a90 69 66 20 28 74 6f 6b 65 6e 29 20 7b 0d 0a 20 20  if (token) {..  
12aa0 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b            funct[
12ab0 22 28 74 6f 6b 65 6e 73 29 22 5d 5b 74 5d 20 3d  "(tokens)"][t] =
12ac0 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20   token;..       
12ad0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66   }....        if
12ae0 20 28 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61 6c   (funct["(global
12af0 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  )"]) {..        
12b00 20 20 20 20 67 6c 6f 62 61 6c 5b 74 5d 20 3d 20      global[t] = 
12b10 66 75 6e 63 74 3b 0d 0a 20 20 20 20 20 20 20 20  funct;..        
12b20 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 69      if (is_own(i
12b30 6d 70 6c 69 65 64 2c 20 74 29 29 20 7b 0d 0a 20  mplied, t)) {.. 
12b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
12b50 66 20 28 6f 70 74 69 6f 6e 2e 6c 61 74 65 64 65  f (option.latede
12b60 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
12b70 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
12b80 22 27 7b 61 7d 27 20 77 61 73 20 75 73 65 64 20  "'{a}' was used 
12b90 62 65 66 6f 72 65 20 69 74 20 77 61 73 20 64 65  before it was de
12ba0 66 69 6e 65 64 2e 22 2c 20 6e 65 78 74 74 6f 6b  fined.", nexttok
12bb0 65 6e 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20  en, t);..       
12bc0 20 20 20 20 20 20 20 20 20 64 65 6c 65 74 65 20           delete 
12bd0 69 6d 70 6c 69 65 64 5b 74 5d 3b 0d 0a 20 20 20  implied[t];..   
12be0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12bf0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
12c00 20 20 20 20 20 20 20 20 20 20 73 63 6f 70 65 5b            scope[
12c10 74 5d 20 3d 20 66 75 6e 63 74 3b 0d 0a 20 20 20  t] = funct;..   
12c20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
12c30 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  ...    function 
12c40 64 6f 4f 70 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  doOption() {..  
12c50 20 20 20 20 20 20 76 61 72 20 6e 74 20 3d 20 6e        var nt = n
12c60 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20  exttoken;..     
12c70 20 20 20 76 61 72 20 6f 20 20 3d 20 6e 74 2e 76     var o  = nt.v
12c80 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 76  alue;..        v
12c90 61 72 20 71 75 6f 74 6d 61 72 6b 56 61 6c 75 65  ar quotmarkValue
12ca0 20 3d 20 6f 70 74 69 6f 6e 2e 71 75 6f 74 6d 61   = option.quotma
12cb0 72 6b 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  rk;..        var
12cc0 20 70 72 65 64 65 66 20 3d 20 7b 7d 3b 0d 0a 20   predef = {};.. 
12cd0 20 20 20 20 20 20 20 76 61 72 20 62 2c 20 6f 62         var b, ob
12ce0 6a 2c 20 66 69 6c 74 65 72 2c 20 74 2c 20 74 6e  j, filter, t, tn
12cf0 2c 20 76 2c 20 6d 69 6e 75 73 3b 0d 0a 0d 0a 20  , v, minus;.... 
12d00 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6f         switch (o
12d10 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 73  ) {..        cas
12d20 65 20 22 2a 2f 22 3a 0d 0a 20 20 20 20 20 20 20  e "*/":..       
12d30 20 20 20 20 20 65 72 72 6f 72 28 22 55 6e 62 65       error("Unbe
12d40 67 75 6e 20 63 6f 6d 6d 65 6e 74 2e 22 29 3b 0d  gun comment.");.
12d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65  .            bre
12d60 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73  ak;..        cas
12d70 65 20 22 2f 2a 6d 65 6d 62 65 72 73 22 3a 0d 0a  e "/*members":..
12d80 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 2a          case "/*
12d90 6d 65 6d 62 65 72 22 3a 0d 0a 20 20 20 20 20 20  member":..      
12da0 20 20 20 20 20 20 6f 20 3d 20 22 2f 2a 6d 65 6d        o = "/*mem
12db0 62 65 72 73 22 3b 0d 0a 20 20 20 20 20 20 20 20  bers";..        
12dc0 20 20 20 20 69 66 20 28 21 6d 65 6d 62 65 72 73      if (!members
12dd0 4f 6e 6c 79 29 20 7b 0d 0a 20 20 20 20 20 20 20  Only) {..       
12de0 20 20 20 20 20 20 20 20 20 6d 65 6d 62 65 72 73           members
12df0 4f 6e 6c 79 20 3d 20 7b 7d 3b 0d 0a 20 20 20 20  Only = {};..    
12e00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12e10 20 20 20 20 20 20 20 6f 62 6a 20 3d 20 6d 65 6d         obj = mem
12e20 62 65 72 73 4f 6e 6c 79 3b 0d 0a 20 20 20 20 20  bersOnly;..     
12e30 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e 71 75         option.qu
12e40 6f 74 6d 61 72 6b 20 3d 20 66 61 6c 73 65 3b 0d  otmark = false;.
12e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65  .            bre
12e60 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73  ak;..        cas
12e70 65 20 22 2f 2a 6a 73 68 69 6e 74 22 3a 0d 0a 20  e "/*jshint":.. 
12e80 20 20 20 20 20 20 20 63 61 73 65 20 22 2f 2a 6a         case "/*j
12e90 73 6c 69 6e 74 22 3a 0d 0a 20 20 20 20 20 20 20  slint":..       
12ea0 20 20 20 20 20 6f 62 6a 20 3d 20 6f 70 74 69 6f       obj = optio
12eb0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
12ec0 66 69 6c 74 65 72 20 3d 20 62 6f 6f 6c 4f 70 74  filter = boolOpt
12ed0 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 20  ions;..         
12ee0 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
12ef0 20 20 20 63 61 73 65 20 22 2f 2a 67 6c 6f 62 61     case "/*globa
12f00 6c 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l":..           
12f10 20 6f 62 6a 20 3d 20 70 72 65 64 65 66 3b 0d 0a   obj = predef;..
12f20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
12f30 6b 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61  k;..        defa
12f40 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ult:..          
12f50 20 20 65 72 72 6f 72 28 22 57 68 61 74 3f 22 29    error("What?")
12f60 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
12f70 20 20 20 20 20 20 20 20 74 20 3d 20 6c 65 78 2e          t = lex.
12f80 74 6f 6b 65 6e 28 29 3b 0d 0a 6c 6f 6f 70 3a 20  token();..loop: 
12f90 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20    for (;;) {..  
12fa0 20 20 20 20 20 20 20 20 20 20 6d 69 6e 75 73 20            minus 
12fb0 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
12fc0 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b        for (;;) {
12fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12fe0 20 20 69 66 20 28 74 2e 74 79 70 65 20 3d 3d 3d    if (t.type ===
12ff0 20 22 73 70 65 63 69 61 6c 22 20 26 26 20 74 2e   "special" && t.
13000 76 61 6c 75 65 20 3d 3d 3d 20 22 2a 2f 22 29 20  value === "*/") 
13010 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13020 20 20 20 20 20 20 20 62 72 65 61 6b 20 6c 6f 6f         break loo
13030 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
13040 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13050 20 20 20 20 20 20 20 69 66 20 28 74 2e 69 64 20         if (t.id 
13060 21 3d 3d 20 22 28 65 6e 64 6c 69 6e 65 29 22 20  !== "(endline)" 
13070 26 26 20 74 2e 69 64 20 21 3d 3d 20 22 2c 22 29  && t.id !== ",")
13080 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13090 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
130a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
130c0 20 20 20 74 20 3d 20 6c 65 78 2e 74 6f 6b 65 6e     t = lex.token
130d0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
130e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
130f0 20 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f 2a 67    if (o === "/*g
13100 6c 6f 62 61 6c 22 20 26 26 20 74 2e 76 61 6c 75  lobal" && t.valu
13110 65 20 3d 3d 3d 20 22 2d 22 29 20 7b 0d 0a 20 20  e === "-") {..  
13120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69                mi
13130 6e 75 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  nus = true;..   
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 74 20 3d               t =
13150 20 6c 65 78 2e 74 6f 6b 65 6e 28 29 3b 0d 0a 20   lex.token();.. 
13160 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
13170 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13180 74 2e 74 79 70 65 20 21 3d 3d 20 22 28 73 74 72  t.type !== "(str
13190 69 6e 67 29 22 20 26 26 20 74 2e 74 79 70 65 20  ing)" && t.type 
131a0 21 3d 3d 20 22 28 69 64 65 6e 74 69 66 69 65 72  !== "(identifier
131b0 29 22 20 26 26 20 6f 20 21 3d 3d 20 22 2f 2a 6d  )" && o !== "/*m
131c0 65 6d 62 65 72 73 22 29 20 7b 0d 0a 20 20 20 20  embers") {..    
131d0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
131e0 72 28 22 42 61 64 20 6f 70 74 69 6f 6e 2e 22 2c  r("Bad option.",
131f0 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   t);..          
13200 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13210 20 20 20 76 20 3d 20 6c 65 78 2e 74 6f 6b 65 6e     v = lex.token
13220 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
13230 20 69 66 20 28 76 2e 69 64 20 3d 3d 3d 20 22 3a   if (v.id === ":
13240 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
13250 20 20 20 20 20 20 76 20 3d 20 6c 65 78 2e 74 6f        v = lex.to
13260 6b 65 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ken();....      
13270 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 62            if (ob
13280 6a 20 3d 3d 3d 20 6d 65 6d 62 65 72 73 4f 6e 6c  j === membersOnl
13290 79 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  y) {..          
132a0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28            error(
132b0 22 45 78 70 65 63 74 65 64 20 27 7b 61 7d 27 20  "Expected '{a}' 
132c0 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20  and instead saw 
132d0 27 7b 62 7d 27 2e 22 2c 20 74 2c 20 22 2a 2f 22  '{b}'.", t, "*/"
132e0 2c 20 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20  , ":");..       
132f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
13300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13310 20 28 6f 20 3d 3d 3d 20 22 2f 2a 6a 73 68 69 6e   (o === "/*jshin
13320 74 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  t") {..         
13330 20 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b             check
13340 4f 70 74 69 6f 6e 28 74 2e 76 61 6c 75 65 2c 20  Option(t.value, 
13350 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
13360 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13370 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 2e            if (t.
13380 76 61 6c 75 65 20 3d 3d 3d 20 22 69 6e 64 65 6e  value === "inden
13390 74 22 20 26 26 20 28 6f 20 3d 3d 3d 20 22 2f 2a  t" && (o === "/*
133a0 6a 73 68 69 6e 74 22 20 7c 7c 20 6f 20 3d 3d 3d  jshint" || o ===
133b0 20 22 2f 2a 6a 73 6c 69 6e 74 22 29 29 20 7b 0d   "/*jslint")) {.
133c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
133d0 20 20 20 20 20 62 20 3d 20 2b 76 2e 76 61 6c 75       b = +v.valu
133e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
133f0 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
13400 6f 66 20 62 20 21 3d 3d 20 22 6e 75 6d 62 65 72  of b !== "number
13410 22 20 7c 7c 20 21 69 73 46 69 6e 69 74 65 28 62  " || !isFinite(b
13420 29 20 7c 7c 20 62 20 3c 3d 20 30 20 7c 7c 0d 0a  ) || b <= 0 ||..
13430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13440 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 74 68              Math
13450 2e 66 6c 6f 6f 72 28 62 29 20 21 3d 3d 20 62 29  .floor(b) !== b)
13460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13470 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
13480 72 28 22 45 78 70 65 63 74 65 64 20 61 20 73 6d  r("Expected a sm
13490 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 6e 64 20  all integer and 
134a0 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 61 7d  instead saw '{a}
134b0 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  '.",..          
134c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134d0 20 20 20 20 20 20 76 2c 20 76 2e 76 61 6c 75 65        v, v.value
134e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
134f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
13510 62 6a 2e 77 68 69 74 65 20 3d 20 74 72 75 65 3b  bj.white = true;
13520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13530 20 20 20 20 20 20 6f 62 6a 2e 69 6e 64 65 6e 74        obj.indent
13540 20 3d 20 62 3b 0d 0a 20 20 20 20 20 20 20 20 20   = b;..         
13550 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
13560 20 28 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 6d   (t.value === "m
13570 61 78 65 72 72 22 20 26 26 20 28 6f 20 3d 3d 3d  axerr" && (o ===
13580 20 22 2f 2a 6a 73 68 69 6e 74 22 20 7c 7c 20 6f   "/*jshint" || o
13590 20 3d 3d 3d 20 22 2f 2a 6a 73 6c 69 6e 74 22 29   === "/*jslint")
135a0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
135b0 20 20 20 20 20 20 20 20 20 62 20 3d 20 2b 76 2e           b = +v.
135c0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
135d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
135e0 74 79 70 65 6f 66 20 62 20 21 3d 3d 20 22 6e 75  typeof b !== "nu
135f0 6d 62 65 72 22 20 7c 7c 20 21 69 73 46 69 6e 69  mber" || !isFini
13600 74 65 28 62 29 20 7c 7c 20 62 20 3c 3d 20 30 20  te(b) || b <= 0 
13610 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
13620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13630 4d 61 74 68 2e 66 6c 6f 6f 72 28 62 29 20 21 3d  Math.floor(b) !=
13640 3d 20 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  = b) {..        
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13660 65 72 72 6f 72 28 22 45 78 70 65 63 74 65 64 20  error("Expected 
13670 61 20 73 6d 61 6c 6c 20 69 6e 74 65 67 65 72 20  a small integer 
13680 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20  and instead saw 
13690 27 7b 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20  '{a}'.",..      
136a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136b0 20 20 20 20 20 20 20 20 20 20 76 2c 20 76 2e 76            v, v.v
136c0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
136d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
136e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136f0 20 20 20 6f 62 6a 2e 6d 61 78 65 72 72 20 3d 20     obj.maxerr = 
13700 62 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b;..            
13710 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74      } else if (t
13720 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 6d 61 78 6c  .value === "maxl
13730 65 6e 22 20 26 26 20 28 6f 20 3d 3d 3d 20 22 2f  en" && (o === "/
13740 2a 6a 73 68 69 6e 74 22 20 7c 7c 20 6f 20 3d 3d  *jshint" || o ==
13750 3d 20 22 2f 2a 6a 73 6c 69 6e 74 22 29 29 20 7b  = "/*jslint")) {
13760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13770 20 20 20 20 20 20 62 20 3d 20 2b 76 2e 76 61 6c        b = +v.val
13780 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
13790 20 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70           if (typ
137a0 65 6f 66 20 62 20 21 3d 3d 20 22 6e 75 6d 62 65  eof b !== "numbe
137b0 72 22 20 7c 7c 20 21 69 73 46 69 6e 69 74 65 28  r" || !isFinite(
137c0 62 29 20 7c 7c 20 62 20 3c 3d 20 30 20 7c 7c 0d  b) || b <= 0 ||.
137d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
137e0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 74               Mat
137f0 68 2e 66 6c 6f 6f 72 28 62 29 20 21 3d 3d 20 62  h.floor(b) !== b
13800 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
13810 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
13820 6f 72 28 22 45 78 70 65 63 74 65 64 20 61 20 73  or("Expected a s
13830 6d 61 6c 6c 20 69 6e 74 65 67 65 72 20 61 6e 64  mall integer and
13840 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 61   instead saw '{a
13850 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }'.",..         
13860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13870 20 20 20 20 20 20 20 76 2c 20 76 2e 76 61 6c 75         v, v.valu
13880 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
13890 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
138a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138b0 6f 62 6a 2e 6d 61 78 6c 65 6e 20 3d 20 62 3b 0d  obj.maxlen = b;.
138c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
138d0 20 7d 20 65 6c 73 65 20 69 66 20 28 74 2e 76 61   } else if (t.va
138e0 6c 75 65 20 3d 3d 3d 20 22 76 61 6c 69 64 74 68  lue === "validth
138f0 69 73 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  is") {..        
13900 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13910 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22  funct["(global)"
13920 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ]) {..          
13930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
13940 72 6f 72 28 22 4f 70 74 69 6f 6e 20 27 76 61 6c  ror("Option 'val
13950 69 64 74 68 69 73 27 20 63 61 6e 27 74 20 62 65  idthis' can't be
13960 20 75 73 65 64 20 69 6e 20 61 20 67 6c 6f 62 61   used in a globa
13970 6c 20 73 63 6f 70 65 2e 22 29 3b 0d 0a 20 20 20  l scope.");..   
13980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13990 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
139a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139b0 20 20 20 69 66 20 28 76 2e 76 61 6c 75 65 20 3d     if (v.value =
139c0 3d 3d 20 22 74 72 75 65 22 20 7c 7c 20 76 2e 76  == "true" || v.v
139d0 61 6c 75 65 20 3d 3d 3d 20 22 66 61 6c 73 65 22  alue === "false"
139e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
13a00 62 6a 5b 74 2e 76 61 6c 75 65 5d 20 3d 20 76 2e  bj[t.value] = v.
13a10 76 61 6c 75 65 20 3d 3d 3d 20 22 74 72 75 65 22  value === "true"
13a20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13a30 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
13a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a50 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
13a60 6f 72 28 22 42 61 64 20 6f 70 74 69 6f 6e 20 76  or("Bad option v
13a70 61 6c 75 65 2e 22 2c 20 76 29 3b 0d 0a 20 20 20  alue.", v);..   
13a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a90 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13aa0 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74      } else if (t
13ab0 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 71 75 6f 74  .value === "quot
13ac0 6d 61 72 6b 22 20 26 26 20 28 6f 20 3d 3d 3d 20  mark" && (o === 
13ad0 22 2f 2a 6a 73 68 69 6e 74 22 29 29 20 7b 0d 0a  "/*jshint")) {..
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13af0 20 20 20 20 73 77 69 74 63 68 20 28 76 2e 76 61      switch (v.va
13b00 6c 75 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  lue) {..        
13b10 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
13b20 20 22 74 72 75 65 22 3a 0d 0a 20 20 20 20 20 20   "true":..      
13b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b40 20 20 6f 62 6a 2e 71 75 6f 74 6d 61 72 6b 20 3d    obj.quotmark =
13b50 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b70 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
13b80 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
13b90 20 22 66 61 6c 73 65 22 3a 0d 0a 20 20 20 20 20   "false":..     
13ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bb0 20 20 20 6f 62 6a 2e 71 75 6f 74 6d 61 72 6b 20     obj.quotmark 
13bc0 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
13bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13be0 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
13bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
13c00 73 65 20 22 64 6f 75 62 6c 65 22 3a 0d 0a 20 20  se "double":..  
13c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c20 20 20 63 61 73 65 20 22 73 69 6e 67 6c 65 22 3a    case "single":
13c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c40 20 20 20 20 20 20 20 20 20 20 6f 62 6a 2e 71 75            obj.qu
13c50 6f 74 6d 61 72 6b 20 3d 20 76 2e 76 61 6c 75 65  otmark = v.value
13c60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13c70 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
13c80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13c90 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d         default:.
13ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13cb0 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22           error("
13cc0 42 61 64 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65  Bad option value
13cd0 2e 22 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20 20  .", v);..       
13ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d00 7d 20 65 6c 73 65 20 69 66 20 28 76 2e 76 61 6c  } else if (v.val
13d10 75 65 20 3d 3d 3d 20 22 74 72 75 65 22 20 7c 7c  ue === "true" ||
13d20 20 76 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 66 61   v.value === "fa
13d30 6c 73 65 22 29 20 7b 0d 0a 20 20 20 20 20 20 20  lse") {..       
13d40 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13d50 28 6f 20 3d 3d 3d 20 22 2f 2a 6a 73 6c 69 6e 74  (o === "/*jslint
13d60 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
13d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6e                tn
13d80 20 3d 20 72 65 6e 61 6d 65 64 4f 70 74 69 6f 6e   = renamedOption
13d90 73 5b 74 2e 76 61 6c 75 65 5d 20 7c 7c 20 74 2e  s[t.value] || t.
13da0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
13db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13dc0 6f 62 6a 5b 74 6e 5d 20 3d 20 76 2e 76 61 6c 75  obj[tn] = v.valu
13dd0 65 20 3d 3d 3d 20 22 74 72 75 65 22 3b 0d 0a 20  e === "true";.. 
13de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13df0 20 20 20 20 20 20 20 69 66 20 28 69 6e 76 65 72         if (inver
13e00 74 65 64 4f 70 74 69 6f 6e 73 5b 74 6e 5d 20 21  tedOptions[tn] !
13e10 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 7b 0d  == undefined) {.
13e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13e30 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
13e40 5b 74 6e 5d 20 3d 20 21 6f 62 6a 5b 74 6e 5d 3b  [tn] = !obj[tn];
13e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13e60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e80 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
13e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ea0 20 20 20 6f 62 6a 5b 74 2e 76 61 6c 75 65 5d 20     obj[t.value] 
13eb0 3d 20 76 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 74  = v.value === "t
13ec0 72 75 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue";..         
13ed0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
13ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ef0 20 20 20 20 69 66 20 28 74 2e 76 61 6c 75 65 20      if (t.value 
13f00 3d 3d 3d 20 22 6e 65 77 63 61 70 22 29 0d 0a 20  === "newcap").. 
13f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f20 20 20 20 20 20 20 20 6f 62 6a 5b 22 28 65 78 70         obj["(exp
13f30 6c 69 63 69 74 4e 65 77 63 61 70 29 22 5d 20 3d  licitNewcap)"] =
13f40 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
13f50 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
13f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13f70 20 20 20 20 20 20 65 72 72 6f 72 28 22 42 61 64        error("Bad
13f80 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65 2e 22 2c   option value.",
13f90 20 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   v);..          
13fa0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13fb0 20 20 20 20 20 20 20 20 20 74 20 3d 20 6c 65 78           t = lex
13fc0 2e 74 6f 6b 65 6e 28 29 3b 0d 0a 20 20 20 20 20  .token();..     
13fd0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d         } else {.
13fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ff0 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f 2a 6a 73   if (o === "/*js
14000 68 69 6e 74 22 20 7c 7c 20 6f 20 3d 3d 3d 20 22  hint" || o === "
14010 2f 2a 6a 73 6c 69 6e 74 22 29 20 7b 0d 0a 20 20  /*jslint") {..  
14020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14030 20 20 65 72 72 6f 72 28 22 4d 69 73 73 69 6e 67    error("Missing
14040 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65 2e 22 2c   option value.",
14050 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   t);..          
14060 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
14070 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 5b 74             obj[t
14080 2e 76 61 6c 75 65 5d 20 3d 20 66 61 6c 73 65 3b  .value] = false;
14090 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
140a0 20 20 20 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f      if (o === "/
140b0 2a 67 6c 6f 62 61 6c 22 20 26 26 20 6d 69 6e 75  *global" && minu
140c0 73 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d 0a 20  s === true) {.. 
140d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
140e0 20 20 20 4a 53 48 49 4e 54 2e 62 6c 61 63 6b 6c     JSHINT.blackl
140f0 69 73 74 5b 74 2e 76 61 6c 75 65 5d 20 3d 20 74  ist[t.value] = t
14100 2e 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  .value;..       
14110 20 20 20 20 20 20 20 20 20 20 20 20 20 75 70 64               upd
14120 61 74 65 50 72 65 64 65 66 69 6e 65 64 28 29 3b  atePredefined();
14130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14140 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
14150 20 20 20 20 20 20 20 74 20 3d 20 76 3b 0d 0a 20         t = v;.. 
14160 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
14170 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
14180 20 20 20 69 66 20 28 6f 20 3d 3d 3d 20 22 2f 2a     if (o === "/*
14190 6d 65 6d 62 65 72 73 22 29 20 7b 0d 0a 20 20 20  members") {..   
141a0 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e           option.
141b0 71 75 6f 74 6d 61 72 6b 20 3d 20 71 75 6f 74 6d  quotmark = quotm
141c0 61 72 6b 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  arkValue;..     
141d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
141e0 63 6f 6d 62 69 6e 65 28 70 72 65 64 65 66 69 6e  combine(predefin
141f0 65 64 2c 20 70 72 65 64 65 66 29 3b 0d 0a 0d 0a  ed, predef);....
14200 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72          for (var
14210 20 6b 65 79 20 69 6e 20 70 72 65 64 65 66 29 20   key in predef) 
14220 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
14230 66 20 28 69 73 5f 6f 77 6e 28 70 72 65 64 65 66  f (is_own(predef
14240 2c 20 6b 65 79 29 29 20 7b 0d 0a 20 20 20 20 20  , key)) {..     
14250 20 20 20 20 20 20 20 20 20 20 20 64 65 63 6c 61             decla
14260 72 65 64 5b 6b 65 79 5d 20 3d 20 6e 74 3b 0d 0a  red[key] = nt;..
14270 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
14280 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
14290 20 20 20 20 69 66 20 28 66 69 6c 74 65 72 29 20      if (filter) 
142a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61  {..            a
142b0 73 73 75 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20  ssume();..      
142c0 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a    }..    }......
142d0 2f 2f 20 57 65 20 6e 65 65 64 20 61 20 70 65 65  // We need a pee
142e0 6b 20 66 75 6e 63 74 69 6f 6e 2e 20 49 66 20 69  k function. If i
142f0 74 20 68 61 73 20 61 6e 20 61 72 67 75 6d 65 6e  t has an argumen
14300 74 2c 20 69 74 20 70 65 65 6b 73 20 74 68 61 74  t, it peeks that
14310 20 6d 75 63 68 20 66 61 72 74 68 65 72 0d 0a 2f   much farther../
14320 2f 20 61 68 65 61 64 2e 20 49 74 20 69 73 20 75  / ahead. It is u
14330 73 65 64 20 74 6f 20 64 69 73 74 69 6e 67 75 69  sed to distingui
14340 73 68 0d 0a 2f 2f 20 20 20 20 20 66 6f 72 20 28  sh..//     for (
14350 20 76 61 72 20 69 20 69 6e 20 2e 2e 2e 0d 0a 2f   var i in ...../
14360 2f 20 66 72 6f 6d 0d 0a 2f 2f 20 20 20 20 20 66  / from..//     f
14370 6f 72 20 28 20 76 61 72 20 69 20 3d 20 2e 2e 2e  or ( var i = ...
14380 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e  ....    function
14390 20 70 65 65 6b 28 70 29 20 7b 0d 0a 20 20 20 20   peek(p) {..    
143a0 20 20 20 20 76 61 72 20 69 20 3d 20 70 20 7c 7c      var i = p ||
143b0 20 30 2c 20 6a 20 3d 20 30 2c 20 74 3b 0d 0a 0d   0, j = 0, t;...
143c0 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28  .        while (
143d0 6a 20 3c 3d 20 69 29 20 7b 0d 0a 20 20 20 20 20  j <= i) {..     
143e0 20 20 20 20 20 20 20 74 20 3d 20 6c 6f 6f 6b 61         t = looka
143f0 68 65 61 64 5b 6a 5d 3b 0d 0a 20 20 20 20 20 20  head[j];..      
14400 20 20 20 20 20 20 69 66 20 28 21 74 29 20 7b 0d        if (!t) {.
14410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14420 20 74 20 3d 20 6c 6f 6f 6b 61 68 65 61 64 5b 6a   t = lookahead[j
14430 5d 20 3d 20 6c 65 78 2e 74 6f 6b 65 6e 28 29 3b  ] = lex.token();
14440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
14450 0a 20 20 20 20 20 20 20 20 20 20 20 20 6a 20 2b  .            j +
14460 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  = 1;..        }.
14470 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
14480 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 0d  t;..    }.......
14490 0a 2f 2f 20 50 72 6f 64 75 63 65 20 74 68 65 20  .// Produce the 
144a0 6e 65 78 74 20 74 6f 6b 65 6e 2e 20 49 74 20 6c  next token. It l
144b0 6f 6f 6b 73 20 66 6f 72 20 70 72 6f 67 72 61 6d  ooks for program
144c0 6d 69 6e 67 20 65 72 72 6f 72 73 2e 0d 0a 0d 0a  ming errors.....
144d0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 64 76      function adv
144e0 61 6e 63 65 28 69 64 2c 20 74 29 20 7b 0d 0a 20  ance(id, t) {.. 
144f0 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74         switch (t
14500 6f 6b 65 6e 2e 69 64 29 20 7b 0d 0a 20 20 20 20  oken.id) {..    
14510 20 20 20 20 63 61 73 65 20 22 28 6e 75 6d 62 65      case "(numbe
14520 72 29 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  r)":..          
14530 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e    if (nexttoken.
14540 69 64 20 3d 3d 3d 20 22 2e 22 29 20 7b 0d 0a 20  id === ".") {.. 
14550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
14560 61 72 6e 69 6e 67 28 22 41 20 64 6f 74 20 66 6f  arning("A dot fo
14570 6c 6c 6f 77 69 6e 67 20 61 20 6e 75 6d 62 65 72  llowing a number
14580 20 63 61 6e 20 62 65 20 63 6f 6e 66 75 73 65 64   can be confused
14590 20 77 69 74 68 20 61 20 64 65 63 69 6d 61 6c 20   with a decimal 
145a0 70 6f 69 6e 74 2e 22 2c 20 74 6f 6b 65 6e 29 3b  point.", token);
145b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
145c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65  .            bre
145d0 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73  ak;..        cas
145e0 65 20 22 2d 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "-":..        
145f0 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65      if (nexttoke
14600 6e 2e 69 64 20 3d 3d 3d 20 22 2d 22 20 7c 7c 20  n.id === "-" || 
14610 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d  nexttoken.id ===
14620 20 22 2d 2d 22 29 20 7b 0d 0a 20 20 20 20 20 20   "--") {..      
14630 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
14640 67 28 22 43 6f 6e 66 75 73 69 6e 67 20 6d 69 6e  g("Confusing min
14650 75 73 73 65 73 2e 22 29 3b 0d 0a 20 20 20 20 20  usses.");..     
14660 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14670 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20        break;..  
14680 20 20 20 20 20 20 63 61 73 65 20 22 2b 22 3a 0d        case "+":.
14690 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
146a0 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d  (nexttoken.id ==
146b0 3d 20 22 2b 22 20 7c 7c 20 6e 65 78 74 74 6f 6b  = "+" || nexttok
146c0 65 6e 2e 69 64 20 3d 3d 3d 20 22 2b 2b 22 29 20  en.id === "++") 
146d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
146e0 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e 66     warning("Conf
146f0 75 73 69 6e 67 20 70 6c 75 73 73 65 73 2e 22 29  using plusses.")
14700 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
14710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  ..            br
14720 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  eak;..        }.
14730 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  ...        if (t
14740 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d 3d 20 22 28  oken.type === "(
14750 73 74 72 69 6e 67 29 22 20 7c 7c 20 74 6f 6b 65  string)" || toke
14760 6e 2e 69 64 65 6e 74 69 66 69 65 72 29 20 7b 0d  n.identifier) {.
14770 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 6f  .            ano
14780 6e 6e 61 6d 65 20 3d 20 74 6f 6b 65 6e 2e 76 61  nname = token.va
14790 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
147a0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69  ...        if (i
147b0 64 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 69  d && nexttoken.i
147c0 64 20 21 3d 3d 20 69 64 29 20 7b 0d 0a 20 20 20  d !== id) {..   
147d0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 29 20           if (t) 
147e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
147f0 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e     if (nexttoken
14800 2e 69 64 20 3d 3d 3d 20 22 28 65 6e 64 29 22 29  .id === "(end)")
14810 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14820 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
14830 22 55 6e 6d 61 74 63 68 65 64 20 27 7b 61 7d 27  "Unmatched '{a}'
14840 2e 22 2c 20 74 2c 20 74 2e 69 64 29 3b 0d 0a 20  .", t, t.id);.. 
14850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
14860 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20   else {..       
14870 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
14880 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 20 27  ning("Expected '
14890 7b 61 7d 27 20 74 6f 20 6d 61 74 63 68 20 27 7b  {a}' to match '{
148a0 62 7d 27 20 66 72 6f 6d 20 6c 69 6e 65 20 7b 63  b}' from line {c
148b0 7d 20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61  } and instead sa
148c0 77 20 27 7b 64 7d 27 2e 22 2c 0d 0a 20 20 20 20  w '{d}'.",..    
148d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
148e0 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65          nexttoke
148f0 6e 2c 20 69 64 2c 20 74 2e 69 64 2c 20 74 2e 6c  n, id, t.id, t.l
14900 69 6e 65 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76  ine, nexttoken.v
14910 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
14920 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14930 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
14940 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 74 79 70 65   (nexttoken.type
14950 20 21 3d 3d 20 22 28 69 64 65 6e 74 69 66 69 65   !== "(identifie
14960 72 29 22 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  r)" ||..        
14970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14980 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61      nexttoken.va
14990 6c 75 65 20 21 3d 3d 20 69 64 29 20 7b 0d 0a 20  lue !== id) {.. 
149a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
149b0 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64  arning("Expected
149c0 20 27 7b 61 7d 27 20 61 6e 64 20 69 6e 73 74 65   '{a}' and inste
149d0 61 64 20 73 61 77 20 27 7b 62 7d 27 2e 22 2c 0d  ad saw '{b}'.",.
149e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
149f0 20 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b           nexttok
14a00 65 6e 2c 20 69 64 2c 20 6e 65 78 74 74 6f 6b 65  en, id, nexttoke
14a10 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  n.value);..     
14a20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14a30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70    }....        p
14a40 72 65 76 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e  revtoken = token
14a50 3b 0d 0a 20 20 20 20 20 20 20 20 74 6f 6b 65 6e  ;..        token
14a60 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20   = nexttoken;.. 
14a70 20 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20         for (;;) 
14a80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  {..            n
14a90 65 78 74 74 6f 6b 65 6e 20 3d 20 6c 6f 6f 6b 61  exttoken = looka
14aa0 68 65 61 64 2e 73 68 69 66 74 28 29 20 7c 7c 20  head.shift() || 
14ab0 6c 65 78 2e 74 6f 6b 65 6e 28 29 3b 0d 0a 20 20  lex.token();..  
14ac0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65            if (ne
14ad0 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22  xttoken.id === "
14ae0 28 65 6e 64 29 22 20 7c 7c 20 6e 65 78 74 74 6f  (end)" || nextto
14af0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 65 72 72  ken.id === "(err
14b00 6f 72 29 22 29 20 7b 0d 0a 20 20 20 20 20 20 20  or)") {..       
14b10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
14b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
14b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
14b40 28 6e 65 78 74 74 6f 6b 65 6e 2e 74 79 70 65 20  (nexttoken.type 
14b50 3d 3d 3d 20 22 73 70 65 63 69 61 6c 22 29 20 7b  === "special") {
14b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14b70 20 20 64 6f 4f 70 74 69 6f 6e 28 29 3b 0d 0a 20    doOption();.. 
14b80 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
14b90 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
14ba0 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b       if (nexttok
14bb0 65 6e 2e 69 64 20 21 3d 3d 20 22 28 65 6e 64 6c  en.id !== "(endl
14bc0 69 6e 65 29 22 29 20 7b 0d 0a 20 20 20 20 20 20  ine)") {..      
14bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
14be0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
14bf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14c00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14c10 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 2f 2f  }..    }......//
14c20 20 54 68 69 73 20 69 73 20 74 68 65 20 68 65 61   This is the hea
14c30 72 74 20 6f 66 20 4a 53 48 49 4e 54 2c 20 74 68  rt of JSHINT, th
14c40 65 20 50 72 61 74 74 20 70 61 72 73 65 72 2e 20  e Pratt parser. 
14c50 49 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 70  In addition to p
14c60 61 72 73 69 6e 67 2c 20 69 74 0d 0a 2f 2f 20 69  arsing, it..// i
14c70 73 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 64  s looking for ad
14c80 20 68 6f 63 20 6c 69 6e 74 20 70 61 74 74 65 72   hoc lint patter
14c90 6e 73 2e 20 57 65 20 61 64 64 20 2e 66 75 64 20  ns. We add .fud 
14ca0 74 6f 20 50 72 61 74 74 27 73 20 6d 6f 64 65 6c  to Pratt's model
14cb0 2c 20 77 68 69 63 68 20 69 73 0d 0a 2f 2f 20 6c  , which is..// l
14cc0 69 6b 65 20 2e 6e 75 64 20 65 78 63 65 70 74 20  ike .nud except 
14cd0 74 68 61 74 20 69 74 20 69 73 20 6f 6e 6c 79 20  that it is only 
14ce0 75 73 65 64 20 6f 6e 20 74 68 65 20 66 69 72 73  used on the firs
14cf0 74 20 74 6f 6b 65 6e 20 6f 66 20 61 20 73 74 61  t token of a sta
14d00 74 65 6d 65 6e 74 2e 0d 0a 2f 2f 20 48 61 76 69  tement...// Havi
14d10 6e 67 20 2e 66 75 64 20 6d 61 6b 65 73 20 69 74  ng .fud makes it
14d20 20 6d 75 63 68 20 65 61 73 69 65 72 20 74 6f 20   much easier to 
14d30 64 65 66 69 6e 65 20 73 74 61 74 65 6d 65 6e 74  define statement
14d40 2d 6f 72 69 65 6e 74 65 64 20 6c 61 6e 67 75 61  -oriented langua
14d50 67 65 73 20 6c 69 6b 65 0d 0a 2f 2f 20 4a 61 76  ges like..// Jav
14d60 61 53 63 72 69 70 74 2e 20 49 20 72 65 74 61 69  aScript. I retai
14d70 6e 65 64 20 50 72 61 74 74 27 73 20 6e 6f 6d 65  ned Pratt's nome
14d80 6e 63 6c 61 74 75 72 65 2e 0d 0a 0d 0a 2f 2f 20  nclature.....// 
14d90 2e 6e 75 64 20 20 20 20 20 4e 75 6c 6c 20 64 65  .nud     Null de
14da0 6e 6f 74 61 74 69 6f 6e 0d 0a 2f 2f 20 2e 66 75  notation..// .fu
14db0 64 20 20 20 20 20 46 69 72 73 74 20 6e 75 6c 6c  d     First null
14dc0 20 64 65 6e 6f 74 61 74 69 6f 6e 0d 0a 2f 2f 20   denotation..// 
14dd0 2e 6c 65 64 20 20 20 20 20 4c 65 66 74 20 64 65  .led     Left de
14de0 6e 6f 74 61 74 69 6f 6e 0d 0a 2f 2f 20 20 6c 62  notation..//  lb
14df0 70 20 20 20 20 20 4c 65 66 74 20 62 69 6e 64 69  p     Left bindi
14e00 6e 67 20 70 6f 77 65 72 0d 0a 2f 2f 20 20 72 62  ng power..//  rb
14e10 70 20 20 20 20 20 52 69 67 68 74 20 62 69 6e 64  p     Right bind
14e20 69 6e 67 20 70 6f 77 65 72 0d 0a 0d 0a 2f 2f 20  ing power....// 
14e30 54 68 65 79 20 61 72 65 20 65 6c 65 6d 65 6e 74  They are element
14e40 73 20 6f 66 20 74 68 65 20 70 61 72 73 69 6e 67  s of the parsing
14e50 20 6d 65 74 68 6f 64 20 63 61 6c 6c 65 64 20 54   method called T
14e60 6f 70 20 44 6f 77 6e 20 4f 70 65 72 61 74 6f 72  op Down Operator
14e70 20 50 72 65 63 65 64 65 6e 63 65 2e 0d 0a 0d 0a   Precedence.....
14e80 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 65 78 70      function exp
14e90 72 65 73 73 69 6f 6e 28 72 62 70 2c 20 69 6e 69  ression(rbp, ini
14ea0 74 69 61 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20  tial) {..       
14eb0 20 76 61 72 20 6c 65 66 74 2c 20 69 73 41 72 72   var left, isArr
14ec0 61 79 20 3d 20 66 61 6c 73 65 2c 20 69 73 4f 62  ay = false, isOb
14ed0 6a 65 63 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  ject = false;...
14ee0 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78  .        if (nex
14ef0 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28  ttoken.id === "(
14f00 65 6e 64 29 22 29 0d 0a 20 20 20 20 20 20 20 20  end)")..        
14f10 20 20 20 20 65 72 72 6f 72 28 22 55 6e 65 78 70      error("Unexp
14f20 65 63 74 65 64 20 65 61 72 6c 79 20 65 6e 64 20  ected early end 
14f30 6f 66 20 70 72 6f 67 72 61 6d 2e 22 2c 20 74 6f  of program.", to
14f40 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ken);....       
14f50 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20   advance();..   
14f60 20 20 20 20 20 69 66 20 28 69 6e 69 74 69 61 6c       if (initial
14f70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
14f80 20 61 6e 6f 6e 6e 61 6d 65 20 3d 20 22 61 6e 6f   anonname = "ano
14f90 6e 79 6d 6f 75 73 22 3b 0d 0a 20 20 20 20 20 20  nymous";..      
14fa0 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 76 65        funct["(ve
14fb0 72 62 29 22 5d 20 3d 20 74 6f 6b 65 6e 2e 76 61  rb)"] = token.va
14fc0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
14fd0 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 69  .        if (ini
14fe0 74 69 61 6c 20 3d 3d 3d 20 74 72 75 65 20 26 26  tial === true &&
14ff0 20 74 6f 6b 65 6e 2e 66 75 64 29 20 7b 0d 0a 20   token.fud) {.. 
15000 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 20             left 
15010 3d 20 74 6f 6b 65 6e 2e 66 75 64 28 29 3b 0d 0a  = token.fud();..
15020 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
15030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
15040 20 28 74 6f 6b 65 6e 2e 6e 75 64 29 20 7b 0d 0a   (token.nud) {..
15050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15060 6c 65 66 74 20 3d 20 74 6f 6b 65 6e 2e 6e 75 64  left = token.nud
15070 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
15080 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
15090 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
150a0 65 78 74 74 6f 6b 65 6e 2e 74 79 70 65 20 3d 3d  exttoken.type ==
150b0 3d 20 22 28 6e 75 6d 62 65 72 29 22 20 26 26 20  = "(number)" && 
150c0 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 2e 22  token.id === "."
150d0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
150e0 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
150f0 28 22 41 20 6c 65 61 64 69 6e 67 20 64 65 63 69  ("A leading deci
15100 6d 61 6c 20 70 6f 69 6e 74 20 63 61 6e 20 62 65  mal point can be
15110 20 63 6f 6e 66 75 73 65 64 20 77 69 74 68 20 61   confused with a
15120 20 64 6f 74 3a 20 27 2e 7b 61 7d 27 2e 22 2c 0d   dot: '.{a}'.",.
15130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15140 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b               tok
15150 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61  en, nexttoken.va
15160 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
15170 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e             advan
15180 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ce();..         
15190 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
151a0 6e 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20  n token;..      
151b0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
151c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
151d0 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 45          error("E
151e0 78 70 65 63 74 65 64 20 61 6e 20 69 64 65 6e 74  xpected an ident
151f0 69 66 69 65 72 20 61 6e 64 20 69 6e 73 74 65 61  ifier and instea
15200 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c 0d 0a  d saw '{a}'.",..
15210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15220 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65              toke
15230 6e 2c 20 74 6f 6b 65 6e 2e 69 64 29 3b 0d 0a 20  n, token.id);.. 
15240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
15250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
15260 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69  .            whi
15270 6c 65 20 28 72 62 70 20 3c 20 6e 65 78 74 74 6f  le (rbp < nextto
15280 6b 65 6e 2e 6c 62 70 29 20 7b 0d 0a 20 20 20 20  ken.lbp) {..    
15290 20 20 20 20 20 20 20 20 20 20 20 20 69 73 41 72              isAr
152a0 72 61 79 20 3d 20 74 6f 6b 65 6e 2e 76 61 6c 75  ray = token.valu
152b0 65 20 3d 3d 3d 20 22 41 72 72 61 79 22 3b 0d 0a  e === "Array";..
152c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
152d0 69 73 4f 62 6a 65 63 74 20 3d 20 74 6f 6b 65 6e  isObject = token
152e0 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 4f 62 6a 65  .value === "Obje
152f0 63 74 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct";....        
15300 20 20 20 20 20 20 20 20 2f 2f 20 23 35 32 37 2c          // #527,
15310 20 6e 65 77 20 46 6f 6f 2e 41 72 72 61 79 28 29   new Foo.Array()
15320 2c 20 46 6f 6f 2e 41 72 72 61 79 28 29 2c 20 6e  , Foo.Array(), n
15330 65 77 20 46 6f 6f 2e 4f 62 6a 65 63 74 28 29 2c  ew Foo.Object(),
15340 20 46 6f 6f 2e 4f 62 6a 65 63 74 28 29 0d 0a 20   Foo.Object().. 
15350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15360 2f 20 4c 69 6e 65 20 62 72 65 61 6b 73 20 69 6e  / Line breaks in
15370 20 49 66 53 74 61 74 65 6d 65 6e 74 20 68 65 61   IfStatement hea
15380 64 73 20 65 78 69 73 74 20 74 6f 20 73 61 74 69  ds exist to sati
15390 73 66 79 20 74 68 65 20 63 68 65 63 6b 4a 53 48  sfy the checkJSH
153a0 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
153b0 20 20 20 20 20 2f 2f 20 22 4c 69 6e 65 20 74 6f       // "Line to
153c0 6f 20 6c 6f 6e 67 2e 22 20 65 72 72 6f 72 2e 0d  o long." error..
153d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
153e0 20 69 66 20 28 6c 65 66 74 20 26 26 20 28 6c 65   if (left && (le
153f0 66 74 2e 76 61 6c 75 65 20 7c 7c 20 28 6c 65 66  ft.value || (lef
15400 74 2e 66 69 72 73 74 20 26 26 20 6c 65 66 74 2e  t.first && left.
15410 66 69 72 73 74 2e 76 61 6c 75 65 29 29 29 20 7b  first.value))) {
15420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15430 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20        // If the 
15440 6c 65 66 74 2e 76 61 6c 75 65 20 69 73 20 6e 6f  left.value is no
15450 74 20 22 6e 65 77 22 2c 20 6f 72 20 74 68 65 20  t "new", or the 
15460 6c 65 66 74 2e 66 69 72 73 74 2e 76 61 6c 75 65  left.first.value
15470 20 69 73 20 61 20 22 2e 22 0d 0a 20 20 20 20 20   is a "."..     
15480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15490 2f 20 74 68 65 6e 20 73 61 66 65 6c 79 20 61 73  / then safely as
154a0 73 75 6d 65 20 74 68 61 74 20 74 68 69 73 20 69  sume that this i
154b0 73 20 6e 6f 74 20 22 6e 65 77 20 41 72 72 61 79  s not "new Array
154c0 28 29 22 20 61 6e 64 20 70 6f 73 73 69 62 6c 79  ()" and possibly
154d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
154e0 20 20 20 20 20 20 2f 2f 20 6e 6f 74 20 22 6e 65        // not "ne
154f0 77 20 4f 62 6a 65 63 74 28 29 22 2e 2e 2e 0d 0a  w Object()".....
15500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15510 20 20 20 20 69 66 20 28 6c 65 66 74 2e 76 61 6c      if (left.val
15520 75 65 20 21 3d 3d 20 22 6e 65 77 22 20 7c 7c 0d  ue !== "new" ||.
15530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15540 20 20 20 20 20 20 20 28 6c 65 66 74 2e 66 69 72         (left.fir
15550 73 74 20 26 26 20 6c 65 66 74 2e 66 69 72 73 74  st && left.first
15560 2e 76 61 6c 75 65 20 26 26 20 6c 65 66 74 2e 66  .value && left.f
15570 69 72 73 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22  irst.value === "
15580 2e 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  .")) {..        
15590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155a0 69 73 41 72 72 61 79 20 3d 20 66 61 6c 73 65 3b  isArray = false;
155b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
155c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 2e 2e 2e            // ...
155d0 49 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 4f  In the case of O
155e0 62 6a 65 63 74 2c 20 69 66 20 74 68 65 20 6c 65  bject, if the le
155f0 66 74 2e 76 61 6c 75 65 20 61 6e 64 20 74 6f 6b  ft.value and tok
15600 65 6e 2e 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  en.value..      
15610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15620 20 20 2f 2f 20 61 72 65 20 6e 6f 74 20 65 71 75    // are not equ
15630 61 6c 2c 20 74 68 65 6e 20 73 61 66 65 6c 79 20  al, then safely 
15640 61 73 73 75 6d 65 20 74 68 61 74 20 74 68 69 73  assume that this
15650 20 6e 6f 74 20 22 6e 65 77 20 4f 62 6a 65 63 74   not "new Object
15660 28 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ()"..           
15670 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
15680 28 6c 65 66 74 2e 76 61 6c 75 65 20 21 3d 3d 20  (left.value !== 
15690 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 20 7b 0d 0a  token.value) {..
156a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
156b0 20 20 20 20 20 20 20 20 20 20 20 20 69 73 4f 62              isOb
156c0 6a 65 63 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  ject = false;.. 
156d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
156e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
15700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15710 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
15720 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 29 3b        advance();
15730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15740 20 20 69 66 20 28 69 73 41 72 72 61 79 20 26 26    if (isArray &&
15750 20 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28   token.id === "(
15760 22 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 69  " && nexttoken.i
15770 64 20 3d 3d 3d 20 22 29 22 29 0d 0a 20 20 20 20  d === ")")..    
15780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15790 77 61 72 6e 69 6e 67 28 22 55 73 65 20 74 68 65  warning("Use the
157a0 20 61 72 72 61 79 20 6c 69 74 65 72 61 6c 20 6e   array literal n
157b0 6f 74 61 74 69 6f 6e 20 5b 5d 2e 22 2c 20 74 6f  otation [].", to
157c0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ken);..         
157d0 20 20 20 20 20 20 20 69 66 20 28 69 73 4f 62 6a         if (isObj
157e0 65 63 74 20 26 26 20 74 6f 6b 65 6e 2e 69 64 20  ect && token.id 
157f0 3d 3d 3d 20 22 28 22 20 26 26 20 6e 65 78 74 74  === "(" && nextt
15800 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 29 22 29  oken.id === ")")
15810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15820 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55        warning("U
15830 73 65 20 74 68 65 20 6f 62 6a 65 63 74 20 6c 69  se the object li
15840 74 65 72 61 6c 20 6e 6f 74 61 74 69 6f 6e 20 7b  teral notation {
15850 7d 2e 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20  }.", token);..  
15860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15870 20 28 74 6f 6b 65 6e 2e 6c 65 64 29 20 7b 0d 0a   (token.led) {..
15880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15890 20 20 20 20 6c 65 66 74 20 3d 20 74 6f 6b 65 6e      left = token
158a0 2e 6c 65 64 28 6c 65 66 74 29 3b 0d 0a 20 20 20  .led(left);..   
158b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
158c0 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
158d0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
158e0 28 22 45 78 70 65 63 74 65 64 20 61 6e 20 6f 70  ("Expected an op
158f0 65 72 61 74 6f 72 20 61 6e 64 20 69 6e 73 74 65  erator and inste
15900 61 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c 0d  ad saw '{a}'.",.
15910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15920 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 2c 20           token, 
15930 74 6f 6b 65 6e 2e 69 64 29 3b 0d 0a 20 20 20 20  token.id);..    
15940 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
15950 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
15960 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
15970 20 72 65 74 75 72 6e 20 6c 65 66 74 3b 0d 0a 20   return left;.. 
15980 20 20 20 7d 0d 0a 0d 0a 0d 0a 2f 2f 20 46 75 6e     }......// Fun
15990 63 74 69 6f 6e 73 20 66 6f 72 20 63 6f 6e 66 6f  ctions for confo
159a0 72 6d 61 6e 63 65 20 6f 66 20 73 74 79 6c 65 2e  rmance of style.
159b0 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e  ....    function
159c0 20 61 64 6a 61 63 65 6e 74 28 6c 65 66 74 2c 20   adjacent(left, 
159d0 72 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20  right) {..      
159e0 20 20 6c 65 66 74 20 3d 20 6c 65 66 74 20 7c 7c    left = left ||
159f0 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20   token;..       
15a00 20 72 69 67 68 74 20 3d 20 72 69 67 68 74 20 7c   right = right |
15a10 7c 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20  | nexttoken;..  
15a20 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e        if (option
15a30 2e 77 68 69 74 65 29 20 7b 0d 0a 20 20 20 20 20  .white) {..     
15a40 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 2e         if (left.
15a50 63 68 61 72 61 63 74 65 72 20 21 3d 3d 20 72 69  character !== ri
15a60 67 68 74 2e 66 72 6f 6d 20 26 26 20 6c 65 66 74  ght.from && left
15a70 2e 6c 69 6e 65 20 3d 3d 3d 20 72 69 67 68 74 2e  .line === right.
15a80 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  line) {..       
15a90 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e 66 72           left.fr
15aa0 6f 6d 20 2b 3d 20 28 6c 65 66 74 2e 63 68 61 72  om += (left.char
15ab0 61 63 74 65 72 20 2d 20 6c 65 66 74 2e 66 72 6f  acter - left.fro
15ac0 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  m);..           
15ad0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e       warning("Un
15ae0 65 78 70 65 63 74 65 64 20 73 70 61 63 65 20 61  expected space a
15af0 66 74 65 72 20 27 7b 61 7d 27 2e 22 2c 20 6c 65  fter '{a}'.", le
15b00 66 74 2c 20 6c 65 66 74 2e 76 61 6c 75 65 29 3b  ft, left.value);
15b10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
15b20 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
15b30 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f  }....    functio
15b40 6e 20 6e 6f 62 72 65 61 6b 28 6c 65 66 74 2c 20  n nobreak(left, 
15b50 72 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20  right) {..      
15b60 20 20 6c 65 66 74 20 3d 20 6c 65 66 74 20 7c 7c    left = left ||
15b70 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20   token;..       
15b80 20 72 69 67 68 74 20 3d 20 72 69 67 68 74 20 7c   right = right |
15b90 7c 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20  | nexttoken;..  
15ba0 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e        if (option
15bb0 2e 77 68 69 74 65 20 26 26 20 28 6c 65 66 74 2e  .white && (left.
15bc0 63 68 61 72 61 63 74 65 72 20 21 3d 3d 20 72 69  character !== ri
15bd0 67 68 74 2e 66 72 6f 6d 20 7c 7c 20 6c 65 66 74  ght.from || left
15be0 2e 6c 69 6e 65 20 21 3d 3d 20 72 69 67 68 74 2e  .line !== right.
15bf0 6c 69 6e 65 29 29 20 7b 0d 0a 20 20 20 20 20 20  line)) {..      
15c00 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55        warning("U
15c10 6e 65 78 70 65 63 74 65 64 20 73 70 61 63 65 20  nexpected space 
15c20 62 65 66 6f 72 65 20 27 7b 61 7d 27 2e 22 2c 20  before '{a}'.", 
15c30 72 69 67 68 74 2c 20 72 69 67 68 74 2e 76 61 6c  right, right.val
15c40 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
15c50 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 66 75  .    }....    fu
15c60 6e 63 74 69 6f 6e 20 6e 6f 73 70 61 63 65 28 6c  nction nospace(l
15c70 65 66 74 2c 20 72 69 67 68 74 29 20 7b 0d 0a 20  eft, right) {.. 
15c80 20 20 20 20 20 20 20 6c 65 66 74 20 3d 20 6c 65         left = le
15c90 66 74 20 7c 7c 20 74 6f 6b 65 6e 3b 0d 0a 20 20  ft || token;..  
15ca0 20 20 20 20 20 20 72 69 67 68 74 20 3d 20 72 69        right = ri
15cb0 67 68 74 20 7c 7c 20 6e 65 78 74 74 6f 6b 65 6e  ght || nexttoken
15cc0 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f  ;..        if (o
15cd0 70 74 69 6f 6e 2e 77 68 69 74 65 20 26 26 20 21  ption.white && !
15ce0 6c 65 66 74 2e 63 6f 6d 6d 65 6e 74 29 20 7b 0d  left.comment) {.
15cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
15d00 28 6c 65 66 74 2e 6c 69 6e 65 20 3d 3d 3d 20 72  (left.line === r
15d10 69 67 68 74 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20  ight.line) {..  
15d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64                ad
15d30 6a 61 63 65 6e 74 28 6c 65 66 74 2c 20 72 69 67  jacent(left, rig
15d40 68 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ht);..          
15d50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
15d60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 66 75 6e      }....    fun
15d70 63 74 69 6f 6e 20 6e 6f 6e 61 64 6a 61 63 65 6e  ction nonadjacen
15d80 74 28 6c 65 66 74 2c 20 72 69 67 68 74 29 20 7b  t(left, right) {
15d90 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70  ..        if (op
15da0 74 69 6f 6e 2e 77 68 69 74 65 29 20 7b 0d 0a 20  tion.white) {.. 
15db0 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 20             left 
15dc0 3d 20 6c 65 66 74 20 7c 7c 20 74 6f 6b 65 6e 3b  = left || token;
15dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 69  ..            ri
15de0 67 68 74 20 3d 20 72 69 67 68 74 20 7c 7c 20 6e  ght = right || n
15df0 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20  exttoken;..     
15e00 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 2e         if (left.
15e10 76 61 6c 75 65 20 3d 3d 3d 20 22 3b 22 20 26 26  value === ";" &&
15e20 20 72 69 67 68 74 2e 76 61 6c 75 65 20 3d 3d 3d   right.value ===
15e30 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20   ";") {..       
15e40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
15e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
15e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
15e70 28 6c 65 66 74 2e 6c 69 6e 65 20 3d 3d 3d 20 72  (left.line === r
15e80 69 67 68 74 2e 6c 69 6e 65 20 26 26 20 6c 65 66  ight.line && lef
15e90 74 2e 63 68 61 72 61 63 74 65 72 20 3d 3d 3d 20  t.character === 
15ea0 72 69 67 68 74 2e 66 72 6f 6d 29 20 7b 0d 0a 20  right.from) {.. 
15eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
15ec0 65 66 74 2e 66 72 6f 6d 20 2b 3d 20 28 6c 65 66  eft.from += (lef
15ed0 74 2e 63 68 61 72 61 63 74 65 72 20 2d 20 6c 65  t.character - le
15ee0 66 74 2e 66 72 6f 6d 29 3b 0d 0a 20 20 20 20 20  ft.from);..     
15ef0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
15f00 6e 67 28 22 4d 69 73 73 69 6e 67 20 73 70 61 63  ng("Missing spac
15f10 65 20 61 66 74 65 72 20 27 7b 61 7d 27 2e 22 2c  e after '{a}'.",
15f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15f30 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 2c 20            left, 
15f40 6c 65 66 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20  left.value);..  
15f50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
15f60 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
15f70 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e 6f  .    function no
15f80 62 72 65 61 6b 6e 6f 6e 61 64 6a 61 63 65 6e 74  breaknonadjacent
15f90 28 6c 65 66 74 2c 20 72 69 67 68 74 29 20 7b 0d  (left, right) {.
15fa0 0a 20 20 20 20 20 20 20 20 6c 65 66 74 20 3d 20  .        left = 
15fb0 6c 65 66 74 20 7c 7c 20 74 6f 6b 65 6e 3b 0d 0a  left || token;..
15fc0 20 20 20 20 20 20 20 20 72 69 67 68 74 20 3d 20          right = 
15fd0 72 69 67 68 74 20 7c 7c 20 6e 65 78 74 74 6f 6b  right || nexttok
15fe0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  en;..        if 
15ff0 28 21 6f 70 74 69 6f 6e 2e 6c 61 78 62 72 65 61  (!option.laxbrea
16000 6b 20 26 26 20 6c 65 66 74 2e 6c 69 6e 65 20 21  k && left.line !
16010 3d 3d 20 72 69 67 68 74 2e 6c 69 6e 65 29 20 7b  == right.line) {
16020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61  ..            wa
16030 72 6e 69 6e 67 28 22 42 61 64 20 6c 69 6e 65 20  rning("Bad line 
16040 62 72 65 61 6b 69 6e 67 20 62 65 66 6f 72 65 20  breaking before 
16050 27 7b 61 7d 27 2e 22 2c 20 72 69 67 68 74 2c 20  '{a}'.", right, 
16060 72 69 67 68 74 2e 69 64 29 3b 0d 0a 20 20 20 20  right.id);..    
16070 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6f      } else if (o
16080 70 74 69 6f 6e 2e 77 68 69 74 65 29 20 7b 0d 0a  ption.white) {..
16090 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74              left
160a0 20 3d 20 6c 65 66 74 20 7c 7c 20 74 6f 6b 65 6e   = left || token
160b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
160c0 69 67 68 74 20 3d 20 72 69 67 68 74 20 7c 7c 20  ight = right || 
160d0 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20  nexttoken;..    
160e0 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74          if (left
160f0 2e 63 68 61 72 61 63 74 65 72 20 3d 3d 3d 20 72  .character === r
16100 69 67 68 74 2e 66 72 6f 6d 29 20 7b 0d 0a 20 20  ight.from) {..  
16110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
16120 66 74 2e 66 72 6f 6d 20 2b 3d 20 28 6c 65 66 74  ft.from += (left
16130 2e 63 68 61 72 61 63 74 65 72 20 2d 20 6c 65 66  .character - lef
16140 74 2e 66 72 6f 6d 29 3b 0d 0a 20 20 20 20 20 20  t.from);..      
16150 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
16160 67 28 22 4d 69 73 73 69 6e 67 20 73 70 61 63 65  g("Missing space
16170 20 61 66 74 65 72 20 27 7b 61 7d 27 2e 22 2c 0d   after '{a}'.",.
16180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16190 20 20 20 20 20 20 20 20 20 6c 65 66 74 2c 20 6c           left, l
161a0 65 66 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20  eft.value);..   
161b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
161c0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
161d0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e 64      function ind
161e0 65 6e 74 61 74 69 6f 6e 28 62 69 61 73 29 20 7b  entation(bias) {
161f0 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 3b  ..        var i;
16200 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70  ..        if (op
16210 74 69 6f 6e 2e 77 68 69 74 65 20 26 26 20 6e 65  tion.white && ne
16220 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22  xttoken.id !== "
16230 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20 20 20 20  (end)") {..     
16240 20 20 20 20 20 20 20 69 20 3d 20 69 6e 64 65 6e         i = inden
16250 74 20 2b 20 28 62 69 61 73 20 7c 7c 20 30 29 3b  t + (bias || 0);
16260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
16270 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 66 72 6f 6d   (nexttoken.from
16280 20 21 3d 3d 20 69 29 20 7b 0d 0a 20 20 20 20 20   !== i) {..     
16290 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
162a0 6e 67 28 0d 0a 22 45 78 70 65 63 74 65 64 20 27  ng(.."Expected '
162b0 7b 61 7d 27 20 74 6f 20 68 61 76 65 20 61 6e 20  {a}' to have an 
162c0 69 6e 64 65 6e 74 61 74 69 6f 6e 20 61 74 20 7b  indentation at {
162d0 62 7d 20 69 6e 73 74 65 61 64 20 61 74 20 7b 63  b} instead at {c
162e0 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  }.",..          
162f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
16300 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b  xttoken, nexttok
16310 65 6e 2e 76 61 6c 75 65 2c 20 69 2c 20 6e 65 78  en.value, i, nex
16320 74 74 6f 6b 65 6e 2e 66 72 6f 6d 29 3b 0d 0a 20  ttoken.from);.. 
16330 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
16340 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
16350 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e  ..    function n
16360 6f 6c 69 6e 65 62 72 65 61 6b 28 74 29 20 7b 0d  olinebreak(t) {.
16370 0a 20 20 20 20 20 20 20 20 74 20 3d 20 74 20 7c  .        t = t |
16380 7c 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20  | token;..      
16390 20 20 69 66 20 28 74 2e 6c 69 6e 65 20 21 3d 3d    if (t.line !==
163a0 20 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e 65 29   nexttoken.line)
163b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
163c0 77 61 72 6e 69 6e 67 28 22 4c 69 6e 65 20 62 72  warning("Line br
163d0 65 61 6b 69 6e 67 20 65 72 72 6f 72 20 27 7b 61  eaking error '{a
163e0 7d 27 2e 22 2c 20 74 2c 20 74 2e 76 61 6c 75 65  }'.", t, t.value
163f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
16400 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75     }......    fu
16410 6e 63 74 69 6f 6e 20 63 6f 6d 6d 61 28 29 20 7b  nction comma() {
16420 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 6f  ..        if (to
16430 6b 65 6e 2e 6c 69 6e 65 20 21 3d 3d 20 6e 65 78  ken.line !== nex
16440 74 74 6f 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a  ttoken.line) {..
16450 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
16460 21 6f 70 74 69 6f 6e 2e 6c 61 78 63 6f 6d 6d 61  !option.laxcomma
16470 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
16480 20 20 20 20 20 69 66 20 28 63 6f 6d 6d 61 2e 66       if (comma.f
16490 69 72 73 74 29 20 7b 0d 0a 20 20 20 20 20 20 20  irst) {..       
164a0 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
164b0 6e 69 6e 67 28 22 43 6f 6d 6d 61 20 77 61 72 6e  ning("Comma warn
164c0 69 6e 67 73 20 63 61 6e 20 62 65 20 74 75 72 6e  ings can be turn
164d0 65 64 20 6f 66 66 20 77 69 74 68 20 27 6c 61 78  ed off with 'lax
164e0 63 6f 6d 6d 61 27 22 29 3b 0d 0a 20 20 20 20 20  comma'");..     
164f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
16500 6f 6d 6d 61 2e 66 69 72 73 74 20 3d 20 66 61 6c  omma.first = fal
16510 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
16520 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
16530 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
16540 22 42 61 64 20 6c 69 6e 65 20 62 72 65 61 6b 69  "Bad line breaki
16550 6e 67 20 62 65 66 6f 72 65 20 27 7b 61 7d 27 2e  ng before '{a}'.
16560 22 2c 20 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f  ", token, nextto
16570 6b 65 6e 2e 69 64 29 3b 0d 0a 20 20 20 20 20 20  ken.id);..      
16580 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
16590 20 7d 20 65 6c 73 65 20 69 66 20 28 21 74 6f 6b   } else if (!tok
165a0 65 6e 2e 63 6f 6d 6d 65 6e 74 20 26 26 20 74 6f  en.comment && to
165b0 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 20 21 3d  ken.character !=
165c0 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 66 72 6f 6d  = nexttoken.from
165d0 20 26 26 20 6f 70 74 69 6f 6e 2e 77 68 69 74 65   && option.white
165e0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
165f0 20 74 6f 6b 65 6e 2e 66 72 6f 6d 20 2b 3d 20 28   token.from += (
16600 74 6f 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 20  token.character 
16610 2d 20 74 6f 6b 65 6e 2e 66 72 6f 6d 29 3b 0d 0a  - token.from);..
16620 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
16630 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65 64 20  ing("Unexpected 
16640 73 70 61 63 65 20 61 66 74 65 72 20 27 7b 61 7d  space after '{a}
16650 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 74 6f 6b 65  '.", token, toke
16660 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  n.value);..     
16670 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 61 64     }..        ad
16680 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a 20 20 20  vance(",");..   
16690 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74       nonadjacent
166a0 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65  (token, nexttoke
166b0 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a  n);..    }......
166c0 2f 2f 20 46 75 6e 63 74 69 6f 6e 61 6c 20 63 6f  // Functional co
166d0 6e 73 74 72 75 63 74 6f 72 73 20 66 6f 72 20 6d  nstructors for m
166e0 61 6b 69 6e 67 20 74 68 65 20 73 79 6d 62 6f 6c  aking the symbol
166f0 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 69  s that will be i
16700 6e 68 65 72 69 74 65 64 20 62 79 0d 0a 2f 2f 20  nherited by..// 
16710 74 6f 6b 65 6e 73 2e 0d 0a 0d 0a 20 20 20 20 66  tokens.....    f
16720 75 6e 63 74 69 6f 6e 20 73 79 6d 62 6f 6c 28 73  unction symbol(s
16730 2c 20 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  , p) {..        
16740 76 61 72 20 78 20 3d 20 73 79 6e 74 61 78 5b 73  var x = syntax[s
16750 5d 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ];..        if (
16760 21 78 20 7c 7c 20 74 79 70 65 6f 66 20 78 20 21  !x || typeof x !
16770 3d 3d 20 22 6f 62 6a 65 63 74 22 29 20 7b 0d 0a  == "object") {..
16780 20 20 20 20 20 20 20 20 20 20 20 20 73 79 6e 74              synt
16790 61 78 5b 73 5d 20 3d 20 78 20 3d 20 7b 0d 0a 20  ax[s] = x = {.. 
167a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
167b0 64 3a 20 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  d: s,..         
167c0 20 20 20 20 20 20 20 6c 62 70 3a 20 70 2c 0d 0a         lbp: p,..
167d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
167e0 76 61 6c 75 65 3a 20 73 0d 0a 20 20 20 20 20 20  value: s..      
167f0 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20        };..      
16800 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74    }..        ret
16810 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  urn x;..    }...
16820 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  ...    function 
16830 64 65 6c 69 6d 28 73 29 20 7b 0d 0a 20 20 20 20  delim(s) {..    
16840 20 20 20 20 72 65 74 75 72 6e 20 73 79 6d 62 6f      return symbo
16850 6c 28 73 2c 20 30 29 3b 0d 0a 20 20 20 20 7d 0d  l(s, 0);..    }.
16860 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f  .....    functio
16870 6e 20 73 74 6d 74 28 73 2c 20 66 29 20 7b 0d 0a  n stmt(s, f) {..
16880 20 20 20 20 20 20 20 20 76 61 72 20 78 20 3d 20          var x = 
16890 64 65 6c 69 6d 28 73 29 3b 0d 0a 20 20 20 20 20  delim(s);..     
168a0 20 20 20 78 2e 69 64 65 6e 74 69 66 69 65 72 20     x.identifier 
168b0 3d 20 78 2e 72 65 73 65 72 76 65 64 20 3d 20 74  = x.reserved = t
168c0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e  rue;..        x.
168d0 66 75 64 20 3d 20 66 3b 0d 0a 20 20 20 20 20 20  fud = f;..      
168e0 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20    return x;..   
168f0 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63   }......    func
16900 74 69 6f 6e 20 62 6c 6f 63 6b 73 74 6d 74 28 73  tion blockstmt(s
16910 2c 20 66 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  , f) {..        
16920 76 61 72 20 78 20 3d 20 73 74 6d 74 28 73 2c 20  var x = stmt(s, 
16930 66 29 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 62  f);..        x.b
16940 6c 6f 63 6b 20 3d 20 74 72 75 65 3b 0d 0a 20 20  lock = true;..  
16950 20 20 20 20 20 20 72 65 74 75 72 6e 20 78 3b 0d        return x;.
16960 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20  .    }......    
16970 66 75 6e 63 74 69 6f 6e 20 72 65 73 65 72 76 65  function reserve
16980 4e 61 6d 65 28 78 29 20 7b 0d 0a 20 20 20 20 20  Name(x) {..     
16990 20 20 20 76 61 72 20 63 20 3d 20 78 2e 69 64 2e     var c = x.id.
169a0 63 68 61 72 41 74 28 30 29 3b 0d 0a 20 20 20 20  charAt(0);..    
169b0 20 20 20 20 69 66 20 28 28 63 20 3e 3d 20 22 61      if ((c >= "a
169c0 22 20 26 26 20 63 20 3c 3d 20 22 7a 22 29 20 7c  " && c <= "z") |
169d0 7c 20 28 63 20 3e 3d 20 22 41 22 20 26 26 20 63  | (c >= "A" && c
169e0 20 3c 3d 20 22 5a 22 29 29 20 7b 0d 0a 20 20 20   <= "Z")) {..   
169f0 20 20 20 20 20 20 20 20 20 78 2e 69 64 65 6e 74           x.ident
16a00 69 66 69 65 72 20 3d 20 78 2e 72 65 73 65 72 76  ifier = x.reserv
16a10 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
16a20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72      }..        r
16a30 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d  eturn x;..    }.
16a40 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f  .....    functio
16a50 6e 20 70 72 65 66 69 78 28 73 2c 20 66 29 20 7b  n prefix(s, f) {
16a60 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20  ..        var x 
16a70 3d 20 73 79 6d 62 6f 6c 28 73 2c 20 31 35 30 29  = symbol(s, 150)
16a80 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 73 65 72  ;..        reser
16a90 76 65 4e 61 6d 65 28 78 29 3b 0d 0a 20 20 20 20  veName(x);..    
16aa0 20 20 20 20 78 2e 6e 75 64 20 3d 20 28 74 79 70      x.nud = (typ
16ab0 65 6f 66 20 66 20 3d 3d 3d 20 22 66 75 6e 63 74  eof f === "funct
16ac0 69 6f 6e 22 29 20 3f 20 66 20 3a 20 66 75 6e 63  ion") ? f : func
16ad0 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20  tion () {..     
16ae0 20 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68         this.righ
16af0 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31  t = expression(1
16b00 35 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  50);..          
16b10 20 20 74 68 69 73 2e 61 72 69 74 79 20 3d 20 22    this.arity = "
16b20 75 6e 61 72 79 22 3b 0d 0a 20 20 20 20 20 20 20  unary";..       
16b30 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 64       if (this.id
16b40 20 3d 3d 3d 20 22 2b 2b 22 20 7c 7c 20 74 68 69   === "++" || thi
16b50 73 2e 69 64 20 3d 3d 3d 20 22 2d 2d 22 29 20 7b  s.id === "--") {
16b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16b70 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 6c 75    if (option.plu
16b80 73 70 6c 75 73 29 20 7b 0d 0a 20 20 20 20 20 20  splus) {..      
16b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
16ba0 72 6e 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65  rning("Unexpecte
16bb0 64 20 75 73 65 20 6f 66 20 27 7b 61 7d 27 2e 22  d use of '{a}'."
16bc0 2c 20 74 68 69 73 2c 20 74 68 69 73 2e 69 64 29  , this, this.id)
16bd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
16be0 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28 21     } else if ((!
16bf0 74 68 69 73 2e 72 69 67 68 74 2e 69 64 65 6e 74  this.right.ident
16c00 69 66 69 65 72 20 7c 7c 20 74 68 69 73 2e 72 69  ifier || this.ri
16c10 67 68 74 2e 72 65 73 65 72 76 65 64 29 20 26 26  ght.reserved) &&
16c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16c30 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72            this.r
16c40 69 67 68 74 2e 69 64 20 21 3d 3d 20 22 2e 22 20  ight.id !== "." 
16c50 26 26 20 74 68 69 73 2e 72 69 67 68 74 2e 69 64  && this.right.id
16c60 20 21 3d 3d 20 22 5b 22 29 20 7b 0d 0a 20 20 20   !== "[") {..   
16c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c80 20 77 61 72 6e 69 6e 67 28 22 42 61 64 20 6f 70   warning("Bad op
16c90 65 72 61 6e 64 2e 22 2c 20 74 68 69 73 29 3b 0d  erand.", this);.
16ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16cb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
16cc0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
16cd0 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20  eturn this;..   
16ce0 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20       };..       
16cf0 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20   return x;..    
16d00 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74  }......    funct
16d10 69 6f 6e 20 74 79 70 65 28 73 2c 20 66 29 20 7b  ion type(s, f) {
16d20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20  ..        var x 
16d30 3d 20 64 65 6c 69 6d 28 73 29 3b 0d 0a 20 20 20  = delim(s);..   
16d40 20 20 20 20 20 78 2e 74 79 70 65 20 3d 20 73 3b       x.type = s;
16d50 0d 0a 20 20 20 20 20 20 20 20 78 2e 6e 75 64 20  ..        x.nud 
16d60 3d 20 66 3b 0d 0a 20 20 20 20 20 20 20 20 72 65  = f;..        re
16d70 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d 0a  turn x;..    }..
16d80 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e  ....    function
16d90 20 72 65 73 65 72 76 65 28 73 2c 20 66 29 20 7b   reserve(s, f) {
16da0 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20  ..        var x 
16db0 3d 20 74 79 70 65 28 73 2c 20 66 29 3b 0d 0a 20  = type(s, f);.. 
16dc0 20 20 20 20 20 20 20 78 2e 69 64 65 6e 74 69 66         x.identif
16dd0 69 65 72 20 3d 20 78 2e 72 65 73 65 72 76 65 64  ier = x.reserved
16de0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
16df0 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20    return x;..   
16e00 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63   }......    func
16e10 74 69 6f 6e 20 72 65 73 65 72 76 65 76 61 72 28  tion reservevar(
16e20 73 2c 20 76 29 20 7b 0d 0a 20 20 20 20 20 20 20  s, v) {..       
16e30 20 72 65 74 75 72 6e 20 72 65 73 65 72 76 65 28   return reserve(
16e40 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  s, function () {
16e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
16e60 20 28 74 79 70 65 6f 66 20 76 20 3d 3d 3d 20 22   (typeof v === "
16e70 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a 20 20  function") {..  
16e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 28                v(
16e90 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
16ea0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
16eb0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d     return this;.
16ec0 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20  .        });..  
16ed0 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e    }......    fun
16ee0 63 74 69 6f 6e 20 69 6e 66 69 78 28 73 2c 20 66  ction infix(s, f
16ef0 2c 20 70 2c 20 77 29 20 7b 0d 0a 20 20 20 20 20  , p, w) {..     
16f00 20 20 20 76 61 72 20 78 20 3d 20 73 79 6d 62 6f     var x = symbo
16f10 6c 28 73 2c 20 70 29 3b 0d 0a 20 20 20 20 20 20  l(s, p);..      
16f20 20 20 72 65 73 65 72 76 65 4e 61 6d 65 28 78 29    reserveName(x)
16f30 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65 64  ;..        x.led
16f40 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66   = function (lef
16f50 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  t) {..          
16f60 20 20 69 66 20 28 21 77 29 20 7b 0d 0a 20 20 20    if (!w) {..   
16f70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 62               nob
16f80 72 65 61 6b 6e 6f 6e 61 64 6a 61 63 65 6e 74 28  reaknonadjacent(
16f90 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e  prevtoken, token
16fa0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
16fb0 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28      nonadjacent(
16fc0 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e  token, nexttoken
16fd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
16fe0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
16ff0 66 20 28 73 20 3d 3d 3d 20 22 69 6e 22 20 26 26  f (s === "in" &&
17000 20 6c 65 66 74 2e 69 64 20 3d 3d 3d 20 22 21 22   left.id === "!"
17010 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
17020 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f       warning("Co
17030 6e 66 75 73 69 6e 67 20 75 73 65 20 6f 66 20 27  nfusing use of '
17040 7b 61 7d 27 2e 22 2c 20 6c 65 66 74 2c 20 22 21  {a}'.", left, "!
17050 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
17060 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
17070 69 66 20 28 74 79 70 65 6f 66 20 66 20 3d 3d 3d  if (typeof f ===
17080 20 22 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a   "function") {..
17090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
170a0 72 65 74 75 72 6e 20 66 28 6c 65 66 74 2c 20 74  return f(left, t
170b0 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  his);..         
170c0 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
170d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
170e0 73 2e 6c 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a  s.left = left;..
170f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17100 74 68 69 73 2e 72 69 67 68 74 20 3d 20 65 78 70  this.right = exp
17110 72 65 73 73 69 6f 6e 28 70 29 3b 0d 0a 20 20 20  ression(p);..   
17120 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
17130 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 20  urn this;..     
17140 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
17150 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 72 65    };..        re
17160 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20 7d 0d 0a  turn x;..    }..
17170 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e  ....    function
17180 20 72 65 6c 61 74 69 6f 6e 28 73 2c 20 66 29 20   relation(s, f) 
17190 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 78  {..        var x
171a0 20 3d 20 73 79 6d 62 6f 6c 28 73 2c 20 31 30 30   = symbol(s, 100
171b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65  );..        x.le
171c0 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65  d = function (le
171d0 66 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ft) {..         
171e0 20 20 20 6e 6f 62 72 65 61 6b 6e 6f 6e 61 64 6a     nobreaknonadj
171f0 61 63 65 6e 74 28 70 72 65 76 74 6f 6b 65 6e 2c  acent(prevtoken,
17200 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20   token);..      
17210 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e        nonadjacen
17220 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b  t(token, nexttok
17230 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  en);..          
17240 20 20 76 61 72 20 72 69 67 68 74 20 3d 20 65 78    var right = ex
17250 70 72 65 73 73 69 6f 6e 28 31 30 30 29 3b 0d 0a  pression(100);..
17260 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17270 28 6c 65 66 74 20 26 26 20 6c 65 66 74 2e 69 64  (left && left.id
17280 20 3d 3d 3d 20 22 4e 61 4e 22 29 20 7c 7c 20 28   === "NaN") || (
17290 72 69 67 68 74 20 26 26 20 72 69 67 68 74 2e 69  right && right.i
172a0 64 20 3d 3d 3d 20 22 4e 61 4e 22 29 29 20 7b 0d  d === "NaN")) {.
172b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
172c0 20 77 61 72 6e 69 6e 67 28 22 55 73 65 20 74 68   warning("Use th
172d0 65 20 69 73 4e 61 4e 20 66 75 6e 63 74 69 6f 6e  e isNaN function
172e0 20 74 6f 20 63 6f 6d 70 61 72 65 20 77 69 74 68   to compare with
172f0 20 4e 61 4e 2e 22 2c 20 74 68 69 73 29 3b 0d 0a   NaN.", this);..
17300 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
17310 73 65 20 69 66 20 28 66 29 20 7b 0d 0a 20 20 20  se if (f) {..   
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 66 2e 61               f.a
17330 70 70 6c 79 28 74 68 69 73 2c 20 5b 6c 65 66 74  pply(this, [left
17340 2c 20 72 69 67 68 74 5d 29 3b 0d 0a 20 20 20 20  , right]);..    
17350 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
17360 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74 2e         if (left.
17370 69 64 20 3d 3d 3d 20 22 21 22 29 20 7b 0d 0a 20  id === "!") {.. 
17380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
17390 61 72 6e 69 6e 67 28 22 43 6f 6e 66 75 73 69 6e  arning("Confusin
173a0 67 20 75 73 65 20 6f 66 20 27 7b 61 7d 27 2e 22  g use of '{a}'."
173b0 2c 20 6c 65 66 74 2c 20 22 21 22 29 3b 0d 0a 20  , left, "!");.. 
173c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
173d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 69            if (ri
173e0 67 68 74 2e 69 64 20 3d 3d 3d 20 22 21 22 29 20  ght.id === "!") 
173f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17400 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e 66     warning("Conf
17410 75 73 69 6e 67 20 75 73 65 20 6f 66 20 27 7b 61  using use of '{a
17420 7d 27 2e 22 2c 20 72 69 67 68 74 2c 20 22 21 22  }'.", right, "!"
17430 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
17440 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  }..            t
17450 68 69 73 2e 6c 65 66 74 20 3d 20 6c 65 66 74 3b  his.left = left;
17460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
17470 69 73 2e 72 69 67 68 74 20 3d 20 72 69 67 68 74  is.right = right
17480 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
17490 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20  eturn this;..   
174a0 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20       };..       
174b0 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20 20 20 20   return x;..    
174c0 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74  }......    funct
174d0 69 6f 6e 20 69 73 50 6f 6f 72 52 65 6c 61 74 69  ion isPoorRelati
174e0 6f 6e 28 6e 6f 64 65 29 20 7b 0d 0a 20 20 20 20  on(node) {..    
174f0 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 20      return node 
17500 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
17510 20 20 28 28 6e 6f 64 65 2e 74 79 70 65 20 3d 3d    ((node.type ==
17520 3d 20 22 28 6e 75 6d 62 65 72 29 22 20 26 26 20  = "(number)" && 
17530 2b 6e 6f 64 65 2e 76 61 6c 75 65 20 3d 3d 3d 20  +node.value === 
17540 30 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  0) ||..         
17550 20 20 20 20 20 20 28 6e 6f 64 65 2e 74 79 70 65        (node.type
17560 20 3d 3d 3d 20 22 28 73 74 72 69 6e 67 29 22 20   === "(string)" 
17570 26 26 20 6e 6f 64 65 2e 76 61 6c 75 65 20 3d 3d  && node.value ==
17580 3d 20 22 22 29 20 7c 7c 0d 0a 20 20 20 20 20 20  = "") ||..      
17590 20 20 20 20 20 20 20 20 20 28 6e 6f 64 65 2e 74           (node.t
175a0 79 70 65 20 3d 3d 3d 20 22 6e 75 6c 6c 22 20 26  ype === "null" &
175b0 26 20 21 6f 70 74 69 6f 6e 2e 65 71 6e 75 6c 6c  & !option.eqnull
175c0 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
175d0 20 20 20 20 20 20 6e 6f 64 65 2e 74 79 70 65 20        node.type 
175e0 3d 3d 3d 20 22 74 72 75 65 22 20 7c 7c 0d 0a 20  === "true" ||.. 
175f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
17600 6f 64 65 2e 74 79 70 65 20 3d 3d 3d 20 22 66 61  ode.type === "fa
17610 6c 73 65 22 20 7c 7c 0d 0a 20 20 20 20 20 20 20  lse" ||..       
17620 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 74 79           node.ty
17630 70 65 20 3d 3d 3d 20 22 75 6e 64 65 66 69 6e 65  pe === "undefine
17640 64 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d  d");..    }.....
17650 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 73  .    function as
17660 73 69 67 6e 6f 70 28 73 29 20 7b 0d 0a 20 20 20  signop(s) {..   
17670 20 20 20 20 20 73 79 6d 62 6f 6c 28 73 2c 20 32       symbol(s, 2
17680 30 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d  0).exps = true;.
17690 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
176a0 6e 20 69 6e 66 69 78 28 73 2c 20 66 75 6e 63 74  n infix(s, funct
176b0 69 6f 6e 20 28 6c 65 66 74 2c 20 74 68 61 74 29  ion (left, that)
176c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
176d0 74 68 61 74 2e 6c 65 66 74 20 3d 20 6c 65 66 74  that.left = left
176e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
176f0 20 69 66 20 28 70 72 65 64 65 66 69 6e 65 64 5b   if (predefined[
17700 6c 65 66 74 2e 76 61 6c 75 65 5d 20 3d 3d 3d 20  left.value] === 
17710 66 61 6c 73 65 20 26 26 0d 0a 20 20 20 20 20 20  false &&..      
17720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63                sc
17730 6f 70 65 5b 6c 65 66 74 2e 76 61 6c 75 65 5d 5b  ope[left.value][
17740 22 28 67 6c 6f 62 61 6c 29 22 5d 20 3d 3d 3d 20  "(global)"] === 
17750 74 72 75 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  true) {..       
17760 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
17770 28 22 52 65 61 64 20 6f 6e 6c 79 2e 22 2c 20 6c  ("Read only.", l
17780 65 66 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  eft);..         
17790 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 65     } else if (le
177a0 66 74 5b 22 66 75 6e 63 74 69 6f 6e 22 5d 29 20  ft["function"]) 
177b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
177c0 20 20 20 77 61 72 6e 69 6e 67 28 22 27 7b 61 7d     warning("'{a}
177d0 27 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 2e  ' is a function.
177e0 22 2c 20 6c 65 66 74 2c 20 6c 65 66 74 2e 76 61  ", left, left.va
177f0 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
17800 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
17810 20 20 20 20 69 66 20 28 6c 65 66 74 29 20 7b 0d      if (left) {.
17820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17830 20 69 66 20 28 6f 70 74 69 6f 6e 2e 65 73 6e 65   if (option.esne
17840 78 74 20 26 26 20 66 75 6e 63 74 5b 6c 65 66 74  xt && funct[left
17850 2e 76 61 6c 75 65 5d 20 3d 3d 3d 20 22 63 6f 6e  .value] === "con
17860 73 74 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  st") {..        
17870 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
17880 69 6e 67 28 22 41 74 74 65 6d 70 74 69 6e 67 20  ing("Attempting 
17890 74 6f 20 6f 76 65 72 72 69 64 65 20 27 7b 61 7d  to override '{a}
178a0 27 20 77 68 69 63 68 20 69 73 20 61 20 63 6f 6e  ' which is a con
178b0 73 74 61 6e 74 22 2c 20 6c 65 66 74 2c 20 6c 65  stant", left, le
178c0 66 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ft.value);..    
178d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
178e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
178f0 20 69 66 20 28 6c 65 66 74 2e 69 64 20 3d 3d 3d   if (left.id ===
17900 20 22 2e 22 20 7c 7c 20 6c 65 66 74 2e 69 64 20   "." || left.id 
17910 3d 3d 3d 20 22 5b 22 29 20 7b 0d 0a 20 20 20 20  === "[") {..    
17920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17930 69 66 20 28 21 6c 65 66 74 2e 6c 65 66 74 20 7c  if (!left.left |
17940 7c 20 6c 65 66 74 2e 6c 65 66 74 2e 76 61 6c 75  | left.left.valu
17950 65 20 3d 3d 3d 20 22 61 72 67 75 6d 65 6e 74 73  e === "arguments
17960 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
17970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
17980 72 6e 69 6e 67 28 22 42 61 64 20 61 73 73 69 67  rning("Bad assig
17990 6e 6d 65 6e 74 2e 22 2c 20 74 68 61 74 29 3b 0d  nment.", that);.
179a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
179b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
179c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 61 74              that
179d0 2e 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73  .right = express
179e0 69 6f 6e 28 31 39 29 3b 0d 0a 20 20 20 20 20 20  ion(19);..      
179f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17a00 74 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20  turn that;..    
17a10 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
17a20 73 65 20 69 66 20 28 6c 65 66 74 2e 69 64 65 6e  se if (left.iden
17a30 74 69 66 69 65 72 20 26 26 20 21 6c 65 66 74 2e  tifier && !left.
17a40 72 65 73 65 72 76 65 64 29 20 7b 0d 0a 20 20 20  reserved) {..   
17a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17a60 20 69 66 20 28 66 75 6e 63 74 5b 6c 65 66 74 2e   if (funct[left.
17a70 76 61 6c 75 65 5d 20 3d 3d 3d 20 22 65 78 63 65  value] === "exce
17a80 70 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20  ption") {..     
17a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17aa0 20 20 20 77 61 72 6e 69 6e 67 28 22 44 6f 20 6e     warning("Do n
17ab0 6f 74 20 61 73 73 69 67 6e 20 74 6f 20 74 68 65  ot assign to the
17ac0 20 65 78 63 65 70 74 69 6f 6e 20 70 61 72 61 6d   exception param
17ad0 65 74 65 72 2e 22 2c 20 6c 65 66 74 29 3b 0d 0a  eter.", left);..
17ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17af0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
17b00 20 20 20 20 20 20 20 20 20 20 20 74 68 61 74 2e             that.
17b10 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73 69  right = expressi
17b20 6f 6e 28 31 39 29 3b 0d 0a 20 20 20 20 20 20 20  on(19);..       
17b30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
17b40 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20 20  urn that;..     
17b50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
17b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17b70 69 66 20 28 6c 65 66 74 20 3d 3d 3d 20 73 79 6e  if (left === syn
17b80 74 61 78 5b 22 66 75 6e 63 74 69 6f 6e 22 5d 29  tax["function"])
17b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17ba0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
17bb0 0d 0a 22 45 78 70 65 63 74 65 64 20 61 6e 20 69  .."Expected an i
17bc0 64 65 6e 74 69 66 69 65 72 20 69 6e 20 61 6e 20  dentifier in an 
17bd0 61 73 73 69 67 6e 6d 65 6e 74 20 61 6e 64 20 69  assignment and i
17be0 6e 73 74 65 61 64 20 73 61 77 20 61 20 66 75 6e  nstead saw a fun
17bf0 63 74 69 6f 6e 20 69 6e 76 6f 63 61 74 69 6f 6e  ction invocation
17c00 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
17c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c20 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20       token);..  
17c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
17c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
17c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72  ..            er
17c60 72 6f 72 28 22 42 61 64 20 61 73 73 69 67 6e 6d  ror("Bad assignm
17c70 65 6e 74 2e 22 2c 20 74 68 61 74 29 3b 0d 0a 20  ent.", that);.. 
17c80 20 20 20 20 20 20 20 7d 2c 20 32 30 29 3b 0d 0a         }, 20);..
17c90 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66      }......    f
17ca0 75 6e 63 74 69 6f 6e 20 62 69 74 77 69 73 65 28  unction bitwise(
17cb0 73 2c 20 66 2c 20 70 29 20 7b 0d 0a 20 20 20 20  s, f, p) {..    
17cc0 20 20 20 20 76 61 72 20 78 20 3d 20 73 79 6d 62      var x = symb
17cd0 6f 6c 28 73 2c 20 70 29 3b 0d 0a 20 20 20 20 20  ol(s, p);..     
17ce0 20 20 20 72 65 73 65 72 76 65 4e 61 6d 65 28 78     reserveName(x
17cf0 29 3b 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65  );..        x.le
17d00 64 20 3d 20 28 74 79 70 65 6f 66 20 66 20 3d 3d  d = (typeof f ==
17d10 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29 20 3f 20  = "function") ? 
17d20 66 20 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65  f : function (le
17d30 66 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ft) {..         
17d40 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 62 69     if (option.bi
17d50 74 77 69 73 65 29 20 7b 0d 0a 20 20 20 20 20 20  twise) {..      
17d60 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
17d70 67 28 22 55 6e 65 78 70 65 63 74 65 64 20 75 73  g("Unexpected us
17d80 65 20 6f 66 20 27 7b 61 7d 27 2e 22 2c 20 74 68  e of '{a}'.", th
17d90 69 73 2c 20 74 68 69 73 2e 69 64 29 3b 0d 0a 20  is, this.id);.. 
17da0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
17db0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
17dc0 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a 20 20 20  eft = left;..   
17dd0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 69           this.ri
17de0 67 68 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e  ght = expression
17df0 28 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (p);..          
17e00 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a    return this;..
17e10 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20          };..    
17e20 20 20 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20      return x;.. 
17e30 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75     }......    fu
17e40 6e 63 74 69 6f 6e 20 62 69 74 77 69 73 65 61 73  nction bitwiseas
17e50 73 69 67 6e 6f 70 28 73 29 20 7b 0d 0a 20 20 20  signop(s) {..   
17e60 20 20 20 20 20 73 79 6d 62 6f 6c 28 73 2c 20 32       symbol(s, 2
17e70 30 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d  0).exps = true;.
17e80 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
17e90 69 6e 66 69 78 28 73 2c 20 66 75 6e 63 74 69 6f  infix(s, functio
17ea0 6e 20 28 6c 65 66 74 2c 20 74 68 61 74 29 20 7b  n (left, that) {
17eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
17ec0 20 28 6f 70 74 69 6f 6e 2e 62 69 74 77 69 73 65   (option.bitwise
17ed0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
17ee0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e       warning("Un
17ef0 65 78 70 65 63 74 65 64 20 75 73 65 20 6f 66 20  expected use of 
17f00 27 7b 61 7d 27 2e 22 2c 20 74 68 61 74 2c 20 74  '{a}'.", that, t
17f10 68 61 74 2e 69 64 29 3b 0d 0a 20 20 20 20 20 20  hat.id);..      
17f20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
17f30 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74       nonadjacent
17f40 28 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65  (prevtoken, toke
17f50 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n);..           
17f60 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b   nonadjacent(tok
17f70 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d  en, nexttoken);.
17f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
17f90 28 6c 65 66 74 29 20 7b 0d 0a 20 20 20 20 20 20  (left) {..      
17fa0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65            if (le
17fb0 66 74 2e 69 64 20 3d 3d 3d 20 22 2e 22 20 7c 7c  ft.id === "." ||
17fc0 20 6c 65 66 74 2e 69 64 20 3d 3d 3d 20 22 5b 22   left.id === "["
17fd0 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
17fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65               (le
17ff0 66 74 2e 69 64 65 6e 74 69 66 69 65 72 20 26 26  ft.identifier &&
18000 20 21 6c 65 66 74 2e 72 65 73 65 72 76 65 64 29   !left.reserved)
18010 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
18020 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73           express
18030 69 6f 6e 28 31 39 29 3b 0d 0a 20 20 20 20 20 20  ion(19);..      
18040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18050 74 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20  turn that;..    
18060 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
18070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
18080 66 20 28 6c 65 66 74 20 3d 3d 3d 20 73 79 6e 74  f (left === synt
18090 61 78 5b 22 66 75 6e 63 74 69 6f 6e 22 5d 29 20  ax["function"]) 
180a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
180b0 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 0d         warning(.
180c0 0a 22 45 78 70 65 63 74 65 64 20 61 6e 20 69 64  ."Expected an id
180d0 65 6e 74 69 66 69 65 72 20 69 6e 20 61 6e 20 61  entifier in an a
180e0 73 73 69 67 6e 6d 65 6e 74 2c 20 61 6e 64 20 69  ssignment, and i
180f0 6e 73 74 65 61 64 20 73 61 77 20 61 20 66 75 6e  nstead saw a fun
18100 63 74 69 6f 6e 20 69 6e 76 6f 63 61 74 69 6f 6e  ction invocation
18110 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
18120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18130 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20       token);..  
18140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
18150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18160 20 72 65 74 75 72 6e 20 74 68 61 74 3b 0d 0a 20   return that;.. 
18170 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
18180 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28            error(
18190 22 42 61 64 20 61 73 73 69 67 6e 6d 65 6e 74 2e  "Bad assignment.
181a0 22 2c 20 74 68 61 74 29 3b 0d 0a 20 20 20 20 20  ", that);..     
181b0 20 20 20 7d 2c 20 32 30 29 3b 0d 0a 20 20 20 20     }, 20);..    
181c0 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74  }......    funct
181d0 69 6f 6e 20 73 75 66 66 69 78 28 73 29 20 7b 0d  ion suffix(s) {.
181e0 0a 20 20 20 20 20 20 20 20 76 61 72 20 78 20 3d  .        var x =
181f0 20 73 79 6d 62 6f 6c 28 73 2c 20 31 35 30 29 3b   symbol(s, 150);
18200 0d 0a 20 20 20 20 20 20 20 20 78 2e 6c 65 64 20  ..        x.led 
18210 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66 74  = function (left
18220 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
18230 20 69 66 20 28 6f 70 74 69 6f 6e 2e 70 6c 75 73   if (option.plus
18240 70 6c 75 73 29 20 7b 0d 0a 20 20 20 20 20 20 20  plus) {..       
18250 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
18260 28 22 55 6e 65 78 70 65 63 74 65 64 20 75 73 65  ("Unexpected use
18270 20 6f 66 20 27 7b 61 7d 27 2e 22 2c 20 74 68 69   of '{a}'.", thi
18280 73 2c 20 74 68 69 73 2e 69 64 29 3b 0d 0a 20 20  s, this.id);..  
18290 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
182a0 20 69 66 20 28 28 21 6c 65 66 74 2e 69 64 65 6e   if ((!left.iden
182b0 74 69 66 69 65 72 20 7c 7c 20 6c 65 66 74 2e 72  tifier || left.r
182c0 65 73 65 72 76 65 64 29 20 26 26 0d 0a 20 20 20  eserved) &&..   
182d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
182e0 20 6c 65 66 74 2e 69 64 20 21 3d 3d 20 22 2e 22   left.id !== "."
182f0 20 26 26 20 6c 65 66 74 2e 69 64 20 21 3d 3d 20   && left.id !== 
18300 22 5b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  "[") {..        
18310 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
18320 22 42 61 64 20 6f 70 65 72 61 6e 64 2e 22 2c 20  "Bad operand.", 
18330 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
18340 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
18350 20 20 20 74 68 69 73 2e 6c 65 66 74 20 3d 20 6c     this.left = l
18360 65 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eft;..          
18370 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a    return this;..
18380 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20          };..    
18390 20 20 20 20 72 65 74 75 72 6e 20 78 3b 0d 0a 20      return x;.. 
183a0 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2f     }......    //
183b0 20 66 6e 70 61 72 61 6d 20 6d 65 61 6e 73 20 74   fnparam means t
183c0 68 61 74 20 74 68 69 73 20 69 64 65 6e 74 69 66  hat this identif
183d0 69 65 72 20 69 73 20 62 65 69 6e 67 20 64 65 66  ier is being def
183e0 69 6e 65 64 20 61 73 20 61 20 66 75 6e 63 74 69  ined as a functi
183f0 6f 6e 0d 0a 20 20 20 20 2f 2f 20 61 72 67 75 6d  on..    // argum
18400 65 6e 74 20 28 73 65 65 20 69 64 65 6e 74 69 66  ent (see identif
18410 69 65 72 28 29 29 0d 0a 20 20 20 20 66 75 6e 63  ier())..    func
18420 74 69 6f 6e 20 6f 70 74 69 6f 6e 61 6c 69 64 65  tion optionalide
18430 6e 74 69 66 69 65 72 28 66 6e 70 61 72 61 6d 29  ntifier(fnparam)
18440 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
18450 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 65 6e 74 69  nexttoken.identi
18460 66 69 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20  fier) {..       
18470 20 20 20 20 20 61 64 76 61 6e 63 65 28 29 3b 0d       advance();.
18480 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
18490 28 74 6f 6b 65 6e 2e 72 65 73 65 72 76 65 64 20  (token.reserved 
184a0 26 26 20 21 6f 70 74 69 6f 6e 2e 65 73 35 29 20  && !option.es5) 
184b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
184c0 20 20 20 2f 2f 20 60 75 6e 64 65 66 69 6e 65 64     // `undefined
184d0 60 20 61 73 20 61 20 66 75 6e 63 74 69 6f 6e 20  ` as a function 
184e0 70 61 72 61 6d 20 69 73 20 61 20 63 6f 6d 6d 6f  param is a commo
184f0 6e 20 70 61 74 74 65 72 6e 20 74 6f 20 70 72 6f  n pattern to pro
18500 74 65 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20  tect..          
18510 20 20 20 20 20 20 2f 2f 20 61 67 61 69 6e 73 74        // against
18520 20 74 68 65 20 63 61 73 65 20 77 68 65 6e 20 73   the case when s
18530 6f 6d 65 62 6f 64 79 20 64 6f 65 73 20 60 75 6e  omebody does `un
18540 64 65 66 69 6e 65 64 20 3d 20 74 72 75 65 60 20  defined = true` 
18550 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
18560 20 20 20 20 20 2f 2f 20 68 65 6c 70 20 77 69 74       // help wit
18570 68 20 6d 69 6e 69 66 69 63 61 74 69 6f 6e 2e 20  h minification. 
18580 4d 6f 72 65 20 69 6e 66 6f 3a 20 68 74 74 70 73  More info: https
18590 3a 2f 2f 67 69 73 74 2e 67 69 74 68 75 62 2e 63  ://gist.github.c
185a0 6f 6d 2f 33 31 35 39 31 36 0d 0a 20 20 20 20 20  om/315916..     
185b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
185c0 66 6e 70 61 72 61 6d 20 7c 7c 20 74 6f 6b 65 6e  fnparam || token
185d0 2e 76 61 6c 75 65 20 21 3d 3d 20 22 75 6e 64 65  .value !== "unde
185e0 66 69 6e 65 64 22 29 20 7b 0d 0a 20 20 20 20 20  fined") {..     
185f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
18600 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64  arning("Expected
18610 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61   an identifier a
18620 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 27  nd instead saw '
18630 7b 61 7d 27 20 28 61 20 72 65 73 65 72 76 65 64  {a}' (a reserved
18640 20 77 6f 72 64 29 2e 22 2c 0d 0a 20 20 20 20 20   word).",..     
18650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18660 20 20 20 20 20 20 20 74 6f 6b 65 6e 2c 20 74 6f         token, to
18670 6b 65 6e 2e 69 64 29 3b 0d 0a 20 20 20 20 20 20  ken.id);..      
18680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18690 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
186a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
186b0 6f 6b 65 6e 2e 76 61 6c 75 65 3b 0d 0a 20 20 20  oken.value;..   
186c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
186d0 0a 20 20 20 20 2f 2f 20 66 6e 70 61 72 61 6d 20  .    // fnparam 
186e0 6d 65 61 6e 73 20 74 68 61 74 20 74 68 69 73 20  means that this 
186f0 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 62 65  identifier is be
18700 69 6e 67 20 64 65 66 69 6e 65 64 20 61 73 20 61  ing defined as a
18710 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f   function..    /
18720 2f 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20 20 20  / argument..    
18730 66 75 6e 63 74 69 6f 6e 20 69 64 65 6e 74 69 66  function identif
18740 69 65 72 28 66 6e 70 61 72 61 6d 29 20 7b 0d 0a  ier(fnparam) {..
18750 20 20 20 20 20 20 20 20 76 61 72 20 69 20 3d 20          var i = 
18760 6f 70 74 69 6f 6e 61 6c 69 64 65 6e 74 69 66 69  optionalidentifi
18770 65 72 28 66 6e 70 61 72 61 6d 29 3b 0d 0a 20 20  er(fnparam);..  
18780 20 20 20 20 20 20 69 66 20 28 69 29 20 7b 0d 0a        if (i) {..
18790 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
187a0 72 6e 20 69 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rn i;..        }
187b0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 6f  ..        if (to
187c0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 66 75 6e 63  ken.id === "func
187d0 74 69 6f 6e 22 20 26 26 20 6e 65 78 74 74 6f 6b  tion" && nexttok
187e0 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 22 29 20 7b  en.id === "(") {
187f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61  ..            wa
18800 72 6e 69 6e 67 28 22 4d 69 73 73 69 6e 67 20 6e  rning("Missing n
18810 61 6d 65 20 69 6e 20 66 75 6e 63 74 69 6f 6e 20  ame in function 
18820 64 65 63 6c 61 72 61 74 69 6f 6e 2e 22 29 3b 0d  declaration.");.
18830 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  .        } else 
18840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  {..            e
18850 72 72 6f 72 28 22 45 78 70 65 63 74 65 64 20 61  rror("Expected a
18860 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64  n identifier and
18870 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 61   instead saw '{a
18880 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }'.",..         
18890 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 74             nextt
188a0 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e  oken, nexttoken.
188b0 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
188c0 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20   }..    }...... 
188d0 20 20 20 66 75 6e 63 74 69 6f 6e 20 72 65 61 63     function reac
188e0 68 61 62 6c 65 28 73 29 20 7b 0d 0a 20 20 20 20  hable(s) {..    
188f0 20 20 20 20 76 61 72 20 69 20 3d 20 30 2c 20 74      var i = 0, t
18900 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e  ;..        if (n
18910 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20  exttoken.id !== 
18920 22 3b 22 20 7c 7c 20 6e 6f 72 65 61 63 68 29 20  ";" || noreach) 
18930 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
18940 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20  eturn;..        
18950 7d 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28  }..        for (
18960 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ;;) {..         
18970 20 20 20 74 20 3d 20 70 65 65 6b 28 69 29 3b 0d     t = peek(i);.
18980 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
18990 28 74 2e 72 65 61 63 68 29 20 7b 0d 0a 20 20 20  (t.reach) {..   
189a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
189b0 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  urn;..          
189c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
189d0 20 69 66 20 28 74 2e 69 64 20 21 3d 3d 20 22 28   if (t.id !== "(
189e0 65 6e 64 6c 69 6e 65 29 22 29 20 7b 0d 0a 20 20  endline)") {..  
189f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
18a00 20 28 74 2e 69 64 20 3d 3d 3d 20 22 66 75 6e 63   (t.id === "func
18a10 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20  tion") {..      
18a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
18a30 20 28 21 6f 70 74 69 6f 6e 2e 6c 61 74 65 64 65   (!option.latede
18a40 66 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  f) {..          
18a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
18a60 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
18a70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a90 20 77 61 72 6e 69 6e 67 28 0d 0a 22 49 6e 6e 65   warning(.."Inne
18aa0 72 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 75  r functions shou
18ab0 6c 64 20 62 65 20 6c 69 73 74 65 64 20 61 74 20  ld be listed at 
18ac0 74 68 65 20 74 6f 70 20 6f 66 20 74 68 65 20 6f  the top of the o
18ad0 75 74 65 72 20 66 75 6e 63 74 69 6f 6e 2e 22 2c  uter function.",
18ae0 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   t);..          
18af0 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
18b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18b10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
18b20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e       warning("Un
18b30 72 65 61 63 68 61 62 6c 65 20 27 7b 61 7d 27 20  reachable '{a}' 
18b40 61 66 74 65 72 20 27 7b 62 7d 27 2e 22 2c 20 74  after '{b}'.", t
18b50 2c 20 74 2e 76 61 6c 75 65 2c 20 73 29 3b 0d 0a  , t.value, s);..
18b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b70 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
18b80 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
18b90 20 20 20 69 20 2b 3d 20 31 3b 0d 0a 20 20 20 20     i += 1;..    
18ba0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
18bb0 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73  ..    function s
18bc0 74 61 74 65 6d 65 6e 74 28 6e 6f 69 6e 64 65 6e  tatement(noinden
18bd0 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  t) {..        va
18be0 72 20 69 20 3d 20 69 6e 64 65 6e 74 2c 20 72 2c  r i = indent, r,
18bf0 20 73 20 3d 20 73 63 6f 70 65 2c 20 74 20 3d 20   s = scope, t = 
18c00 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 0d 0a 20 20  nexttoken;....  
18c10 20 20 20 20 20 20 69 66 20 28 74 2e 69 64 20 3d        if (t.id =
18c20 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20  == ";") {..     
18c30 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22         advance("
18c40 3b 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ;");..          
18c50 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20    return;..     
18c60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
18c70 2f 2f 20 49 73 20 74 68 69 73 20 61 20 6c 61 62  // Is this a lab
18c80 65 6c 6c 65 64 20 73 74 61 74 65 6d 65 6e 74 3f  elled statement?
18c90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
18ca0 74 2e 69 64 65 6e 74 69 66 69 65 72 20 26 26 20  t.identifier && 
18cb0 21 74 2e 72 65 73 65 72 76 65 64 20 26 26 20 70  !t.reserved && p
18cc0 65 65 6b 28 29 2e 69 64 20 3d 3d 3d 20 22 3a 22  eek().id === ":"
18cd0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
18ce0 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20   advance();..   
18cf0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
18d00 28 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  (":");..        
18d10 20 20 20 20 73 63 6f 70 65 20 3d 20 4f 62 6a 65      scope = Obje
18d20 63 74 2e 63 72 65 61 74 65 28 73 29 3b 0d 0a 20  ct.create(s);.. 
18d30 20 20 20 20 20 20 20 20 20 20 20 61 64 64 6c 61             addla
18d40 62 65 6c 28 74 2e 76 61 6c 75 65 2c 20 22 6c 61  bel(t.value, "la
18d50 62 65 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  bel");....      
18d60 20 20 20 20 20 20 69 66 20 28 21 6e 65 78 74 74        if (!nextt
18d70 6f 6b 65 6e 2e 6c 61 62 65 6c 6c 65 64 20 26 26  oken.labelled &&
18d80 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65   nexttoken.value
18d90 20 21 3d 3d 20 22 7b 22 29 20 7b 0d 0a 20 20 20   !== "{") {..   
18da0 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
18db0 6e 69 6e 67 28 22 4c 61 62 65 6c 20 27 7b 61 7d  ning("Label '{a}
18dc0 27 20 6f 6e 20 7b 62 7d 20 73 74 61 74 65 6d 65  ' on {b} stateme
18dd0 6e 74 2e 22 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c  nt.", nexttoken,
18de0 20 74 2e 76 61 6c 75 65 2c 20 6e 65 78 74 74 6f   t.value, nextto
18df0 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ken.value);..   
18e00 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
18e10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6a 78            if (jx
18e20 2e 74 65 73 74 28 74 2e 76 61 6c 75 65 20 2b 20  .test(t.value + 
18e30 22 3a 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20  ":")) {..       
18e40 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
18e50 28 22 4c 61 62 65 6c 20 27 7b 61 7d 27 20 6c 6f  ("Label '{a}' lo
18e60 6f 6b 73 20 6c 69 6b 65 20 61 20 6a 61 76 61 73  oks like a javas
18e70 63 72 69 70 74 20 75 72 6c 2e 22 2c 20 74 2c 20  cript url.", t, 
18e80 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t.value);..     
18e90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
18ea0 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65          nexttoke
18eb0 6e 2e 6c 61 62 65 6c 20 3d 20 74 2e 76 61 6c 75  n.label = t.valu
18ec0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
18ed0 74 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a  t = nexttoken;..
18ee0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
18ef0 20 20 20 20 20 2f 2f 20 49 73 20 69 74 20 61 20       // Is it a 
18f00 6c 6f 6e 65 6c 79 20 62 6c 6f 63 6b 3f 0d 0a 0d  lonely block?...
18f10 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 2e 69  .        if (t.i
18f20 64 20 3d 3d 3d 20 22 7b 22 29 20 7b 0d 0a 20 20  d === "{") {..  
18f30 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28            block(
18f40 74 72 75 65 2c 20 74 72 75 65 29 3b 0d 0a 20 20  true, true);..  
18f50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
18f60 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
18f70 20 20 20 20 20 20 20 20 2f 2f 20 50 61 72 73 65          // Parse
18f80 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2e 0d   the statement..
18f90 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ...        if (!
18fa0 6e 6f 69 6e 64 65 6e 74 29 20 7b 0d 0a 20 20 20  noindent) {..   
18fb0 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 61           indenta
18fc0 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  tion();..       
18fd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 20 3d 20   }..        r = 
18fe0 65 78 70 72 65 73 73 69 6f 6e 28 30 2c 20 74 72  expression(0, tr
18ff0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
19000 2f 2f 20 4c 6f 6f 6b 20 66 6f 72 20 74 68 65 20  // Look for the 
19010 66 69 6e 61 6c 20 73 65 6d 69 63 6f 6c 6f 6e 2e  final semicolon.
19020 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
19030 21 74 2e 62 6c 6f 63 6b 29 20 7b 0d 0a 20 20 20  !t.block) {..   
19040 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70           if (!op
19050 74 69 6f 6e 2e 65 78 70 72 20 26 26 20 28 21 72  tion.expr && (!r
19060 20 7c 7c 20 21 72 2e 65 78 70 73 29 29 20 7b 0d   || !r.exps)) {.
19070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19080 20 77 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74   warning("Expect
19090 65 64 20 61 6e 20 61 73 73 69 67 6e 6d 65 6e 74  ed an assignment
190a0 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c   or function cal
190b0 6c 20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61  l and instead sa
190c0 77 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e  w an expression.
190d0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
190e0 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d          token);.
190f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  .            } e
19100 6c 73 65 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e  lse if (option.n
19110 6f 6e 65 77 20 26 26 20 72 2e 69 64 20 3d 3d 3d  onew && r.id ===
19120 20 22 28 22 20 26 26 20 72 2e 6c 65 66 74 2e 69   "(" && r.left.i
19130 64 20 3d 3d 3d 20 22 6e 65 77 22 29 20 7b 0d 0a  d === "new") {..
19140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19150 77 61 72 6e 69 6e 67 28 22 44 6f 20 6e 6f 74 20  warning("Do not 
19160 75 73 65 20 27 6e 65 77 27 20 66 6f 72 20 73 69  use 'new' for si
19170 64 65 20 65 66 66 65 63 74 73 2e 22 2c 20 74 29  de effects.", t)
19180 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
19190 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
191a0 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64  if (nexttoken.id
191b0 20 3d 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20   === ",") {..   
191c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
191d0 75 72 6e 20 63 6f 6d 6d 61 28 29 3b 0d 0a 20 20  urn comma();..  
191e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
191f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
19200 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20  exttoken.id !== 
19210 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ";") {..        
19220 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74          if (!opt
19230 69 6f 6e 2e 61 73 69 29 20 7b 0d 0a 20 20 20 20  ion.asi) {..    
19240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19250 2f 2f 20 49 66 20 74 68 69 73 20 69 73 20 74 68  // If this is th
19260 65 20 6c 61 73 74 20 73 74 61 74 65 6d 65 6e 74  e last statement
19270 20 69 6e 20 61 20 62 6c 6f 63 6b 20 74 68 61 74   in a block that
19280 20 65 6e 64 73 20 6f 6e 0d 0a 20 20 20 20 20 20   ends on..      
19290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
192a0 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20 2a   the same line *
192b0 61 6e 64 2a 20 6f 70 74 69 6f 6e 20 6c 61 73 74  and* option last
192c0 73 65 6d 69 63 20 69 73 20 6f 6e 2c 20 69 67 6e  semic is on, ign
192d0 6f 72 65 20 74 68 65 20 77 61 72 6e 69 6e 67 2e  ore the warning.
192e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
192f0 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 72 77 69        // Otherwi
19300 73 65 2c 20 63 6f 6d 70 6c 61 69 6e 20 61 62 6f  se, complain abo
19310 75 74 20 6d 69 73 73 69 6e 67 20 73 65 6d 69 63  ut missing semic
19320 6f 6c 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  olon...         
19330 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
19340 6f 70 74 69 6f 6e 2e 6c 61 73 74 73 65 6d 69 63  option.lastsemic
19350 20 7c 7c 20 6e 65 78 74 74 6f 6b 65 6e 2e 69 64   || nexttoken.id
19360 20 21 3d 3d 20 22 7d 22 20 7c 7c 0d 0a 20 20 20   !== "}" ||..   
19370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19380 20 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b           nexttok
19390 65 6e 2e 6c 69 6e 65 20 21 3d 3d 20 74 6f 6b 65  en.line !== toke
193a0 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20  n.line) {..     
193b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
193c0 20 20 20 77 61 72 6e 69 6e 67 41 74 28 22 4d 69     warningAt("Mi
193d0 73 73 69 6e 67 20 73 65 6d 69 63 6f 6c 6f 6e 2e  ssing semicolon.
193e0 22 2c 20 74 6f 6b 65 6e 2e 6c 69 6e 65 2c 20 74  ", token.line, t
193f0 6f 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 29 3b  oken.character);
19400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19410 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19420 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19430 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
19440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19450 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e    adjacent(token
19460 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20  , nexttoken);.. 
19470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
19480 64 76 61 6e 63 65 28 22 3b 22 29 3b 0d 0a 20 20  dvance(";");..  
19490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
194a0 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c  nadjacent(token,
194b0 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20   nexttoken);..  
194c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
194d0 20 20 20 20 20 7d 0d 0a 0d 0a 2f 2f 20 52 65 73       }....// Res
194e0 74 6f 72 65 20 74 68 65 20 69 6e 64 65 6e 74 61  tore the indenta
194f0 74 69 6f 6e 2e 0d 0a 0d 0a 20 20 20 20 20 20 20  tion.....       
19500 20 69 6e 64 65 6e 74 20 3d 20 69 3b 0d 0a 20 20   indent = i;..  
19510 20 20 20 20 20 20 73 63 6f 70 65 20 3d 20 73 3b        scope = s;
19520 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
19530 20 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a   r;..    }......
19540 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 74 61      function sta
19550 74 65 6d 65 6e 74 73 28 73 74 61 72 74 4c 69 6e  tements(startLin
19560 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  e) {..        va
19570 72 20 61 20 3d 20 5b 5d 2c 20 70 3b 0d 0a 0d 0a  r a = [], p;....
19580 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 21          while (!
19590 6e 65 78 74 74 6f 6b 65 6e 2e 72 65 61 63 68 20  nexttoken.reach 
195a0 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20  && nexttoken.id 
195b0 21 3d 3d 20 22 28 65 6e 64 29 22 29 20 7b 0d 0a  !== "(end)") {..
195c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
195d0 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d  nexttoken.id ===
195e0 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20   ";") {..       
195f0 20 20 20 20 20 20 20 20 20 70 20 3d 20 70 65 65           p = pee
19600 6b 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  k();..          
19610 20 20 20 20 20 20 69 66 20 28 21 70 20 7c 7c 20        if (!p || 
19620 70 2e 69 64 20 21 3d 3d 20 22 28 22 29 20 7b 0d  p.id !== "(") {.
19630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19640 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e       warning("Un
19650 6e 65 63 65 73 73 61 72 79 20 73 65 6d 69 63 6f  necessary semico
19660 6c 6f 6e 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20  lon.");..       
19670 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19680 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61              adva
19690 6e 63 65 28 22 3b 22 29 3b 0d 0a 20 20 20 20 20  nce(";");..     
196a0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d         } else {.
196b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
196c0 20 61 2e 70 75 73 68 28 73 74 61 74 65 6d 65 6e   a.push(statemen
196d0 74 28 73 74 61 72 74 4c 69 6e 65 20 3d 3d 3d 20  t(startLine === 
196e0 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e 65 29 29  nexttoken.line))
196f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
19700 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
19710 20 20 20 20 20 72 65 74 75 72 6e 20 61 3b 0d 0a       return a;..
19720 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 2f      }......    /
19730 2a 0d 0a 20 20 20 20 20 2a 20 72 65 61 64 20 61  *..     * read a
19740 6c 6c 20 64 69 72 65 63 74 69 76 65 73 0d 0a 20  ll directives.. 
19750 20 20 20 20 2a 20 72 65 63 6f 67 6e 69 7a 65 73      * recognizes
19760 20 61 20 73 69 6d 70 6c 65 20 66 6f 72 6d 20 6f   a simple form o
19770 66 20 61 73 69 2c 20 62 75 74 20 61 6c 77 61 79  f asi, but alway
19780 73 0d 0a 20 20 20 20 20 2a 20 77 61 72 6e 73 2c  s..     * warns,
19790 20 69 66 20 69 74 20 69 73 20 75 73 65 64 0d 0a   if it is used..
197a0 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e       */..    fun
197b0 63 74 69 6f 6e 20 64 69 72 65 63 74 69 76 65 73  ction directives
197c0 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  () {..        va
197d0 72 20 69 2c 20 70 2c 20 70 6e 3b 0d 0a 0d 0a 20  r i, p, pn;.... 
197e0 20 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20         for (;;) 
197f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
19800 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20  f (nexttoken.id 
19810 3d 3d 3d 20 22 28 73 74 72 69 6e 67 29 22 29 20  === "(string)") 
19820 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19830 20 20 20 70 20 3d 20 70 65 65 6b 28 30 29 3b 0d     p = peek(0);.
19840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19850 20 69 66 20 28 70 2e 69 64 20 3d 3d 3d 20 22 28   if (p.id === "(
19860 65 6e 64 6c 69 6e 65 29 22 29 20 7b 0d 0a 20 20  endline)") {..  
19870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19880 20 20 69 20 3d 20 31 3b 0d 0a 20 20 20 20 20 20    i = 1;..      
19890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f                do
198a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
198b0 20 20 20 20 20 20 20 20 20 20 20 20 70 6e 20 3d              pn =
198c0 20 70 65 65 6b 28 69 29 3b 0d 0a 20 20 20 20 20   peek(i);..     
198d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
198e0 20 20 20 69 20 3d 20 69 20 2b 20 31 3b 0d 0a 20     i = i + 1;.. 
198f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19900 20 20 20 7d 20 77 68 69 6c 65 20 28 70 6e 2e 69     } while (pn.i
19910 64 20 3d 3d 3d 20 22 28 65 6e 64 6c 69 6e 65 29  d === "(endline)
19920 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
19930 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
19940 6e 2e 69 64 20 21 3d 3d 20 22 3b 22 29 20 7b 0d  n.id !== ";") {.
19950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19960 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6e 2e           if (pn.
19970 69 64 20 21 3d 3d 20 22 28 73 74 72 69 6e 67 29  id !== "(string)
19980 22 20 26 26 20 70 6e 2e 69 64 20 21 3d 3d 20 22  " && pn.id !== "
19990 28 6e 75 6d 62 65 72 29 22 20 26 26 0d 0a 20 20  (number)" &&..  
199a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
199b0 20 20 20 20 20 20 20 20 20 20 70 6e 2e 69 64 20            pn.id 
199c0 21 3d 3d 20 22 28 72 65 67 65 78 70 29 22 20 26  !== "(regexp)" &
199d0 26 20 70 6e 2e 69 64 65 6e 74 69 66 69 65 72 20  & pn.identifier 
199e0 21 3d 3d 20 74 72 75 65 20 26 26 0d 0a 20 20 20  !== true &&..   
199f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a00 20 20 20 20 20 20 20 20 20 70 6e 2e 69 64 20 21           pn.id !
19a10 3d 3d 20 22 7d 22 29 20 7b 0d 0a 20 20 20 20 20  == "}") {..     
19a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a30 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
19a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a50 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a70 20 20 77 61 72 6e 69 6e 67 28 22 4d 69 73 73 69    warning("Missi
19a80 6e 67 20 73 65 6d 69 63 6f 6c 6f 6e 2e 22 2c 20  ng semicolon.", 
19a90 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20  nexttoken);..   
19aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ab0 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
19ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ad0 20 20 20 70 20 3d 20 70 6e 3b 0d 0a 20 20 20 20     p = pn;..    
19ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19af0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
19b00 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 70 2e     } else if (p.
19b10 69 64 20 3d 3d 3d 20 22 7d 22 29 20 7b 0d 0a 20  id === "}") {.. 
19b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b30 20 20 20 2f 2f 20 64 69 72 65 63 74 69 76 65 20     // directive 
19b40 77 69 74 68 20 6e 6f 20 6f 74 68 65 72 20 73 74  with no other st
19b50 61 74 65 6d 65 6e 74 73 2c 20 77 61 72 6e 20 61  atements, warn a
19b60 62 6f 75 74 20 6d 69 73 73 69 6e 67 20 73 65 6d  bout missing sem
19b70 69 63 6f 6c 6f 6e 0d 0a 20 20 20 20 20 20 20 20  icolon..        
19b80 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
19b90 69 6e 67 28 22 4d 69 73 73 69 6e 67 20 73 65 6d  ing("Missing sem
19ba0 69 63 6f 6c 6f 6e 2e 22 2c 20 70 29 3b 0d 0a 20  icolon.", p);.. 
19bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
19bc0 20 65 6c 73 65 20 69 66 20 28 70 2e 69 64 20 21   else if (p.id !
19bd0 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20  == ";") {..     
19be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
19bf0 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
19c00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
19c10 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
19c20 6e 74 61 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20  ntation();..    
19c30 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61              adva
19c40 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  nce();..        
19c50 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
19c60 63 74 69 76 65 5b 74 6f 6b 65 6e 2e 76 61 6c 75  ctive[token.valu
19c70 65 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  e]) {..         
19c80 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
19c90 6e 67 28 22 55 6e 6e 65 63 65 73 73 61 72 79 20  ng("Unnecessary 
19ca0 64 69 72 65 63 74 69 76 65 20 5c 22 7b 61 7d 5c  directive \"{a}\
19cb0 22 2e 22 2c 20 74 6f 6b 65 6e 2c 20 74 6f 6b 65  ".", token, toke
19cc0 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  n.value);..     
19cd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
19ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19cf0 69 66 20 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 20  if (token.value 
19d00 3d 3d 3d 20 22 75 73 65 20 73 74 72 69 63 74 22  === "use strict"
19d10 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
19d20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70           if (!op
19d30 74 69 6f 6e 5b 22 28 65 78 70 6c 69 63 69 74 4e  tion["(explicitN
19d40 65 77 63 61 70 29 22 5d 29 0d 0a 20 20 20 20 20  ewcap)"])..     
19d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d60 20 20 20 6f 70 74 69 6f 6e 2e 6e 65 77 63 61 70     option.newcap
19d70 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
19d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70                op
19d90 74 69 6f 6e 2e 75 6e 64 65 66 20 3d 20 74 72 75  tion.undef = tru
19da0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
19db0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
19dc0 20 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 72           // ther
19dd0 65 27 73 20 6e 6f 20 64 69 72 65 63 74 69 76 65  e's no directive
19de0 20 6e 65 67 61 74 69 6f 6e 2c 20 73 6f 20 61 6c   negation, so al
19df0 77 61 79 73 20 73 65 74 20 74 6f 20 74 72 75 65  ways set to true
19e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19e10 20 20 64 69 72 65 63 74 69 76 65 5b 74 6f 6b 65    directive[toke
19e20 6e 2e 76 61 6c 75 65 5d 20 3d 20 74 72 75 65 3b  n.value] = true;
19e30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19e40 20 20 20 20 69 66 20 28 70 2e 69 64 20 3d 3d 3d      if (p.id ===
19e50 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20   ";") {..       
19e60 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76               adv
19e70 61 6e 63 65 28 22 3b 22 29 3b 0d 0a 20 20 20 20  ance(";");..    
19e80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
19e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
19ea0 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
19eb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19ec0 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
19ed0 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
19ee0 0a 0d 0a 20 20 20 20 2f 2a 0d 0a 20 20 20 20 20  ...    /*..     
19ef0 2a 20 50 61 72 73 65 73 20 61 20 73 69 6e 67 6c  * Parses a singl
19f00 65 20 62 6c 6f 63 6b 2e 20 41 20 62 6c 6f 63 6b  e block. A block
19f10 20 69 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f   is a sequence o
19f20 66 20 73 74 61 74 65 6d 65 6e 74 73 20 77 72 61  f statements wra
19f30 70 70 65 64 20 69 6e 0d 0a 20 20 20 20 20 2a 20  pped in..     * 
19f40 62 72 61 63 65 73 2e 0d 0a 20 20 20 20 20 2a 0d  braces...     *.
19f50 0a 20 20 20 20 20 2a 20 6f 72 64 69 6e 61 72 79  .     * ordinary
19f60 20 2d 20 74 72 75 65 20 66 6f 72 20 65 76 65 72   - true for ever
19f70 79 74 68 69 6e 67 20 62 75 74 20 66 75 6e 63 74  ything but funct
19f80 69 6f 6e 20 62 6f 64 69 65 73 20 61 6e 64 20 74  ion bodies and t
19f90 72 79 20 62 6c 6f 63 6b 73 2e 0d 0a 20 20 20 20  ry blocks...    
19fa0 20 2a 20 73 74 6d 74 20 20 20 20 20 2d 20 74 72   * stmt     - tr
19fb0 75 65 20 69 66 20 62 6c 6f 63 6b 20 63 61 6e 20  ue if block can 
19fc0 62 65 20 61 20 73 69 6e 67 6c 65 20 73 74 61 74  be a single stat
19fd0 65 6d 65 6e 74 20 28 65 2e 67 2e 20 69 6e 20 69  ement (e.g. in i
19fe0 66 2f 66 6f 72 2f 77 68 69 6c 65 29 2e 0d 0a 20  f/for/while)... 
19ff0 20 20 20 20 2a 20 69 73 66 75 6e 63 20 20 20 2d      * isfunc   -
1a000 20 74 72 75 65 20 69 66 20 62 6c 6f 63 6b 20 69   true if block i
1a010 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 62 6f 64  s a function bod
1a020 79 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20  y..     */..    
1a030 66 75 6e 63 74 69 6f 6e 20 62 6c 6f 63 6b 28 6f  function block(o
1a040 72 64 69 6e 61 72 79 2c 20 73 74 6d 74 2c 20 69  rdinary, stmt, i
1a050 73 66 75 6e 63 29 20 7b 0d 0a 20 20 20 20 20 20  sfunc) {..      
1a060 20 20 76 61 72 20 61 2c 0d 0a 20 20 20 20 20 20    var a,..      
1a070 20 20 20 20 20 20 62 20 3d 20 69 6e 62 6c 6f 63        b = inbloc
1a080 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1a090 6f 6c 64 5f 69 6e 64 65 6e 74 20 3d 20 69 6e 64  old_indent = ind
1a0a0 65 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ent,..          
1a0b0 20 20 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20    m,..          
1a0c0 20 20 73 20 3d 20 73 63 6f 70 65 2c 0d 0a 20 20    s = scope,..  
1a0d0 20 20 20 20 20 20 20 20 20 20 74 2c 0d 0a 20 20            t,..  
1a0e0 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 2c 0d            line,.
1a0f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 3b 0d  .            d;.
1a100 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 62 6c 6f  ...        inblo
1a110 63 6b 20 3d 20 6f 72 64 69 6e 61 72 79 3b 0d 0a  ck = ordinary;..
1a120 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 72 64          if (!ord
1a130 69 6e 61 72 79 20 7c 7c 20 21 6f 70 74 69 6f 6e  inary || !option
1a140 2e 66 75 6e 63 73 63 6f 70 65 29 20 73 63 6f 70  .funcscope) scop
1a150 65 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74  e = Object.creat
1a160 65 28 73 63 6f 70 65 29 3b 0d 0a 20 20 20 20 20  e(scope);..     
1a170 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74     nonadjacent(t
1a180 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29  oken, nexttoken)
1a190 3b 0d 0a 20 20 20 20 20 20 20 20 74 20 3d 20 6e  ;..        t = n
1a1a0 65 78 74 74 6f 6b 65 6e 3b 0d 0a 0d 0a 20 20 20  exttoken;....   
1a1b0 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b       if (nexttok
1a1c0 65 6e 2e 69 64 20 3d 3d 3d 20 22 7b 22 29 20 7b  en.id === "{") {
1a1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64  ..            ad
1a1e0 76 61 6e 63 65 28 22 7b 22 29 3b 0d 0a 20 20 20  vance("{");..   
1a1f0 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20           line = 
1a200 74 6f 6b 65 6e 2e 6c 69 6e 65 3b 0d 0a 20 20 20  token.line;..   
1a210 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78           if (nex
1a220 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 7d  ttoken.id !== "}
1a230 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
1a240 20 20 20 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20        indent += 
1a250 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a  option.indent;..
1a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a270 77 68 69 6c 65 20 28 21 6f 72 64 69 6e 61 72 79  while (!ordinary
1a280 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 66 72   && nexttoken.fr
1a290 6f 6d 20 3e 20 69 6e 64 65 6e 74 29 20 7b 0d 0a  om > indent) {..
1a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2b0 20 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20 6f 70      indent += op
1a2c0 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20 20  tion.indent;..  
1a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1a2e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1a2f0 20 20 20 69 66 20 28 69 73 66 75 6e 63 29 20 7b     if (isfunc) {
1a300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a310 20 20 20 20 20 20 6d 20 3d 20 7b 7d 3b 0d 0a 20        m = {};.. 
1a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a330 20 20 20 66 6f 72 20 28 64 20 69 6e 20 64 69 72     for (d in dir
1a340 65 63 74 69 76 65 29 20 7b 0d 0a 20 20 20 20 20  ective) {..     
1a350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a360 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 64 69     if (is_own(di
1a370 72 65 63 74 69 76 65 2c 20 64 29 29 20 7b 0d 0a  rective, d)) {..
1a380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a390 20 20 20 20 20 20 20 20 20 20 20 20 6d 5b 64 5d              m[d]
1a3a0 20 3d 20 64 69 72 65 63 74 69 76 65 5b 64 5d 3b   = directive[d];
1a3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a3c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1a3f0 20 20 20 20 20 20 20 20 64 69 72 65 63 74 69 76          directiv
1a400 65 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  es();....       
1a410 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1a420 28 6f 70 74 69 6f 6e 2e 73 74 72 69 63 74 20 26  (option.strict &
1a430 26 20 66 75 6e 63 74 5b 22 28 63 6f 6e 74 65 78  & funct["(contex
1a440 74 29 22 5d 5b 22 28 67 6c 6f 62 61 6c 29 22 5d  t)"]["(global)"]
1a450 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1a460 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1a470 28 21 6d 5b 22 75 73 65 20 73 74 72 69 63 74 22  (!m["use strict"
1a480 5d 20 26 26 20 21 64 69 72 65 63 74 69 76 65 5b  ] && !directive[
1a490 22 75 73 65 20 73 74 72 69 63 74 22 5d 29 20 7b  "use strict"]) {
1a4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
1a4c0 72 6e 69 6e 67 28 22 4d 69 73 73 69 6e 67 20 5c  rning("Missing \
1a4d0 22 75 73 65 20 73 74 72 69 63 74 5c 22 20 73 74  "use strict\" st
1a4e0 61 74 65 6d 65 6e 74 2e 22 29 3b 0d 0a 20 20 20  atement.");..   
1a4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a500 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a510 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a530 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a540 20 20 20 20 61 20 3d 20 73 74 61 74 65 6d 65 6e      a = statemen
1a550 74 73 28 6c 69 6e 65 29 3b 0d 0a 0d 0a 20 20 20  ts(line);....   
1a560 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1a570 28 69 73 66 75 6e 63 29 20 7b 0d 0a 20 20 20 20  (isfunc) {..    
1a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a590 64 69 72 65 63 74 69 76 65 20 3d 20 6d 3b 0d 0a  directive = m;..
1a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a5b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1a5c0 20 20 20 20 20 69 6e 64 65 6e 74 20 2d 3d 20 6f       indent -= o
1a5d0 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20  ption.indent;.. 
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1a5f0 66 20 28 6c 69 6e 65 20 21 3d 3d 20 6e 65 78 74  f (line !== next
1a600 74 6f 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20  token.line) {.. 
1a610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a620 20 20 20 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29     indentation()
1a630 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1a640 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1a650 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 69 6e    } else if (lin
1a660 65 20 21 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e  e !== nexttoken.
1a670 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  line) {..       
1a680 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 61           indenta
1a690 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  tion();..       
1a6a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a6b0 20 20 20 20 61 64 76 61 6e 63 65 28 22 7d 22 2c      advance("}",
1a6c0 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   t);..          
1a6d0 20 20 69 6e 64 65 6e 74 20 3d 20 6f 6c 64 5f 69    indent = old_i
1a6e0 6e 64 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  ndent;..        
1a6f0 7d 20 65 6c 73 65 20 69 66 20 28 21 6f 72 64 69  } else if (!ordi
1a700 6e 61 72 79 29 20 7b 0d 0a 20 20 20 20 20 20 20  nary) {..       
1a710 20 20 20 20 20 65 72 72 6f 72 28 22 45 78 70 65       error("Expe
1a720 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20 69  cted '{a}' and i
1a730 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d 27  nstead saw '{b}'
1a740 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
1a750 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e         nexttoken
1a760 2c 20 22 7b 22 2c 20 6e 65 78 74 74 6f 6b 65 6e  , "{", nexttoken
1a770 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  .value);..      
1a780 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
1a790 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 6d          if (!stm
1a7a0 74 20 7c 7c 20 6f 70 74 69 6f 6e 2e 63 75 72 6c  t || option.curl
1a7b0 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
1a7c0 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 70      warning("Exp
1a7d0 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20  ected '{a}' and 
1a7e0 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d  instead saw '{b}
1a7f0 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  '.",..          
1a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
1a810 78 74 74 6f 6b 65 6e 2c 20 22 7b 22 2c 20 6e 65  xttoken, "{", ne
1a820 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d  xttoken.value);.
1a830 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
1a840 6f 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a  oreach = true;..
1a850 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
1a860 6e 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64  nt += option.ind
1a870 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ent;..          
1a880 20 20 2f 2f 20 74 65 73 74 20 69 6e 64 65 6e 74    // test indent
1a890 61 74 69 6f 6e 20 6f 6e 6c 79 20 69 66 20 73 74  ation only if st
1a8a0 61 74 65 6d 65 6e 74 20 69 73 20 69 6e 20 6e 65  atement is in ne
1a8b0 77 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20  w line..        
1a8c0 20 20 20 20 61 20 3d 20 5b 73 74 61 74 65 6d 65      a = [stateme
1a8d0 6e 74 28 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e  nt(nexttoken.lin
1a8e0 65 20 3d 3d 3d 20 74 6f 6b 65 6e 2e 6c 69 6e 65  e === token.line
1a8f0 29 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )];..           
1a900 20 69 6e 64 65 6e 74 20 2d 3d 20 6f 70 74 69 6f   indent -= optio
1a910 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20 20 20 20 20  n.indent;..     
1a920 20 20 20 20 20 20 20 6e 6f 72 65 61 63 68 20 3d         noreach =
1a930 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
1a940 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63   }..        func
1a950 74 5b 22 28 76 65 72 62 29 22 5d 20 3d 20 6e 75  t["(verb)"] = nu
1a960 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ll;..        if 
1a970 28 21 6f 72 64 69 6e 61 72 79 20 7c 7c 20 21 6f  (!ordinary || !o
1a980 70 74 69 6f 6e 2e 66 75 6e 63 73 63 6f 70 65 29  ption.funcscope)
1a990 20 73 63 6f 70 65 20 3d 20 73 3b 0d 0a 20 20 20   scope = s;..   
1a9a0 20 20 20 20 20 69 6e 62 6c 6f 63 6b 20 3d 20 62       inblock = b
1a9b0 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f  ;..        if (o
1a9c0 72 64 69 6e 61 72 79 20 26 26 20 6f 70 74 69 6f  rdinary && optio
1a9d0 6e 2e 6e 6f 65 6d 70 74 79 20 26 26 20 28 21 61  n.noempty && (!a
1a9e0 20 7c 7c 20 61 2e 6c 65 6e 67 74 68 20 3d 3d 3d   || a.length ===
1a9f0 20 30 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20   0)) {..        
1aa00 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45 6d 70      warning("Emp
1aa10 74 79 20 62 6c 6f 63 6b 2e 22 29 3b 0d 0a 20 20  ty block.");..  
1aa20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1aa30 20 72 65 74 75 72 6e 20 61 3b 0d 0a 20 20 20 20   return a;..    
1aa40 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 66 75 6e 63 74  }......    funct
1aa50 69 6f 6e 20 63 6f 75 6e 74 4d 65 6d 62 65 72 28  ion countMember(
1aa60 6d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66  m) {..        if
1aa70 20 28 6d 65 6d 62 65 72 73 4f 6e 6c 79 20 26 26   (membersOnly &&
1aa80 20 74 79 70 65 6f 66 20 6d 65 6d 62 65 72 73 4f   typeof membersO
1aa90 6e 6c 79 5b 6d 5d 20 21 3d 3d 20 22 62 6f 6f 6c  nly[m] !== "bool
1aaa0 65 61 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 20  ean") {..       
1aab0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e       warning("Un
1aac0 65 78 70 65 63 74 65 64 20 2f 2a 6d 65 6d 62 65  expected /*membe
1aad0 72 20 27 7b 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e  r '{a}'.", token
1aae0 2c 20 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  , m);..        }
1aaf0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79  ..        if (ty
1ab00 70 65 6f 66 20 6d 65 6d 62 65 72 5b 6d 5d 20 3d  peof member[m] =
1ab10 3d 3d 20 22 6e 75 6d 62 65 72 22 29 20 7b 0d 0a  == "number") {..
1ab20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 62              memb
1ab30 65 72 5b 6d 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20  er[m] += 1;..   
1ab40 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
1ab50 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 62 65             membe
1ab60 72 5b 6d 5d 20 3d 20 31 3b 0d 0a 20 20 20 20 20  r[m] = 1;..     
1ab70 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d     }..    }.....
1ab80 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e 6f  .    function no
1ab90 74 65 5f 69 6d 70 6c 69 65 64 28 74 6f 6b 65 6e  te_implied(token
1aba0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ) {..        var
1abb0 20 6e 61 6d 65 20 3d 20 74 6f 6b 65 6e 2e 76 61   name = token.va
1abc0 6c 75 65 2c 20 6c 69 6e 65 20 3d 20 74 6f 6b 65  lue, line = toke
1abd0 6e 2e 6c 69 6e 65 2c 20 61 20 3d 20 69 6d 70 6c  n.line, a = impl
1abe0 69 65 64 5b 6e 61 6d 65 5d 3b 0d 0a 20 20 20 20  ied[name];..    
1abf0 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 61      if (typeof a
1ac00 20 3d 3d 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29   === "function")
1ac10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ac20 61 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  a = false;..    
1ac30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1ac40 20 69 66 20 28 21 61 29 20 7b 0d 0a 20 20 20 20   if (!a) {..    
1ac50 20 20 20 20 20 20 20 20 61 20 3d 20 5b 6c 69 6e          a = [lin
1ac60 65 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e];..           
1ac70 20 69 6d 70 6c 69 65 64 5b 6e 61 6d 65 5d 20 3d   implied[name] =
1ac80 20 61 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65   a;..        } e
1ac90 6c 73 65 20 69 66 20 28 61 5b 61 2e 6c 65 6e 67  lse if (a[a.leng
1aca0 74 68 20 2d 20 31 5d 20 21 3d 3d 20 6c 69 6e 65  th - 1] !== line
1acb0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1acc0 20 61 2e 70 75 73 68 28 6c 69 6e 65 29 3b 0d 0a   a.push(line);..
1acd0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
1ace0 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2f 20 42 75 69  ......    // Bui
1acf0 6c 64 20 74 68 65 20 73 79 6e 74 61 78 20 74 61  ld the syntax ta
1ad00 62 6c 65 20 62 79 20 64 65 63 6c 61 72 69 6e 67  ble by declaring
1ad10 20 74 68 65 20 73 79 6e 74 61 63 74 69 63 20 65   the syntactic e
1ad20 6c 65 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 6c  lements of the l
1ad30 61 6e 67 75 61 67 65 2e 0d 0a 0d 0a 20 20 20 20  anguage.....    
1ad40 74 79 70 65 28 22 28 6e 75 6d 62 65 72 29 22 2c  type("(number)",
1ad50 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a   function () {..
1ad60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1ad70 68 69 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d  his;..    });...
1ad80 0a 20 20 20 20 74 79 70 65 28 22 28 73 74 72 69  .    type("(stri
1ad90 6e 67 29 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28  ng)", function (
1ada0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ) {..        ret
1adb0 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d  urn this;..    }
1adc0 29 3b 0d 0a 0d 0a 20 20 20 20 73 79 6e 74 61 78  );....    syntax
1add0 5b 22 28 69 64 65 6e 74 69 66 69 65 72 29 22 5d  ["(identifier)"]
1ade0 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 79   = {..        ty
1adf0 70 65 3a 20 22 28 69 64 65 6e 74 69 66 69 65 72  pe: "(identifier
1ae00 29 22 2c 0d 0a 20 20 20 20 20 20 20 20 6c 62 70  )",..        lbp
1ae10 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 69 64  : 0,..        id
1ae20 65 6e 74 69 66 69 65 72 3a 20 74 72 75 65 2c 0d  entifier: true,.
1ae30 0a 20 20 20 20 20 20 20 20 6e 75 64 3a 20 66 75  .        nud: fu
1ae40 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20  nction () {..   
1ae50 20 20 20 20 20 20 20 20 20 76 61 72 20 76 20 3d           var v =
1ae60 20 74 68 69 73 2e 76 61 6c 75 65 2c 0d 0a 20 20   this.value,..  
1ae70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20                s 
1ae80 3d 20 73 63 6f 70 65 5b 76 5d 2c 0d 0a 20 20 20  = scope[v],..   
1ae90 20 20 20 20 20 20 20 20 20 20 20 20 20 66 3b 0d               f;.
1aea0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
1aeb0 66 20 28 74 79 70 65 6f 66 20 73 20 3d 3d 3d 20  f (typeof s === 
1aec0 22 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a 20  "function") {.. 
1aed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1aee0 2f 20 50 72 6f 74 65 63 74 69 6f 6e 20 61 67 61  / Protection aga
1aef0 69 6e 73 74 20 61 63 63 69 64 65 6e 74 61 6c 20  inst accidental 
1af00 69 6e 68 65 72 69 74 61 6e 63 65 2e 0d 0a 20 20  inheritance...  
1af10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20                s 
1af20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0d 0a 20 20  = undefined;..  
1af30 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
1af40 20 69 66 20 28 74 79 70 65 6f 66 20 73 20 3d 3d   if (typeof s ==
1af50 3d 20 22 62 6f 6f 6c 65 61 6e 22 29 20 7b 0d 0a  = "boolean") {..
1af60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af70 66 20 3d 20 66 75 6e 63 74 3b 0d 0a 20 20 20 20  f = funct;..    
1af80 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63              func
1af90 74 20 3d 20 66 75 6e 63 74 69 6f 6e 73 5b 30 5d  t = functions[0]
1afa0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1afb0 20 20 20 61 64 64 6c 61 62 65 6c 28 76 2c 20 22     addlabel(v, "
1afc0 76 61 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  var");..        
1afd0 20 20 20 20 20 20 20 20 73 20 3d 20 66 75 6e 63          s = func
1afe0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
1aff0 20 20 20 20 66 75 6e 63 74 20 3d 20 66 3b 0d 0a      funct = f;..
1b000 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1b010 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
1b020 54 68 65 20 6e 61 6d 65 20 69 73 20 69 6e 20 73  The name is in s
1b030 63 6f 70 65 20 61 6e 64 20 64 65 66 69 6e 65 64  cope and defined
1b040 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
1b050 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
1b060 20 20 20 20 20 20 20 69 66 20 28 66 75 6e 63 74         if (funct
1b070 20 3d 3d 3d 20 73 29 20 7b 0d 0a 20 20 20 20 20   === s) {..     
1b080 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
1b090 61 6e 67 65 20 27 75 6e 75 73 65 64 27 20 74 6f  ange 'unused' to
1b0a0 20 27 76 61 72 27 2c 20 61 6e 64 20 72 65 6a 65   'var', and reje
1b0b0 63 74 20 6c 61 62 65 6c 73 2e 0d 0a 20 20 20 20  ct labels...    
1b0c0 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74              swit
1b0d0 63 68 20 28 66 75 6e 63 74 5b 76 5d 29 20 7b 0d  ch (funct[v]) {.
1b0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b0f0 20 63 61 73 65 20 22 75 6e 75 73 65 64 22 3a 0d   case "unused":.
1b100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b110 20 20 20 20 20 66 75 6e 63 74 5b 76 5d 20 3d 20       funct[v] = 
1b120 22 76 61 72 22 3b 0d 0a 20 20 20 20 20 20 20 20  "var";..        
1b130 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
1b140 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
1b150 20 20 20 20 63 61 73 65 20 22 75 6e 63 74 69 6f      case "unctio
1b160 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n":..           
1b170 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 76           funct[v
1b180 5d 20 3d 20 22 66 75 6e 63 74 69 6f 6e 22 3b 0d  ] = "function";.
1b190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b1a0 20 20 20 20 20 74 68 69 73 5b 22 66 75 6e 63 74       this["funct
1b1b0 69 6f 6e 22 5d 20 3d 20 74 72 75 65 3b 0d 0a 20  ion"] = true;.. 
1b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b1d0 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
1b1e0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1b1f0 22 66 75 6e 63 74 69 6f 6e 22 3a 0d 0a 20 20 20  "function":..   
1b200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b210 20 74 68 69 73 5b 22 66 75 6e 63 74 69 6f 6e 22   this["function"
1b220 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  ] = true;..     
1b230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1b240 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
1b250 20 20 20 20 20 20 20 63 61 73 65 20 22 6c 61 62         case "lab
1b260 65 6c 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  el":..          
1b270 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
1b280 67 28 22 27 7b 61 7d 27 20 69 73 20 61 20 73 74  g("'{a}' is a st
1b290 61 74 65 6d 65 6e 74 20 6c 61 62 65 6c 2e 22 2c  atement label.",
1b2a0 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20   token, v);..   
1b2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b2c0 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20   break;..       
1b2d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b2e0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
1b2f0 66 20 28 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61  f (funct["(globa
1b300 6c 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20  l)"]) {..       
1b310 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20           // The 
1b320 6e 61 6d 65 20 69 73 20 6e 6f 74 20 64 65 66 69  name is not defi
1b330 6e 65 64 20 69 6e 20 74 68 65 20 66 75 6e 63 74  ned in the funct
1b340 69 6f 6e 2e 20 20 49 66 20 77 65 20 61 72 65 20  ion.  If we are 
1b350 69 6e 20 74 68 65 20 67 6c 6f 62 61 6c 0d 0a 20  in the global.. 
1b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b370 2f 20 73 63 6f 70 65 2c 20 74 68 65 6e 20 77 65  / scope, then we
1b380 20 68 61 76 65 20 61 6e 20 75 6e 64 65 66 69 6e   have an undefin
1b390 65 64 20 76 61 72 69 61 62 6c 65 2e 0d 0a 20 20  ed variable...  
1b3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b3c0 20 20 2f 2f 20 4f 70 65 72 61 74 6f 72 73 20 74    // Operators t
1b3d0 79 70 65 6f 66 20 61 6e 64 20 64 65 6c 65 74 65  ypeof and delete
1b3e0 20 64 6f 20 6e 6f 74 20 72 61 69 73 65 20 72 75   do not raise ru
1b3f0 6e 74 69 6d 65 20 65 72 72 6f 72 73 20 65 76 65  ntime errors eve
1b400 6e 20 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  n if..          
1b410 20 20 20 20 20 20 2f 2f 20 74 68 65 20 62 61 73        // the bas
1b420 65 20 6f 62 6a 65 63 74 20 6f 66 20 61 20 72 65  e object of a re
1b430 66 65 72 65 6e 63 65 20 69 73 20 6e 75 6c 6c 20  ference is null 
1b440 73 6f 20 6e 6f 20 6e 65 65 64 20 74 6f 20 64 69  so no need to di
1b450 73 70 6c 61 79 20 77 61 72 6e 69 6e 67 0d 0a 20  splay warning.. 
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b470 2f 20 69 66 20 77 65 27 72 65 20 69 6e 73 69 64  / if we're insid
1b480 65 20 6f 66 20 74 79 70 65 6f 66 20 6f 72 20 64  e of typeof or d
1b490 65 6c 65 74 65 2e 0d 0a 0d 0a 20 20 20 20 20 20  elete.....      
1b4a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
1b4b0 74 69 6f 6e 2e 75 6e 64 65 66 20 26 26 20 74 79  tion.undef && ty
1b4c0 70 65 6f 66 20 70 72 65 64 65 66 69 6e 65 64 5b  peof predefined[
1b4d0 76 5d 20 21 3d 3d 20 22 62 6f 6f 6c 65 61 6e 22  v] !== "boolean"
1b4e0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1b4f0 20 20 20 20 20 20 20 20 20 2f 2f 20 41 74 74 65           // Atte
1b500 6d 70 74 69 6e 67 20 74 6f 20 73 75 62 73 63 72  mpting to subscr
1b510 69 70 74 20 61 20 6e 75 6c 6c 20 72 65 66 65 72  ipt a null refer
1b520 65 6e 63 65 20 77 69 6c 6c 20 74 68 72 6f 77 20  ence will throw 
1b530 61 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  an..            
1b540 20 20 20 20 20 20 20 20 2f 2f 20 65 72 72 6f 72          // error
1b550 2c 20 65 76 65 6e 20 77 69 74 68 69 6e 20 74 68  , even within th
1b560 65 20 74 79 70 65 6f 66 20 61 6e 64 20 64 65 6c  e typeof and del
1b570 65 74 65 20 6f 70 65 72 61 74 6f 72 73 0d 0a 20  ete operators.. 
1b580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b590 20 20 20 69 66 20 28 21 28 61 6e 6f 6e 6e 61 6d     if (!(anonnam
1b5a0 65 20 3d 3d 3d 20 22 74 79 70 65 6f 66 22 20 7c  e === "typeof" |
1b5b0 7c 20 61 6e 6f 6e 6e 61 6d 65 20 3d 3d 3d 20 22  | anonname === "
1b5c0 64 65 6c 65 74 65 22 29 20 7c 7c 0d 0a 20 20 20  delete") ||..   
1b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5e0 20 20 20 20 20 28 6e 65 78 74 74 6f 6b 65 6e 20       (nexttoken 
1b5f0 26 26 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 76 61  && (nexttoken.va
1b600 6c 75 65 20 3d 3d 3d 20 22 2e 22 20 7c 7c 20 6e  lue === "." || n
1b610 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d  exttoken.value =
1b620 3d 3d 20 22 5b 22 29 29 29 20 7b 0d 0a 0d 0a 20  == "["))) {.... 
1b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b640 20 20 20 20 20 20 20 69 73 75 6e 64 65 66 28 66         isundef(f
1b650 75 6e 63 74 2c 20 22 27 7b 61 7d 27 20 69 73 20  unct, "'{a}' is 
1b660 6e 6f 74 20 64 65 66 69 6e 65 64 2e 22 2c 20 74  not defined.", t
1b670 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20  oken, v);..     
1b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1b690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b6a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1b6b0 20 20 20 20 20 20 20 6e 6f 74 65 5f 69 6d 70 6c         note_impl
1b6c0 69 65 64 28 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20  ied(token);..   
1b6d0 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
1b6e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b6f0 20 20 20 2f 2f 20 49 66 20 74 68 65 20 6e 61 6d     // If the nam
1b700 65 20 69 73 20 61 6c 72 65 61 64 79 20 64 65 66  e is already def
1b710 69 6e 65 64 20 69 6e 20 74 68 65 20 63 75 72 72  ined in the curr
1b720 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ent..           
1b730 20 20 20 20 20 2f 2f 20 66 75 6e 63 74 69 6f 6e       // function
1b740 2c 20 62 75 74 20 6e 6f 74 20 61 73 20 6f 75 74  , but not as out
1b750 65 72 2c 20 74 68 65 6e 20 74 68 65 72 65 20 69  er, then there i
1b760 73 20 61 20 73 63 6f 70 65 20 65 72 72 6f 72 2e  s a scope error.
1b770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b780 20 20 20 20 73 77 69 74 63 68 20 28 66 75 6e 63      switch (func
1b790 74 5b 76 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20  t[v]) {..       
1b7a0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 63           case "c
1b7b0 6c 6f 73 75 72 65 22 3a 0d 0a 20 20 20 20 20 20  losure":..      
1b7c0 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
1b7d0 66 75 6e 63 74 69 6f 6e 22 3a 0d 0a 20 20 20 20  function":..    
1b7e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
1b7f0 20 22 76 61 72 22 3a 0d 0a 20 20 20 20 20 20 20   "var":..       
1b800 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 75           case "u
1b810 6e 75 73 65 64 22 3a 0d 0a 20 20 20 20 20 20 20  nused":..       
1b820 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
1b830 6e 69 6e 67 28 22 27 7b 61 7d 27 20 75 73 65 64  ning("'{a}' used
1b840 20 6f 75 74 20 6f 66 20 73 63 6f 70 65 2e 22 2c   out of scope.",
1b850 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20   token, v);..   
1b860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b870 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20   break;..       
1b880 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6c           case "l
1b890 61 62 65 6c 22 3a 0d 0a 20 20 20 20 20 20 20 20  abel":..        
1b8a0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
1b8b0 69 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 61 20  ing("'{a}' is a 
1b8c0 73 74 61 74 65 6d 65 6e 74 20 6c 61 62 65 6c 2e  statement label.
1b8d0 22 2c 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20  ", token, v);.. 
1b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8f0 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
1b900 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1b910 22 6f 75 74 65 72 22 3a 0d 0a 20 20 20 20 20 20  "outer":..      
1b920 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
1b930 67 6c 6f 62 61 6c 22 3a 0d 0a 20 20 20 20 20 20  global":..      
1b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
1b950 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
1b960 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
1b970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b980 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 6e 61      // If the na
1b990 6d 65 20 69 73 20 64 65 66 69 6e 65 64 20 69 6e  me is defined in
1b9a0 20 61 6e 20 6f 75 74 65 72 20 66 75 6e 63 74 69   an outer functi
1b9b0 6f 6e 2c 20 6d 61 6b 65 20 61 6e 20 6f 75 74 65  on, make an oute
1b9c0 72 20 65 6e 74 72 79 2c 0d 0a 20 20 20 20 20 20  r entry,..      
1b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b9e0 20 61 6e 64 20 69 66 20 69 74 20 77 61 73 20 75   and if it was u
1b9f0 6e 75 73 65 64 2c 20 6d 61 6b 65 20 69 74 20 76  nused, make it v
1ba00 61 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ar...           
1ba10 20 20 20 20 20 20 20 20 20 69 66 20 28 73 20 3d           if (s =
1ba20 3d 3d 20 74 72 75 65 29 20 7b 0d 0a 20 20 20 20  == true) {..    
1ba30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba40 20 20 20 20 66 75 6e 63 74 5b 76 5d 20 3d 20 74      funct[v] = t
1ba50 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
1ba60 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
1ba70 20 69 66 20 28 73 20 3d 3d 3d 20 6e 75 6c 6c 29   if (s === null)
1ba80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ba90 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
1baa0 69 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 6e 6f  ing("'{a}' is no
1bab0 74 20 61 6c 6c 6f 77 65 64 2e 22 2c 20 74 6f 6b  t allowed.", tok
1bac0 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20 20  en, v);..       
1bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bae0 20 6e 6f 74 65 5f 69 6d 70 6c 69 65 64 28 74 6f   note_implied(to
1baf0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ken);..         
1bb00 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
1bb10 65 20 69 66 20 28 74 79 70 65 6f 66 20 73 20 21  e if (typeof s !
1bb20 3d 3d 20 22 6f 62 6a 65 63 74 22 29 20 7b 0d 0a  == "object") {..
1bb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb40 20 20 20 20 20 20 20 20 2f 2f 20 4f 70 65 72 61          // Opera
1bb50 74 6f 72 73 20 74 79 70 65 6f 66 20 61 6e 64 20  tors typeof and 
1bb60 64 65 6c 65 74 65 20 64 6f 20 6e 6f 74 20 72 61  delete do not ra
1bb70 69 73 65 20 72 75 6e 74 69 6d 65 20 65 72 72 6f  ise runtime erro
1bb80 72 73 20 65 76 65 6e 0d 0a 20 20 20 20 20 20 20  rs even..       
1bb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bba0 20 2f 2f 20 69 66 20 74 68 65 20 62 61 73 65 20   // if the base 
1bbb0 6f 62 6a 65 63 74 20 6f 66 20 61 20 72 65 66 65  object of a refe
1bbc0 72 65 6e 63 65 20 69 73 20 6e 75 6c 6c 20 73 6f  rence is null so
1bbd0 20 6e 6f 20 6e 65 65 64 20 74 6f 0d 0a 20 20 20   no need to..   
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bbf0 20 20 20 20 20 2f 2f 20 64 69 73 70 6c 61 79 20       // display 
1bc00 77 61 72 6e 69 6e 67 20 69 66 20 77 65 27 72 65  warning if we're
1bc10 20 69 6e 73 69 64 65 20 6f 66 20 74 79 70 65 6f   inside of typeo
1bc20 66 20 6f 72 20 64 65 6c 65 74 65 2e 0d 0a 20 20  f or delete...  
1bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc40 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e        if (option
1bc50 2e 75 6e 64 65 66 29 20 7b 0d 0a 20 20 20 20 20  .undef) {..     
1bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc70 20 20 20 20 20 20 20 2f 2f 20 41 74 74 65 6d 70         // Attemp
1bc80 74 69 6e 67 20 74 6f 20 73 75 62 73 63 72 69 70  ting to subscrip
1bc90 74 20 61 20 6e 75 6c 6c 20 72 65 66 65 72 65 6e  t a null referen
1bca0 63 65 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e  ce will throw an
1bcb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1bcd0 20 65 72 72 6f 72 2c 20 65 76 65 6e 20 77 69 74   error, even wit
1bce0 68 69 6e 20 74 68 65 20 74 79 70 65 6f 66 20 61  hin the typeof a
1bcf0 6e 64 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74  nd delete operat
1bd00 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
1bd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd20 20 69 66 20 28 21 28 61 6e 6f 6e 6e 61 6d 65 20   if (!(anonname 
1bd30 3d 3d 3d 20 22 74 79 70 65 6f 66 22 20 7c 7c 20  === "typeof" || 
1bd40 61 6e 6f 6e 6e 61 6d 65 20 3d 3d 3d 20 22 64 65  anonname === "de
1bd50 6c 65 74 65 22 29 20 7c 7c 0d 0a 20 20 20 20 20  lete") ||..     
1bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd70 20 20 20 20 20 20 20 20 20 20 20 28 6e 65 78 74             (next
1bd80 74 6f 6b 65 6e 20 26 26 0d 0a 20 20 20 20 20 20  token &&..      
1bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e                (n
1bdb0 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 3d  exttoken.value =
1bdc0 3d 3d 20 22 2e 22 20 7c 7c 20 6e 65 78 74 74 6f  == "." || nextto
1bdd0 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 5b  ken.value === "[
1bde0 22 29 29 29 20 7b 0d 0a 0d 0a 20 20 20 20 20 20  "))) {....      
1bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be00 20 20 20 20 20 20 20 20 20 20 69 73 75 6e 64 65            isunde
1be10 66 28 66 75 6e 63 74 2c 20 22 27 7b 61 7d 27 20  f(funct, "'{a}' 
1be20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 2e 22  is not defined."
1be30 2c 20 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20  , token, v);..  
1be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1be60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1be80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be90 66 75 6e 63 74 5b 76 5d 20 3d 20 74 72 75 65 3b  funct[v] = true;
1bea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1beb0 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 5f 69            note_i
1bec0 6d 70 6c 69 65 64 28 74 6f 6b 65 6e 29 3b 0d 0a  mplied(token);..
1bed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bee0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
1bef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf00 20 20 20 20 20 20 73 77 69 74 63 68 20 28 73 5b        switch (s[
1bf10 76 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  v]) {..         
1bf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1bf30 61 73 65 20 22 66 75 6e 63 74 69 6f 6e 22 3a 0d  ase "function":.
1bf40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bf50 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 75           case "u
1bf60 6e 63 74 69 6f 6e 22 3a 0d 0a 20 20 20 20 20 20  nction":..      
1bf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf80 20 20 20 20 20 20 74 68 69 73 5b 22 66 75 6e 63        this["func
1bf90 74 69 6f 6e 22 5d 20 3d 20 74 72 75 65 3b 0d 0a  tion"] = true;..
1bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfb0 20 20 20 20 20 20 20 20 20 20 20 20 73 5b 76 5d              s[v]
1bfc0 20 3d 20 22 63 6c 6f 73 75 72 65 22 3b 0d 0a 20   = "closure";.. 
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfe0 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74             funct
1bff0 5b 76 5d 20 3d 20 73 5b 22 28 67 6c 6f 62 61 6c  [v] = s["(global
1c000 29 22 5d 20 3f 20 22 67 6c 6f 62 61 6c 22 20 3a  )"] ? "global" :
1c010 20 22 6f 75 74 65 72 22 3b 0d 0a 20 20 20 20 20   "outer";..     
1c020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c030 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
1c040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c050 20 20 20 20 20 20 20 63 61 73 65 20 22 76 61 72         case "var
1c060 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
1c070 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
1c080 20 22 75 6e 75 73 65 64 22 3a 0d 0a 20 20 20 20   "unused":..    
1c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0a0 20 20 20 20 20 20 20 20 73 5b 76 5d 20 3d 20 22          s[v] = "
1c0b0 63 6c 6f 73 75 72 65 22 3b 0d 0a 20 20 20 20 20  closure";..     
1c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0d0 20 20 20 20 20 20 20 66 75 6e 63 74 5b 76 5d 20         funct[v] 
1c0e0 3d 20 73 5b 22 28 67 6c 6f 62 61 6c 29 22 5d 20  = s["(global)"] 
1c0f0 3f 20 22 67 6c 6f 62 61 6c 22 20 3a 20 22 6f 75  ? "global" : "ou
1c100 74 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ter";..         
1c110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c120 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
1c130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c140 20 20 20 63 61 73 65 20 22 63 6c 6f 73 75 72 65     case "closure
1c150 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
1c160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c170 66 75 6e 63 74 5b 76 5d 20 3d 20 73 5b 22 28 67  funct[v] = s["(g
1c180 6c 6f 62 61 6c 29 22 5d 20 3f 20 22 67 6c 6f 62  lobal)"] ? "glob
1c190 61 6c 22 20 3a 20 22 6f 75 74 65 72 22 3b 0d 0a  al" : "outer";..
1c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c1b0 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
1c1c0 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
1c1d0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
1c1e0 20 22 6c 61 62 65 6c 22 3a 0d 0a 20 20 20 20 20   "label":..     
1c1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c200 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22         warning("
1c210 27 7b 61 7d 27 20 69 73 20 61 20 73 74 61 74 65  '{a}' is a state
1c220 6d 65 6e 74 20 6c 61 62 65 6c 2e 22 2c 20 74 6f  ment label.", to
1c230 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20  ken, v);..      
1c240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c250 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1c260 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1c270 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1c280 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1c290 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1c2a0 20 74 68 69 73 3b 0d 0a 20 20 20 20 20 20 20 20   this;..        
1c2b0 7d 2c 0d 0a 20 20 20 20 20 20 20 20 6c 65 64 3a  },..        led:
1c2c0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a   function () {..
1c2d0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
1c2e0 72 28 22 45 78 70 65 63 74 65 64 20 61 6e 20 6f  r("Expected an o
1c2f0 70 65 72 61 74 6f 72 20 61 6e 64 20 69 6e 73 74  perator and inst
1c300 65 61 64 20 73 61 77 20 27 7b 61 7d 27 2e 22 2c  ead saw '{a}'.",
1c310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c320 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 6e 65 78    nexttoken, nex
1c330 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a  ttoken.value);..
1c340 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
1c350 3b 0d 0a 0d 0a 20 20 20 20 74 79 70 65 28 22 28  ;....    type("(
1c360 72 65 67 65 78 70 29 22 2c 20 66 75 6e 63 74 69  regexp)", functi
1c370 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  on () {..       
1c380 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20   return this;.. 
1c390 20 20 20 7d 29 3b 0d 0a 0d 0a 0d 0a 2f 2f 20 45     });......// E
1c3a0 43 4d 41 53 63 72 69 70 74 20 70 61 72 73 65 72  CMAScript parser
1c3b0 0d 0a 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 28  ....    delim("(
1c3c0 65 6e 64 6c 69 6e 65 29 22 29 3b 0d 0a 20 20 20  endline)");..   
1c3d0 20 64 65 6c 69 6d 28 22 28 62 65 67 69 6e 29 22   delim("(begin)"
1c3e0 29 3b 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 28  );..    delim("(
1c3f0 65 6e 64 29 22 29 2e 72 65 61 63 68 20 3d 20 74  end)").reach = t
1c400 72 75 65 3b 0d 0a 20 20 20 20 64 65 6c 69 6d 28  rue;..    delim(
1c410 22 3c 2f 22 29 2e 72 65 61 63 68 20 3d 20 74 72  "</").reach = tr
1c420 75 65 3b 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22  ue;..    delim("
1c430 3c 21 22 29 3b 0d 0a 20 20 20 20 64 65 6c 69 6d  <!");..    delim
1c440 28 22 3c 21 2d 2d 22 29 3b 0d 0a 20 20 20 20 64  ("<!--");..    d
1c450 65 6c 69 6d 28 22 2d 2d 3e 22 29 3b 0d 0a 20 20  elim("-->");..  
1c460 20 20 64 65 6c 69 6d 28 22 28 65 72 72 6f 72 29    delim("(error)
1c470 22 29 2e 72 65 61 63 68 20 3d 20 74 72 75 65 3b  ").reach = true;
1c480 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 7d 22 29  ..    delim("}")
1c490 2e 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a  .reach = true;..
1c4a0 20 20 20 20 64 65 6c 69 6d 28 22 29 22 29 3b 0d      delim(")");.
1c4b0 0a 20 20 20 20 64 65 6c 69 6d 28 22 5d 22 29 3b  .    delim("]");
1c4c0 0d 0a 20 20 20 20 64 65 6c 69 6d 28 22 5c 22 22  ..    delim("\""
1c4d0 29 2e 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d  ).reach = true;.
1c4e0 0a 20 20 20 20 64 65 6c 69 6d 28 22 27 22 29 2e  .    delim("'").
1c4f0 72 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a 20  reach = true;.. 
1c500 20 20 20 64 65 6c 69 6d 28 22 3b 22 29 3b 0d 0a     delim(";");..
1c510 20 20 20 20 64 65 6c 69 6d 28 22 3a 22 29 2e 72      delim(":").r
1c520 65 61 63 68 20 3d 20 74 72 75 65 3b 0d 0a 20 20  each = true;..  
1c530 20 20 64 65 6c 69 6d 28 22 2c 22 29 3b 0d 0a 20    delim(",");.. 
1c540 20 20 20 64 65 6c 69 6d 28 22 23 22 29 3b 0d 0a     delim("#");..
1c550 20 20 20 20 64 65 6c 69 6d 28 22 40 22 29 3b 0d      delim("@");.
1c560 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 65 6c  .    reserve("el
1c570 73 65 22 29 3b 0d 0a 20 20 20 20 72 65 73 65 72  se");..    reser
1c580 76 65 28 22 63 61 73 65 22 29 2e 72 65 61 63 68  ve("case").reach
1c590 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 72 65   = true;..    re
1c5a0 73 65 72 76 65 28 22 63 61 74 63 68 22 29 3b 0d  serve("catch");.
1c5b0 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 64 65  .    reserve("de
1c5c0 66 61 75 6c 74 22 29 2e 72 65 61 63 68 20 3d 20  fault").reach = 
1c5d0 74 72 75 65 3b 0d 0a 20 20 20 20 72 65 73 65 72  true;..    reser
1c5e0 76 65 28 22 66 69 6e 61 6c 6c 79 22 29 3b 0d 0a  ve("finally");..
1c5f0 20 20 20 20 72 65 73 65 72 76 65 76 61 72 28 22      reservevar("
1c600 61 72 67 75 6d 65 6e 74 73 22 2c 20 66 75 6e 63  arguments", func
1c610 74 69 6f 6e 20 28 78 29 20 7b 0d 0a 20 20 20 20  tion (x) {..    
1c620 20 20 20 20 69 66 20 28 64 69 72 65 63 74 69 76      if (directiv
1c630 65 5b 22 75 73 65 20 73 74 72 69 63 74 22 5d 20  e["use strict"] 
1c640 26 26 20 66 75 6e 63 74 5b 22 28 67 6c 6f 62 61  && funct["(globa
1c650 6c 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20  l)"]) {..       
1c660 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 53 74       warning("St
1c670 72 69 63 74 20 76 69 6f 6c 61 74 69 6f 6e 2e 22  rict violation."
1c680 2c 20 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  , x);..        }
1c690 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 72  ..    });..    r
1c6a0 65 73 65 72 76 65 76 61 72 28 22 65 76 61 6c 22  eservevar("eval"
1c6b0 29 3b 0d 0a 20 20 20 20 72 65 73 65 72 76 65 76  );..    reservev
1c6c0 61 72 28 22 66 61 6c 73 65 22 29 3b 0d 0a 20 20  ar("false");..  
1c6d0 20 20 72 65 73 65 72 76 65 76 61 72 28 22 49 6e    reservevar("In
1c6e0 66 69 6e 69 74 79 22 29 3b 0d 0a 20 20 20 20 72  finity");..    r
1c6f0 65 73 65 72 76 65 76 61 72 28 22 4e 61 4e 22 29  eservevar("NaN")
1c700 3b 0d 0a 20 20 20 20 72 65 73 65 72 76 65 76 61  ;..    reserveva
1c710 72 28 22 6e 75 6c 6c 22 29 3b 0d 0a 20 20 20 20  r("null");..    
1c720 72 65 73 65 72 76 65 76 61 72 28 22 74 68 69 73  reservevar("this
1c730 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 78 29 20  ", function (x) 
1c740 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  {..        if (d
1c750 69 72 65 63 74 69 76 65 5b 22 75 73 65 20 73 74  irective["use st
1c760 72 69 63 74 22 5d 20 26 26 20 21 6f 70 74 69 6f  rict"] && !optio
1c770 6e 2e 76 61 6c 69 64 74 68 69 73 20 26 26 20 28  n.validthis && (
1c780 28 66 75 6e 63 74 5b 22 28 73 74 61 74 65 6d 65  (funct["(stateme
1c790 6e 74 29 22 5d 20 26 26 0d 0a 20 20 20 20 20 20  nt)"] &&..      
1c7a0 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b            funct[
1c7b0 22 28 6e 61 6d 65 29 22 5d 2e 63 68 61 72 41 74  "(name)"].charAt
1c7c0 28 30 29 20 3e 20 22 5a 22 29 20 7c 7c 20 66 75  (0) > "Z") || fu
1c7d0 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22 5d 29  nct["(global)"])
1c7e0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1c7f0 20 77 61 72 6e 69 6e 67 28 22 50 6f 73 73 69 62   warning("Possib
1c800 6c 65 20 73 74 72 69 63 74 20 76 69 6f 6c 61 74  le strict violat
1c810 69 6f 6e 2e 22 2c 20 78 29 3b 0d 0a 20 20 20 20  ion.", x);..    
1c820 20 20 20 20 7d 0d 0a 20 20 20 20 7d 29 3b 0d 0a      }..    });..
1c830 20 20 20 20 72 65 73 65 72 76 65 76 61 72 28 22      reservevar("
1c840 74 72 75 65 22 29 3b 0d 0a 20 20 20 20 72 65 73  true");..    res
1c850 65 72 76 65 76 61 72 28 22 75 6e 64 65 66 69 6e  ervevar("undefin
1c860 65 64 22 29 3b 0d 0a 20 20 20 20 61 73 73 69 67  ed");..    assig
1c870 6e 6f 70 28 22 3d 22 2c 20 22 61 73 73 69 67 6e  nop("=", "assign
1c880 22 2c 20 32 30 29 3b 0d 0a 20 20 20 20 61 73 73  ", 20);..    ass
1c890 69 67 6e 6f 70 28 22 2b 3d 22 2c 20 22 61 73 73  ignop("+=", "ass
1c8a0 69 67 6e 61 64 64 22 2c 20 32 30 29 3b 0d 0a 20  ignadd", 20);.. 
1c8b0 20 20 20 61 73 73 69 67 6e 6f 70 28 22 2d 3d 22     assignop("-="
1c8c0 2c 20 22 61 73 73 69 67 6e 73 75 62 22 2c 20 32  , "assignsub", 2
1c8d0 30 29 3b 0d 0a 20 20 20 20 61 73 73 69 67 6e 6f  0);..    assigno
1c8e0 70 28 22 2a 3d 22 2c 20 22 61 73 73 69 67 6e 6d  p("*=", "assignm
1c8f0 75 6c 74 22 2c 20 32 30 29 3b 0d 0a 20 20 20 20  ult", 20);..    
1c900 61 73 73 69 67 6e 6f 70 28 22 2f 3d 22 2c 20 22  assignop("/=", "
1c910 61 73 73 69 67 6e 64 69 76 22 2c 20 32 30 29 2e  assigndiv", 20).
1c920 6e 75 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28  nud = function (
1c930 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 65 72 72  ) {..        err
1c940 6f 72 28 22 41 20 72 65 67 75 6c 61 72 20 65 78  or("A regular ex
1c950 70 72 65 73 73 69 6f 6e 20 6c 69 74 65 72 61 6c  pression literal
1c960 20 63 61 6e 20 62 65 20 63 6f 6e 66 75 73 65 64   can be confused
1c970 20 77 69 74 68 20 27 2f 3d 27 2e 22 29 3b 0d 0a   with '/='.");..
1c980 20 20 20 20 7d 3b 0d 0a 20 20 20 20 61 73 73 69      };..    assi
1c990 67 6e 6f 70 28 22 25 3d 22 2c 20 22 61 73 73 69  gnop("%=", "assi
1c9a0 67 6e 6d 6f 64 22 2c 20 32 30 29 3b 0d 0a 20 20  gnmod", 20);..  
1c9b0 20 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f    bitwiseassigno
1c9c0 70 28 22 26 3d 22 2c 20 22 61 73 73 69 67 6e 62  p("&=", "assignb
1c9d0 69 74 61 6e 64 22 2c 20 32 30 29 3b 0d 0a 20 20  itand", 20);..  
1c9e0 20 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f    bitwiseassigno
1c9f0 70 28 22 7c 3d 22 2c 20 22 61 73 73 69 67 6e 62  p("|=", "assignb
1ca00 69 74 6f 72 22 2c 20 32 30 29 3b 0d 0a 20 20 20  itor", 20);..   
1ca10 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f 70   bitwiseassignop
1ca20 28 22 5e 3d 22 2c 20 22 61 73 73 69 67 6e 62 69  ("^=", "assignbi
1ca30 74 78 6f 72 22 2c 20 32 30 29 3b 0d 0a 20 20 20  txor", 20);..   
1ca40 20 62 69 74 77 69 73 65 61 73 73 69 67 6e 6f 70   bitwiseassignop
1ca50 28 22 3c 3c 3d 22 2c 20 22 61 73 73 69 67 6e 73  ("<<=", "assigns
1ca60 68 69 66 74 6c 65 66 74 22 2c 20 32 30 29 3b 0d  hiftleft", 20);.
1ca70 0a 20 20 20 20 62 69 74 77 69 73 65 61 73 73 69  .    bitwiseassi
1ca80 67 6e 6f 70 28 22 3e 3e 3d 22 2c 20 22 61 73 73  gnop(">>=", "ass
1ca90 69 67 6e 73 68 69 66 74 72 69 67 68 74 22 2c 20  ignshiftright", 
1caa0 32 30 29 3b 0d 0a 20 20 20 20 62 69 74 77 69 73  20);..    bitwis
1cab0 65 61 73 73 69 67 6e 6f 70 28 22 3e 3e 3e 3d 22  eassignop(">>>="
1cac0 2c 20 22 61 73 73 69 67 6e 73 68 69 66 74 72 69  , "assignshiftri
1cad0 67 68 74 75 6e 73 69 67 6e 65 64 22 2c 20 32 30  ghtunsigned", 20
1cae0 29 3b 0d 0a 20 20 20 20 69 6e 66 69 78 28 22 3f  );..    infix("?
1caf0 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66  ", function (lef
1cb00 74 2c 20 74 68 61 74 29 20 7b 0d 0a 20 20 20 20  t, that) {..    
1cb10 20 20 20 20 74 68 61 74 2e 6c 65 66 74 20 3d 20      that.left = 
1cb20 6c 65 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 74  left;..        t
1cb30 68 61 74 2e 72 69 67 68 74 20 3d 20 65 78 70 72  hat.right = expr
1cb40 65 73 73 69 6f 6e 28 31 30 29 3b 0d 0a 20 20 20  ession(10);..   
1cb50 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 3a 22       advance(":"
1cb60 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 61 74  );..        that
1cb70 5b 22 65 6c 73 65 22 5d 20 3d 20 65 78 70 72 65  ["else"] = expre
1cb80 73 73 69 6f 6e 28 31 30 29 3b 0d 0a 20 20 20 20  ssion(10);..    
1cb90 20 20 20 20 72 65 74 75 72 6e 20 74 68 61 74 3b      return that;
1cba0 0d 0a 20 20 20 20 7d 2c 20 33 30 29 3b 0d 0a 0d  ..    }, 30);...
1cbb0 0a 20 20 20 20 69 6e 66 69 78 28 22 7c 7c 22 2c  .    infix("||",
1cbc0 20 22 6f 72 22 2c 20 34 30 29 3b 0d 0a 20 20 20   "or", 40);..   
1cbd0 20 69 6e 66 69 78 28 22 26 26 22 2c 20 22 61 6e   infix("&&", "an
1cbe0 64 22 2c 20 35 30 29 3b 0d 0a 20 20 20 20 62 69  d", 50);..    bi
1cbf0 74 77 69 73 65 28 22 7c 22 2c 20 22 62 69 74 6f  twise("|", "bito
1cc00 72 22 2c 20 37 30 29 3b 0d 0a 20 20 20 20 62 69  r", 70);..    bi
1cc10 74 77 69 73 65 28 22 5e 22 2c 20 22 62 69 74 78  twise("^", "bitx
1cc20 6f 72 22 2c 20 38 30 29 3b 0d 0a 20 20 20 20 62  or", 80);..    b
1cc30 69 74 77 69 73 65 28 22 26 22 2c 20 22 62 69 74  itwise("&", "bit
1cc40 61 6e 64 22 2c 20 39 30 29 3b 0d 0a 20 20 20 20  and", 90);..    
1cc50 72 65 6c 61 74 69 6f 6e 28 22 3d 3d 22 2c 20 66  relation("==", f
1cc60 75 6e 63 74 69 6f 6e 20 28 6c 65 66 74 2c 20 72  unction (left, r
1cc70 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20 20  ight) {..       
1cc80 20 76 61 72 20 65 71 6e 75 6c 6c 20 3d 20 6f 70   var eqnull = op
1cc90 74 69 6f 6e 2e 65 71 6e 75 6c 6c 20 26 26 20 28  tion.eqnull && (
1cca0 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22  left.value === "
1ccb0 6e 75 6c 6c 22 20 7c 7c 20 72 69 67 68 74 2e 76  null" || right.v
1ccc0 61 6c 75 65 20 3d 3d 3d 20 22 6e 75 6c 6c 22 29  alue === "null")
1ccd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
1cce0 28 21 65 71 6e 75 6c 6c 20 26 26 20 6f 70 74 69  (!eqnull && opti
1ccf0 6f 6e 2e 65 71 65 71 65 71 29 0d 0a 20 20 20 20  on.eqeqeq)..    
1cd00 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
1cd10 22 45 78 70 65 63 74 65 64 20 27 7b 61 7d 27 20  "Expected '{a}' 
1cd20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77 20  and instead saw 
1cd30 27 7b 62 7d 27 2e 22 2c 20 74 68 69 73 2c 20 22  '{b}'.", this, "
1cd40 3d 3d 3d 22 2c 20 22 3d 3d 22 29 3b 0d 0a 20 20  ===", "==");..  
1cd50 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 69        else if (i
1cd60 73 50 6f 6f 72 52 65 6c 61 74 69 6f 6e 28 6c 65  sPoorRelation(le
1cd70 66 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ft))..          
1cd80 20 20 77 61 72 6e 69 6e 67 28 22 55 73 65 20 27    warning("Use '
1cd90 7b 61 7d 27 20 74 6f 20 63 6f 6d 70 61 72 65 20  {a}' to compare 
1cda0 77 69 74 68 20 27 7b 62 7d 27 2e 22 2c 20 74 68  with '{b}'.", th
1cdb0 69 73 2c 20 22 3d 3d 3d 22 2c 20 6c 65 66 74 2e  is, "===", left.
1cdc0 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
1cdd0 20 65 6c 73 65 20 69 66 20 28 69 73 50 6f 6f 72   else if (isPoor
1cde0 52 65 6c 61 74 69 6f 6e 28 72 69 67 68 74 29 29  Relation(right))
1cdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61  ..            wa
1ce00 72 6e 69 6e 67 28 22 55 73 65 20 27 7b 61 7d 27  rning("Use '{a}'
1ce10 20 74 6f 20 63 6f 6d 70 61 72 65 20 77 69 74 68   to compare with
1ce20 20 27 7b 62 7d 27 2e 22 2c 20 74 68 69 73 2c 20   '{b}'.", this, 
1ce30 22 3d 3d 3d 22 2c 20 72 69 67 68 74 2e 76 61 6c  "===", right.val
1ce40 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
1ce50 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20  return this;..  
1ce60 20 20 7d 29 3b 0d 0a 20 20 20 20 72 65 6c 61 74    });..    relat
1ce70 69 6f 6e 28 22 3d 3d 3d 22 29 3b 0d 0a 20 20 20  ion("===");..   
1ce80 20 72 65 6c 61 74 69 6f 6e 28 22 21 3d 22 2c 20   relation("!=", 
1ce90 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66 74 2c 20  function (left, 
1cea0 72 69 67 68 74 29 20 7b 0d 0a 20 20 20 20 20 20  right) {..      
1ceb0 20 20 76 61 72 20 65 71 6e 75 6c 6c 20 3d 20 6f    var eqnull = o
1cec0 70 74 69 6f 6e 2e 65 71 6e 75 6c 6c 20 26 26 0d  ption.eqnull &&.
1ced0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cee0 20 28 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d   (left.value ===
1cef0 20 22 6e 75 6c 6c 22 20 7c 7c 20 72 69 67 68 74   "null" || right
1cf00 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 6e 75 6c 6c  .value === "null
1cf10 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ");....        i
1cf20 66 20 28 21 65 71 6e 75 6c 6c 20 26 26 20 6f 70  f (!eqnull && op
1cf30 74 69 6f 6e 2e 65 71 65 71 65 71 29 20 7b 0d 0a  tion.eqeqeq) {..
1cf40 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
1cf50 69 6e 67 28 22 45 78 70 65 63 74 65 64 20 27 7b  ing("Expected '{
1cf60 61 7d 27 20 61 6e 64 20 69 6e 73 74 65 61 64 20  a}' and instead 
1cf70 73 61 77 20 27 7b 62 7d 27 2e 22 2c 0d 0a 20 20  saw '{b}'.",..  
1cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf90 20 20 74 68 69 73 2c 20 22 21 3d 3d 22 2c 20 22    this, "!==", "
1cfa0 21 3d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  !=");..        }
1cfb0 20 65 6c 73 65 20 69 66 20 28 69 73 50 6f 6f 72   else if (isPoor
1cfc0 52 65 6c 61 74 69 6f 6e 28 6c 65 66 74 29 29 20  Relation(left)) 
1cfd0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77  {..            w
1cfe0 61 72 6e 69 6e 67 28 22 55 73 65 20 27 7b 61 7d  arning("Use '{a}
1cff0 27 20 74 6f 20 63 6f 6d 70 61 72 65 20 77 69 74  ' to compare wit
1d000 68 20 27 7b 62 7d 27 2e 22 2c 0d 0a 20 20 20 20  h '{b}'.",..    
1d010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d020 74 68 69 73 2c 20 22 21 3d 3d 22 2c 20 6c 65 66  this, "!==", lef
1d030 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t.value);..     
1d040 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 69 73     } else if (is
1d050 50 6f 6f 72 52 65 6c 61 74 69 6f 6e 28 72 69 67  PoorRelation(rig
1d060 68 74 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ht)) {..        
1d070 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 73 65      warning("Use
1d080 20 27 7b 61 7d 27 20 74 6f 20 63 6f 6d 70 61 72   '{a}' to compar
1d090 65 20 77 69 74 68 20 27 7b 62 7d 27 2e 22 2c 0d  e with '{b}'.",.
1d0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d0b0 20 20 20 20 20 74 68 69 73 2c 20 22 21 3d 3d 22       this, "!=="
1d0c0 2c 20 72 69 67 68 74 2e 76 61 6c 75 65 29 3b 0d  , right.value);.
1d0d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
1d0e0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b      return this;
1d0f0 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 72  ..    });..    r
1d100 65 6c 61 74 69 6f 6e 28 22 21 3d 3d 22 29 3b 0d  elation("!==");.
1d110 0a 20 20 20 20 72 65 6c 61 74 69 6f 6e 28 22 3c  .    relation("<
1d120 22 29 3b 0d 0a 20 20 20 20 72 65 6c 61 74 69 6f  ");..    relatio
1d130 6e 28 22 3e 22 29 3b 0d 0a 20 20 20 20 72 65 6c  n(">");..    rel
1d140 61 74 69 6f 6e 28 22 3c 3d 22 29 3b 0d 0a 20 20  ation("<=");..  
1d150 20 20 72 65 6c 61 74 69 6f 6e 28 22 3e 3d 22 29    relation(">=")
1d160 3b 0d 0a 20 20 20 20 62 69 74 77 69 73 65 28 22  ;..    bitwise("
1d170 3c 3c 22 2c 20 22 73 68 69 66 74 6c 65 66 74 22  <<", "shiftleft"
1d180 2c 20 31 32 30 29 3b 0d 0a 20 20 20 20 62 69 74  , 120);..    bit
1d190 77 69 73 65 28 22 3e 3e 22 2c 20 22 73 68 69 66  wise(">>", "shif
1d1a0 74 72 69 67 68 74 22 2c 20 31 32 30 29 3b 0d 0a  tright", 120);..
1d1b0 20 20 20 20 62 69 74 77 69 73 65 28 22 3e 3e 3e      bitwise(">>>
1d1c0 22 2c 20 22 73 68 69 66 74 72 69 67 68 74 75 6e  ", "shiftrightun
1d1d0 73 69 67 6e 65 64 22 2c 20 31 32 30 29 3b 0d 0a  signed", 120);..
1d1e0 20 20 20 20 69 6e 66 69 78 28 22 69 6e 22 2c 20      infix("in", 
1d1f0 22 69 6e 22 2c 20 31 32 30 29 3b 0d 0a 20 20 20  "in", 120);..   
1d200 20 69 6e 66 69 78 28 22 69 6e 73 74 61 6e 63 65   infix("instance
1d210 6f 66 22 2c 20 22 69 6e 73 74 61 6e 63 65 6f 66  of", "instanceof
1d220 22 2c 20 31 32 30 29 3b 0d 0a 20 20 20 20 69 6e  ", 120);..    in
1d230 66 69 78 28 22 2b 22 2c 20 66 75 6e 63 74 69 6f  fix("+", functio
1d240 6e 20 28 6c 65 66 74 2c 20 74 68 61 74 29 20 7b  n (left, that) {
1d250 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72 69  ..        var ri
1d260 67 68 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e  ght = expression
1d270 28 31 33 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  (130);..        
1d280 69 66 20 28 6c 65 66 74 20 26 26 20 72 69 67 68  if (left && righ
1d290 74 20 26 26 20 6c 65 66 74 2e 69 64 20 3d 3d 3d  t && left.id ===
1d2a0 20 22 28 73 74 72 69 6e 67 29 22 20 26 26 20 72   "(string)" && r
1d2b0 69 67 68 74 2e 69 64 20 3d 3d 3d 20 22 28 73 74  ight.id === "(st
1d2c0 72 69 6e 67 29 22 29 20 7b 0d 0a 20 20 20 20 20  ring)") {..     
1d2d0 20 20 20 20 20 20 20 6c 65 66 74 2e 76 61 6c 75         left.valu
1d2e0 65 20 2b 3d 20 72 69 67 68 74 2e 76 61 6c 75 65  e += right.value
1d2f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  ;..            l
1d300 65 66 74 2e 63 68 61 72 61 63 74 65 72 20 3d 20  eft.character = 
1d310 72 69 67 68 74 2e 63 68 61 72 61 63 74 65 72 3b  right.character;
1d320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1d330 20 28 21 6f 70 74 69 6f 6e 2e 73 63 72 69 70 74   (!option.script
1d340 75 72 6c 20 26 26 20 6a 78 2e 74 65 73 74 28 6c  url && jx.test(l
1d350 65 66 74 2e 76 61 6c 75 65 29 29 20 7b 0d 0a 20  eft.value)) {.. 
1d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
1d370 61 72 6e 69 6e 67 28 22 4a 61 76 61 53 63 72 69  arning("JavaScri
1d380 70 74 20 55 52 4c 2e 22 2c 20 6c 65 66 74 29 3b  pt URL.", left);
1d390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1d3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1d3b0 75 72 6e 20 6c 65 66 74 3b 0d 0a 20 20 20 20 20  urn left;..     
1d3c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 74 68     }..        th
1d3d0 61 74 2e 6c 65 66 74 20 3d 20 6c 65 66 74 3b 0d  at.left = left;.
1d3e0 0a 20 20 20 20 20 20 20 20 74 68 61 74 2e 72 69  .        that.ri
1d3f0 67 68 74 20 3d 20 72 69 67 68 74 3b 0d 0a 20 20  ght = right;..  
1d400 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 61        return tha
1d410 74 3b 0d 0a 20 20 20 20 7d 2c 20 31 33 30 29 3b  t;..    }, 130);
1d420 0d 0a 20 20 20 20 70 72 65 66 69 78 28 22 2b 22  ..    prefix("+"
1d430 2c 20 22 6e 75 6d 22 29 3b 0d 0a 20 20 20 20 70  , "num");..    p
1d440 72 65 66 69 78 28 22 2b 2b 2b 22 2c 20 66 75 6e  refix("+++", fun
1d450 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20  ction () {..    
1d460 20 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e      warning("Con
1d470 66 75 73 69 6e 67 20 70 6c 75 73 65 73 2e 22 29  fusing pluses.")
1d480 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ;..        this.
1d490 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73 69  right = expressi
1d4a0 6f 6e 28 31 35 30 29 3b 0d 0a 20 20 20 20 20 20  on(150);..      
1d4b0 20 20 74 68 69 73 2e 61 72 69 74 79 20 3d 20 22    this.arity = "
1d4c0 75 6e 61 72 79 22 3b 0d 0a 20 20 20 20 20 20 20  unary";..       
1d4d0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20   return this;.. 
1d4e0 20 20 20 7d 29 3b 0d 0a 20 20 20 20 69 6e 66 69     });..    infi
1d4f0 78 28 22 2b 2b 2b 22 2c 20 66 75 6e 63 74 69 6f  x("+++", functio
1d500 6e 20 28 6c 65 66 74 29 20 7b 0d 0a 20 20 20 20  n (left) {..    
1d510 20 20 20 20 77 61 72 6e 69 6e 67 28 22 43 6f 6e      warning("Con
1d520 66 75 73 69 6e 67 20 70 6c 75 73 65 73 2e 22 29  fusing pluses.")
1d530 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ;..        this.
1d540 6c 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a 20 20  left = left;..  
1d550 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74        this.right
1d560 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31 33   = expression(13
1d570 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  0);..        ret
1d580 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d  urn this;..    }
1d590 2c 20 31 33 30 29 3b 0d 0a 20 20 20 20 69 6e 66  , 130);..    inf
1d5a0 69 78 28 22 2d 22 2c 20 22 73 75 62 22 2c 20 31  ix("-", "sub", 1
1d5b0 33 30 29 3b 0d 0a 20 20 20 20 70 72 65 66 69 78  30);..    prefix
1d5c0 28 22 2d 22 2c 20 22 6e 65 67 22 29 3b 0d 0a 20  ("-", "neg");.. 
1d5d0 20 20 20 70 72 65 66 69 78 28 22 2d 2d 2d 22 2c     prefix("---",
1d5e0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a   function () {..
1d5f0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
1d600 22 43 6f 6e 66 75 73 69 6e 67 20 6d 69 6e 75 73  "Confusing minus
1d610 65 73 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  es.");..        
1d620 74 68 69 73 2e 72 69 67 68 74 20 3d 20 65 78 70  this.right = exp
1d630 72 65 73 73 69 6f 6e 28 31 35 30 29 3b 0d 0a 20  ression(150);.. 
1d640 20 20 20 20 20 20 20 74 68 69 73 2e 61 72 69 74         this.arit
1d650 79 20 3d 20 22 75 6e 61 72 79 22 3b 0d 0a 20 20  y = "unary";..  
1d660 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
1d670 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20 20 20  s;..    });..   
1d680 20 69 6e 66 69 78 28 22 2d 2d 2d 22 2c 20 66 75   infix("---", fu
1d690 6e 63 74 69 6f 6e 20 28 6c 65 66 74 29 20 7b 0d  nction (left) {.
1d6a0 0a 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67  .        warning
1d6b0 28 22 43 6f 6e 66 75 73 69 6e 67 20 6d 69 6e 75  ("Confusing minu
1d6c0 73 65 73 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20  ses.");..       
1d6d0 20 74 68 69 73 2e 6c 65 66 74 20 3d 20 6c 65 66   this.left = lef
1d6e0 74 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73  t;..        this
1d6f0 2e 72 69 67 68 74 20 3d 20 65 78 70 72 65 73 73  .right = express
1d700 69 6f 6e 28 31 33 30 29 3b 0d 0a 20 20 20 20 20  ion(130);..     
1d710 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d     return this;.
1d720 0a 20 20 20 20 7d 2c 20 31 33 30 29 3b 0d 0a 20  .    }, 130);.. 
1d730 20 20 20 69 6e 66 69 78 28 22 2a 22 2c 20 22 6d     infix("*", "m
1d740 75 6c 74 22 2c 20 31 34 30 29 3b 0d 0a 20 20 20  ult", 140);..   
1d750 20 69 6e 66 69 78 28 22 2f 22 2c 20 22 64 69 76   infix("/", "div
1d760 22 2c 20 31 34 30 29 3b 0d 0a 20 20 20 20 69 6e  ", 140);..    in
1d770 66 69 78 28 22 25 22 2c 20 22 6d 6f 64 22 2c 20  fix("%", "mod", 
1d780 31 34 30 29 3b 0d 0a 0d 0a 20 20 20 20 73 75 66  140);....    suf
1d790 66 69 78 28 22 2b 2b 22 2c 20 22 70 6f 73 74 69  fix("++", "posti
1d7a0 6e 63 22 29 3b 0d 0a 20 20 20 20 70 72 65 66 69  nc");..    prefi
1d7b0 78 28 22 2b 2b 22 2c 20 22 70 72 65 69 6e 63 22  x("++", "preinc"
1d7c0 29 3b 0d 0a 20 20 20 20 73 79 6e 74 61 78 5b 22  );..    syntax["
1d7d0 2b 2b 22 5d 2e 65 78 70 73 20 3d 20 74 72 75 65  ++"].exps = true
1d7e0 3b 0d 0a 0d 0a 20 20 20 20 73 75 66 66 69 78 28  ;....    suffix(
1d7f0 22 2d 2d 22 2c 20 22 70 6f 73 74 64 65 63 22 29  "--", "postdec")
1d800 3b 0d 0a 20 20 20 20 70 72 65 66 69 78 28 22 2d  ;..    prefix("-
1d810 2d 22 2c 20 22 70 72 65 64 65 63 22 29 3b 0d 0a  -", "predec");..
1d820 20 20 20 20 73 79 6e 74 61 78 5b 22 2d 2d 22 5d      syntax["--"]
1d830 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a 20  .exps = true;.. 
1d840 20 20 20 70 72 65 66 69 78 28 22 64 65 6c 65 74     prefix("delet
1d850 65 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  e", function () 
1d860 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 70  {..        var p
1d870 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 30 29   = expression(0)
1d880 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ;..        if (!
1d890 70 20 7c 7c 20 28 70 2e 69 64 20 21 3d 3d 20 22  p || (p.id !== "
1d8a0 2e 22 20 26 26 20 70 2e 69 64 20 21 3d 3d 20 22  ." && p.id !== "
1d8b0 5b 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  [")) {..        
1d8c0 20 20 20 20 77 61 72 6e 69 6e 67 28 22 56 61 72      warning("Var
1d8d0 69 61 62 6c 65 73 20 73 68 6f 75 6c 64 20 6e 6f  iables should no
1d8e0 74 20 62 65 20 64 65 6c 65 74 65 64 2e 22 29 3b  t be deleted.");
1d8f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1d900 20 20 20 20 20 74 68 69 73 2e 66 69 72 73 74 20       this.first 
1d910 3d 20 70 3b 0d 0a 20 20 20 20 20 20 20 20 72 65  = p;..        re
1d920 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20  turn this;..    
1d930 7d 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d  }).exps = true;.
1d940 0a 0d 0a 20 20 20 20 70 72 65 66 69 78 28 22 7e  ...    prefix("~
1d950 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b  ", function () {
1d960 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 70  ..        if (op
1d970 74 69 6f 6e 2e 62 69 74 77 69 73 65 29 20 7b 0d  tion.bitwise) {.
1d980 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72  .            war
1d990 6e 69 6e 67 28 22 28 33 29 55 6e 65 78 70 65 63  ning("(3)Unexpec
1d9a0 74 65 64 20 27 7b 61 7d 27 2e 22 2c 20 74 68 69  ted '{a}'.", thi
1d9b0 73 2c 20 22 7e 22 29 3b 0d 0a 20 20 20 20 20 20  s, "~");..      
1d9c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 78 70    }..        exp
1d9d0 72 65 73 73 69 6f 6e 28 31 35 30 29 3b 0d 0a 20  ression(150);.. 
1d9e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
1d9f0 69 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d 0a  is;..    });....
1da00 20 20 20 20 70 72 65 66 69 78 28 22 21 22 2c 20      prefix("!", 
1da10 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20  function () {.. 
1da20 20 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68         this.righ
1da30 74 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31  t = expression(1
1da40 35 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68  50);..        th
1da50 69 73 2e 61 72 69 74 79 20 3d 20 22 75 6e 61 72  is.arity = "unar
1da60 79 22 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  y";..        if 
1da70 28 62 61 6e 67 5b 74 68 69 73 2e 72 69 67 68 74  (bang[this.right
1da80 2e 69 64 5d 20 3d 3d 3d 20 74 72 75 65 29 20 7b  .id] === true) {
1da90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61  ..            wa
1daa0 72 6e 69 6e 67 28 22 43 6f 6e 66 75 73 69 6e 67  rning("Confusing
1dab0 20 75 73 65 20 6f 66 20 27 7b 61 7d 27 2e 22 2c   use of '{a}'.",
1dac0 20 74 68 69 73 2c 20 22 21 22 29 3b 0d 0a 20 20   this, "!");..  
1dad0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1dae0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20   return this;.. 
1daf0 20 20 20 7d 29 3b 0d 0a 20 20 20 20 70 72 65 66     });..    pref
1db00 69 78 28 22 74 79 70 65 6f 66 22 2c 20 22 74 79  ix("typeof", "ty
1db10 70 65 6f 66 22 29 3b 0d 0a 20 20 20 20 70 72 65  peof");..    pre
1db20 66 69 78 28 22 6e 65 77 22 2c 20 66 75 6e 63 74  fix("new", funct
1db30 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20  ion () {..      
1db40 20 20 76 61 72 20 63 20 3d 20 65 78 70 72 65 73    var c = expres
1db50 73 69 6f 6e 28 31 35 35 29 2c 20 69 3b 0d 0a 20  sion(155), i;.. 
1db60 20 20 20 20 20 20 20 69 66 20 28 63 20 26 26 20         if (c && 
1db70 63 2e 69 64 20 21 3d 3d 20 22 66 75 6e 63 74 69  c.id !== "functi
1db80 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on") {..        
1db90 20 20 20 20 69 66 20 28 63 2e 69 64 65 6e 74 69      if (c.identi
1dba0 66 69 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20  fier) {..       
1dbb0 20 20 20 20 20 20 20 20 20 63 5b 22 6e 65 77 22           c["new"
1dbc0 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  ] = true;..     
1dbd0 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63             switc
1dbe0 68 20 28 63 2e 76 61 6c 75 65 29 20 7b 0d 0a 20  h (c.value) {.. 
1dbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1dc00 61 73 65 20 22 4e 75 6d 62 65 72 22 3a 0d 0a 20  ase "Number":.. 
1dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1dc20 61 73 65 20 22 53 74 72 69 6e 67 22 3a 0d 0a 20  ase "String":.. 
1dc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1dc40 61 73 65 20 22 42 6f 6f 6c 65 61 6e 22 3a 0d 0a  ase "Boolean":..
1dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc60 63 61 73 65 20 22 4d 61 74 68 22 3a 0d 0a 20 20  case "Math":..  
1dc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1dc80 73 65 20 22 4a 53 4f 4e 22 3a 0d 0a 20 20 20 20  se "JSON":..    
1dc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dca0 77 61 72 6e 69 6e 67 28 22 44 6f 20 6e 6f 74 20  warning("Do not 
1dcb0 75 73 65 20 7b 61 7d 20 61 73 20 61 20 63 6f 6e  use {a} as a con
1dcc0 73 74 72 75 63 74 6f 72 2e 22 2c 20 70 72 65 76  structor.", prev
1dcd0 74 6f 6b 65 6e 2c 20 63 2e 76 61 6c 75 65 29 3b  token, c.value);
1dce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dcf0 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20        break;..  
1dd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1dd10 73 65 20 22 46 75 6e 63 74 69 6f 6e 22 3a 0d 0a  se "Function":..
1dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd30 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e      if (!option.
1dd40 65 76 69 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20  evil) {..       
1dd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd60 20 77 61 72 6e 69 6e 67 28 22 54 68 65 20 46 75   warning("The Fu
1dd70 6e 63 74 69 6f 6e 20 63 6f 6e 73 74 72 75 63 74  nction construct
1dd80 6f 72 20 69 73 20 65 76 61 6c 2e 22 29 3b 0d 0a  or is eval.");..
1dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dda0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ddb0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1ddc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ddd0 20 20 20 63 61 73 65 20 22 44 61 74 65 22 3a 0d     case "Date":.
1dde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ddf0 20 63 61 73 65 20 22 52 65 67 45 78 70 22 3a 0d   case "RegExp":.
1de00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1de10 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
1de20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66               def
1de30 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20  ault:..         
1de40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
1de50 2e 69 64 20 21 3d 3d 20 22 66 75 6e 63 74 69 6f  .id !== "functio
1de60 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  n") {..         
1de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1de80 20 3d 20 63 2e 76 61 6c 75 65 2e 73 75 62 73 74   = c.value.subst
1de90 72 28 30 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  r(0, 1);..      
1dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1deb0 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 65 77    if (option.new
1dec0 63 61 70 20 26 26 20 28 69 20 3c 20 22 41 22 20  cap && (i < "A" 
1ded0 7c 7c 20 69 20 3e 20 22 5a 22 29 29 20 7b 0d 0a  || i > "Z")) {..
1dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1def0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
1df00 69 6e 67 28 22 41 20 63 6f 6e 73 74 72 75 63 74  ing("A construct
1df10 6f 72 20 6e 61 6d 65 20 73 68 6f 75 6c 64 20 73  or name should s
1df20 74 61 72 74 20 77 69 74 68 20 61 6e 20 75 70 70  tart with an upp
1df30 65 72 63 61 73 65 20 6c 65 74 74 65 72 2e 22 2c  ercase letter.",
1df40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df60 20 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20    token);..     
1df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1df90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1dfb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
1dfc0 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
1dfd0 20 20 20 20 20 20 69 66 20 28 63 2e 69 64 20 21        if (c.id !
1dfe0 3d 3d 20 22 2e 22 20 26 26 20 63 2e 69 64 20 21  == "." && c.id !
1dff0 3d 3d 20 22 5b 22 20 26 26 20 63 2e 69 64 20 21  == "[" && c.id !
1e000 3d 3d 20 22 28 22 29 20 7b 0d 0a 20 20 20 20 20  == "(") {..     
1e010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
1e020 61 72 6e 69 6e 67 28 22 42 61 64 20 63 6f 6e 73  arning("Bad cons
1e030 74 72 75 63 74 6f 72 2e 22 2c 20 74 6f 6b 65 6e  tructor.", token
1e040 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1e050 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1e060 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20     }..        } 
1e070 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
1e080 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e      if (!option.
1e090 73 75 70 65 72 6e 65 77 29 0d 0a 20 20 20 20 20  supernew)..     
1e0a0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
1e0b0 6e 67 28 22 57 65 69 72 64 20 63 6f 6e 73 74 72  ng("Weird constr
1e0c0 75 63 74 69 6f 6e 2e 20 44 65 6c 65 74 65 20 27  uction. Delete '
1e0d0 6e 65 77 27 2e 22 2c 20 74 68 69 73 29 3b 0d 0a  new'.", this);..
1e0e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e0f0 20 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65     adjacent(toke
1e100 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a  n, nexttoken);..
1e110 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74          if (next
1e120 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 28 22  token.id !== "("
1e130 20 26 26 20 21 6f 70 74 69 6f 6e 2e 73 75 70 65   && !option.supe
1e140 72 6e 65 77 29 20 7b 0d 0a 20 20 20 20 20 20 20  rnew) {..       
1e150 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 4d 69       warning("Mi
1e160 73 73 69 6e 67 20 27 28 29 27 20 69 6e 76 6f 6b  ssing '()' invok
1e170 69 6e 67 20 61 20 63 6f 6e 73 74 72 75 63 74 6f  ing a constructo
1e180 72 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  r.",..          
1e190 20 20 20 20 20 20 74 6f 6b 65 6e 2c 20 74 6f 6b        token, tok
1e1a0 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  en.value);..    
1e1b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 74      }..        t
1e1c0 68 69 73 2e 66 69 72 73 74 20 3d 20 63 3b 0d 0a  his.first = c;..
1e1d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1e1e0 68 69 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 20  his;..    });.. 
1e1f0 20 20 20 73 79 6e 74 61 78 5b 22 6e 65 77 22 5d     syntax["new"]
1e200 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a 0d  .exps = true;...
1e210 0a 20 20 20 20 70 72 65 66 69 78 28 22 76 6f 69  .    prefix("voi
1e220 64 22 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b  d").exps = true;
1e230 0d 0a 0d 0a 20 20 20 20 69 6e 66 69 78 28 22 2e  ....    infix(".
1e240 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 66  ", function (lef
1e250 74 2c 20 74 68 61 74 29 20 7b 0d 0a 20 20 20 20  t, that) {..    
1e260 20 20 20 20 61 64 6a 61 63 65 6e 74 28 70 72 65      adjacent(pre
1e270 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d  vtoken, token);.
1e280 0a 20 20 20 20 20 20 20 20 6e 6f 62 72 65 61 6b  .        nobreak
1e290 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ();..        var
1e2a0 20 6d 20 3d 20 69 64 65 6e 74 69 66 69 65 72 28   m = identifier(
1e2b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  );..        if (
1e2c0 74 79 70 65 6f 66 20 6d 20 3d 3d 3d 20 22 73 74  typeof m === "st
1e2d0 72 69 6e 67 22 29 20 7b 0d 0a 20 20 20 20 20 20  ring") {..      
1e2e0 20 20 20 20 20 20 63 6f 75 6e 74 4d 65 6d 62 65        countMembe
1e2f0 72 28 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  r(m);..        }
1e300 0d 0a 20 20 20 20 20 20 20 20 74 68 61 74 2e 6c  ..        that.l
1e310 65 66 74 20 3d 20 6c 65 66 74 3b 0d 0a 20 20 20  eft = left;..   
1e320 20 20 20 20 20 74 68 61 74 2e 72 69 67 68 74 20       that.right 
1e330 3d 20 6d 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  = m;..        if
1e340 20 28 6c 65 66 74 20 26 26 20 6c 65 66 74 2e 76   (left && left.v
1e350 61 6c 75 65 20 3d 3d 3d 20 22 61 72 67 75 6d 65  alue === "argume
1e360 6e 74 73 22 20 26 26 20 28 6d 20 3d 3d 3d 20 22  nts" && (m === "
1e370 63 61 6c 6c 65 65 22 20 7c 7c 20 6d 20 3d 3d 3d  callee" || m ===
1e380 20 22 63 61 6c 6c 65 72 22 29 29 20 7b 0d 0a 20   "caller")) {.. 
1e390 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
1e3a0 70 74 69 6f 6e 2e 6e 6f 61 72 67 29 0d 0a 20 20  ption.noarg)..  
1e3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
1e3c0 72 6e 69 6e 67 28 22 41 76 6f 69 64 20 61 72 67  rning("Avoid arg
1e3d0 75 6d 65 6e 74 73 2e 7b 61 7d 2e 22 2c 20 6c 65  uments.{a}.", le
1e3e0 66 74 2c 20 6d 29 3b 0d 0a 20 20 20 20 20 20 20  ft, m);..       
1e3f0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 64 69       else if (di
1e400 72 65 63 74 69 76 65 5b 22 75 73 65 20 73 74 72  rective["use str
1e410 69 63 74 22 5d 29 0d 0a 20 20 20 20 20 20 20 20  ict"])..        
1e420 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 53          error("S
1e430 74 72 69 63 74 20 76 69 6f 6c 61 74 69 6f 6e 2e  trict violation.
1e440 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65  ");..        } e
1e450 6c 73 65 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e  lse if (!option.
1e460 65 76 69 6c 20 26 26 20 6c 65 66 74 20 26 26 20  evil && left && 
1e470 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22  left.value === "
1e480 64 6f 63 75 6d 65 6e 74 22 20 26 26 0d 0a 20 20  document" &&..  
1e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
1e4a0 20 3d 3d 3d 20 22 77 72 69 74 65 22 20 7c 7c 20   === "write" || 
1e4b0 6d 20 3d 3d 3d 20 22 77 72 69 74 65 6c 6e 22 29  m === "writeln")
1e4c0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1e4d0 20 77 61 72 6e 69 6e 67 28 22 64 6f 63 75 6d 65   warning("docume
1e4e0 6e 74 2e 77 72 69 74 65 20 63 61 6e 20 62 65 20  nt.write can be 
1e4f0 61 20 66 6f 72 6d 20 6f 66 20 65 76 61 6c 2e 22  a form of eval."
1e500 2c 20 6c 65 66 74 29 3b 0d 0a 20 20 20 20 20 20  , left);..      
1e510 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 69 66 20    }..        if 
1e520 28 21 6f 70 74 69 6f 6e 2e 65 76 69 6c 20 26 26  (!option.evil &&
1e530 20 28 6d 20 3d 3d 3d 20 22 65 76 61 6c 22 20 7c   (m === "eval" |
1e540 7c 20 6d 20 3d 3d 3d 20 22 65 78 65 63 53 63 72  | m === "execScr
1e550 69 70 74 22 29 29 20 7b 0d 0a 20 20 20 20 20 20  ipt")) {..      
1e560 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 65        warning("e
1e570 76 61 6c 20 69 73 20 65 76 69 6c 2e 22 29 3b 0d  val is evil.");.
1e580 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
1e590 20 20 20 20 72 65 74 75 72 6e 20 74 68 61 74 3b      return that;
1e5a0 0d 0a 20 20 20 20 7d 2c 20 31 36 30 2c 20 74 72  ..    }, 160, tr
1e5b0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 66 69  ue);....    infi
1e5c0 78 28 22 28 22 2c 20 66 75 6e 63 74 69 6f 6e 20  x("(", function 
1e5d0 28 6c 65 66 74 2c 20 74 68 61 74 29 20 7b 0d 0a  (left, that) {..
1e5e0 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 76          if (prev
1e5f0 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 7d 22  token.id !== "}"
1e600 20 26 26 20 70 72 65 76 74 6f 6b 65 6e 2e 69 64   && prevtoken.id
1e610 20 21 3d 3d 20 22 29 22 29 20 7b 0d 0a 20 20 20   !== ")") {..   
1e620 20 20 20 20 20 20 20 20 20 6e 6f 62 72 65 61 6b           nobreak
1e630 28 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65  (prevtoken, toke
1e640 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  n);..        }..
1e650 20 20 20 20 20 20 20 20 6e 6f 73 70 61 63 65 28          nospace(
1e660 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  );..        if (
1e670 6f 70 74 69 6f 6e 2e 69 6d 6d 65 64 20 26 26 20  option.immed && 
1e680 21 6c 65 66 74 2e 69 6d 6d 65 64 20 26 26 20 6c  !left.immed && l
1e690 65 66 74 2e 69 64 20 3d 3d 3d 20 22 66 75 6e 63  eft.id === "func
1e6a0 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20 20 20  tion") {..      
1e6b0 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 57        warning("W
1e6c0 72 61 70 20 61 6e 20 69 6d 6d 65 64 69 61 74 65  rap an immediate
1e6d0 20 66 75 6e 63 74 69 6f 6e 20 69 6e 76 6f 63 61   function invoca
1e6e0 74 69 6f 6e 20 69 6e 20 70 61 72 65 6e 74 68 65  tion in parenthe
1e6f0 73 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ses " +..       
1e700 20 20 20 20 20 20 20 20 20 22 74 6f 20 61 73 73           "to ass
1e710 69 73 74 20 74 68 65 20 72 65 61 64 65 72 20 69  ist the reader i
1e720 6e 20 75 6e 64 65 72 73 74 61 6e 64 69 6e 67 20  n understanding 
1e730 74 68 61 74 20 74 68 65 20 65 78 70 72 65 73 73  that the express
1e740 69 6f 6e 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ion " +..       
1e750 20 20 20 20 20 20 20 20 20 22 69 73 20 74 68 65           "is the
1e760 20 72 65 73 75 6c 74 20 6f 66 20 61 20 66 75 6e   result of a fun
1e770 63 74 69 6f 6e 2c 20 61 6e 64 20 6e 6f 74 20 74  ction, and not t
1e780 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 74 73 65  he function itse
1e790 6c 66 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  lf.");..        
1e7a0 7d 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e  }..        var n
1e7b0 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 0,..         
1e7c0 20 20 20 70 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20     p = [];..    
1e7d0 20 20 20 20 69 66 20 28 6c 65 66 74 29 20 7b 0d      if (left) {.
1e7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1e7f0 28 6c 65 66 74 2e 74 79 70 65 20 3d 3d 3d 20 22  (left.type === "
1e800 28 69 64 65 6e 74 69 66 69 65 72 29 22 29 20 7b  (identifier)") {
1e810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e820 20 20 69 66 20 28 6c 65 66 74 2e 76 61 6c 75 65    if (left.value
1e830 2e 6d 61 74 63 68 28 2f 5e 5b 41 2d 5a 5d 28 5b  .match(/^[A-Z]([
1e840 41 2d 5a 30 2d 39 5f 24 5d 2a 5b 61 2d 7a 5d 5b  A-Z0-9_$]*[a-z][
1e850 41 2d 5a 61 2d 7a 30 2d 39 5f 24 5d 2a 29 3f 24  A-Za-z0-9_$]*)?$
1e860 2f 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  /)) {..         
1e870 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
1e880 65 66 74 2e 76 61 6c 75 65 20 21 3d 3d 20 22 4e  eft.value !== "N
1e890 75 6d 62 65 72 22 20 26 26 20 6c 65 66 74 2e 76  umber" && left.v
1e8a0 61 6c 75 65 20 21 3d 3d 20 22 53 74 72 69 6e 67  alue !== "String
1e8b0 22 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  " &&..          
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8d0 20 20 6c 65 66 74 2e 76 61 6c 75 65 20 21 3d 3d    left.value !==
1e8e0 20 22 42 6f 6f 6c 65 61 6e 22 20 26 26 0d 0a 20   "Boolean" &&.. 
1e8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e900 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e             left.
1e910 76 61 6c 75 65 20 21 3d 3d 20 22 44 61 74 65 22  value !== "Date"
1e920 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1e930 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1e940 28 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20  (left.value === 
1e950 22 4d 61 74 68 22 29 20 7b 0d 0a 20 20 20 20 20  "Math") {..     
1e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e970 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22         warning("
1e980 4d 61 74 68 20 69 73 20 6e 6f 74 20 61 20 66 75  Math is not a fu
1e990 6e 63 74 69 6f 6e 2e 22 2c 20 6c 65 66 74 29 3b  nction.", left);
1e9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e9b0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
1e9c0 20 69 66 20 28 6f 70 74 69 6f 6e 2e 6e 65 77 63   if (option.newc
1e9d0 61 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ap) {..         
1e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9f0 20 20 20 77 61 72 6e 69 6e 67 28 0d 0a 22 4d 69     warning(.."Mi
1ea00 73 73 69 6e 67 20 27 6e 65 77 27 20 70 72 65 66  ssing 'new' pref
1ea10 69 78 20 77 68 65 6e 20 69 6e 76 6f 6b 69 6e 67  ix when invoking
1ea20 20 61 20 63 6f 6e 73 74 72 75 63 74 6f 72 2e 22   a constructor."
1ea30 2c 20 6c 65 66 74 29 3b 0d 0a 20 20 20 20 20 20  , left);..      
1ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1ea60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1ea70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1ea80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ea90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1eaa0 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69   if (nexttoken.i
1eab0 64 20 21 3d 3d 20 22 29 22 29 20 7b 0d 0a 20 20  d !== ")") {..  
1eac0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b            for (;
1ead0 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ;) {..          
1eae0 20 20 20 20 20 20 70 5b 70 2e 6c 65 6e 67 74 68        p[p.length
1eaf0 5d 20 3d 20 65 78 70 72 65 73 73 69 6f 6e 28 31  ] = expression(1
1eb00 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0);..           
1eb10 20 20 20 20 20 6e 20 2b 3d 20 31 3b 0d 0a 20 20       n += 1;..  
1eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1eb30 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21   (nexttoken.id !
1eb40 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20  == ",") {..     
1eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1eb60 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
1eb70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1eb80 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28            comma(
1eb90 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1eba0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
1ebb0 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 29        advance(")
1ebc0 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73  ");..        nos
1ebd0 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20  pace(prevtoken, 
1ebe0 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20  token);..       
1ebf0 20 69 66 20 28 74 79 70 65 6f 66 20 6c 65 66 74   if (typeof left
1ec00 20 3d 3d 3d 20 22 6f 62 6a 65 63 74 22 29 20 7b   === "object") {
1ec10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1ec20 20 28 6c 65 66 74 2e 76 61 6c 75 65 20 3d 3d 3d   (left.value ===
1ec30 20 22 70 61 72 73 65 49 6e 74 22 20 26 26 20 6e   "parseInt" && n
1ec40 20 3d 3d 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20   === 1) {..     
1ec50 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
1ec60 6e 67 28 22 4d 69 73 73 69 6e 67 20 72 61 64 69  ng("Missing radi
1ec70 78 20 70 61 72 61 6d 65 74 65 72 2e 22 2c 20 74  x parameter.", t
1ec80 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  oken);..        
1ec90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1eca0 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 65     if (!option.e
1ecb0 76 69 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  vil) {..        
1ecc0 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 66 74          if (left
1ecd0 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 65 76 61 6c  .value === "eval
1ece0 22 20 7c 7c 20 6c 65 66 74 2e 76 61 6c 75 65 20  " || left.value 
1ecf0 3d 3d 3d 20 22 46 75 6e 63 74 69 6f 6e 22 20 7c  === "Function" |
1ed00 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
1ed10 20 20 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e             left.
1ed20 76 61 6c 75 65 20 3d 3d 3d 20 22 65 78 65 63 53  value === "execS
1ed30 63 72 69 70 74 22 29 20 7b 0d 0a 20 20 20 20 20  cript") {..     
1ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
1ed50 61 72 6e 69 6e 67 28 22 65 76 61 6c 20 69 73 20  arning("eval is 
1ed60 65 76 69 6c 2e 22 2c 20 6c 65 66 74 29 3b 0d 0a  evil.", left);..
1ed70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed80 7d 20 65 6c 73 65 20 69 66 20 28 70 5b 30 5d 20  } else if (p[0] 
1ed90 26 26 20 70 5b 30 5d 2e 69 64 20 3d 3d 3d 20 22  && p[0].id === "
1eda0 28 73 74 72 69 6e 67 29 22 20 26 26 0d 0a 20 20  (string)" &&..  
1edb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1edc0 20 20 20 20 20 28 6c 65 66 74 2e 76 61 6c 75 65       (left.value
1edd0 20 3d 3d 3d 20 22 73 65 74 54 69 6d 65 6f 75 74   === "setTimeout
1ede0 22 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  " ||..          
1edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
1ee00 66 74 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 73 65  ft.value === "se
1ee10 74 49 6e 74 65 72 76 61 6c 22 29 29 20 7b 0d 0a  tInterval")) {..
1ee20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee30 20 20 20 20 77 61 72 6e 69 6e 67 28 0d 0a 20 20      warning(..  
1ee40 20 20 22 49 6d 70 6c 69 65 64 20 65 76 61 6c 20    "Implied eval 
1ee50 69 73 20 65 76 69 6c 2e 20 50 61 73 73 20 61 20  is evil. Pass a 
1ee60 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 65 61 64  function instead
1ee70 20 6f 66 20 61 20 73 74 72 69 6e 67 2e 22 2c 20   of a string.", 
1ee80 6c 65 66 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  left);..        
1ee90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1eea0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1eeb0 20 20 20 20 20 20 69 66 20 28 21 6c 65 66 74 2e        if (!left.
1eec0 69 64 65 6e 74 69 66 69 65 72 20 26 26 20 6c 65  identifier && le
1eed0 66 74 2e 69 64 20 21 3d 3d 20 22 2e 22 20 26 26  ft.id !== "." &&
1eee0 20 6c 65 66 74 2e 69 64 20 21 3d 3d 20 22 5b 22   left.id !== "["
1eef0 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
1ef00 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e 69 64           left.id
1ef10 20 21 3d 3d 20 22 28 22 20 26 26 20 6c 65 66 74   !== "(" && left
1ef20 2e 69 64 20 21 3d 3d 20 22 26 26 22 20 26 26 20  .id !== "&&" && 
1ef30 6c 65 66 74 2e 69 64 20 21 3d 3d 20 22 7c 7c 22  left.id !== "||"
1ef40 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
1ef50 20 20 20 20 20 20 20 20 20 6c 65 66 74 2e 69 64           left.id
1ef60 20 21 3d 3d 20 22 3f 22 29 20 7b 0d 0a 20 20 20   !== "?") {..   
1ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
1ef80 6e 69 6e 67 28 22 42 61 64 20 69 6e 76 6f 63 61  ning("Bad invoca
1ef90 74 69 6f 6e 2e 22 2c 20 6c 65 66 74 29 3b 0d 0a  tion.", left);..
1efa0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1efb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1efc0 20 20 74 68 61 74 2e 6c 65 66 74 20 3d 20 6c 65    that.left = le
1efd0 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ft;..        ret
1efe0 75 72 6e 20 74 68 61 74 3b 0d 0a 20 20 20 20 7d  urn that;..    }
1eff0 2c 20 31 35 35 2c 20 74 72 75 65 29 2e 65 78 70  , 155, true).exp
1f000 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  s = true;....   
1f010 20 70 72 65 66 69 78 28 22 28 22 2c 20 66 75 6e   prefix("(", fun
1f020 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20  ction () {..    
1f030 20 20 20 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a      nospace();..
1f040 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74          if (next
1f050 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 66 75  token.id === "fu
1f060 6e 63 74 69 6f 6e 22 29 20 7b 0d 0a 20 20 20 20  nction") {..    
1f070 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65          nexttoke
1f080 6e 2e 69 6d 6d 65 64 20 3d 20 74 72 75 65 3b 0d  n.immed = true;.
1f090 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
1f0a0 20 20 20 20 76 61 72 20 76 20 3d 20 65 78 70 72      var v = expr
1f0b0 65 73 73 69 6f 6e 28 30 29 3b 0d 0a 20 20 20 20  ession(0);..    
1f0c0 20 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c      advance(")",
1f0d0 20 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20   this);..       
1f0e0 20 6e 6f 73 70 61 63 65 28 70 72 65 76 74 6f 6b   nospace(prevtok
1f0f0 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20  en, token);..   
1f100 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e       if (option.
1f110 69 6d 6d 65 64 20 26 26 20 76 2e 69 64 20 3d 3d  immed && v.id ==
1f120 3d 20 22 66 75 6e 63 74 69 6f 6e 22 29 20 7b 0d  = "function") {.
1f130 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1f140 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d  (nexttoken.id !=
1f150 3d 20 22 28 22 20 26 26 0d 0a 20 20 20 20 20 20  = "(" &&..      
1f160 20 20 20 20 20 20 20 20 28 6e 65 78 74 74 6f 6b          (nexttok
1f170 65 6e 2e 69 64 20 21 3d 3d 20 22 2e 22 20 7c 7c  en.id !== "." ||
1f180 20 28 70 65 65 6b 28 29 2e 76 61 6c 75 65 20 21   (peek().value !
1f190 3d 3d 20 22 63 61 6c 6c 22 20 26 26 20 70 65 65  == "call" && pee
1f1a0 6b 28 29 2e 76 61 6c 75 65 20 21 3d 3d 20 22 61  k().value !== "a
1f1b0 70 70 6c 79 22 29 29 29 20 7b 0d 0a 20 20 20 20  pply"))) {..    
1f1c0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
1f1d0 69 6e 67 28 0d 0a 22 44 6f 20 6e 6f 74 20 77 72  ing(.."Do not wr
1f1e0 61 70 20 66 75 6e 63 74 69 6f 6e 20 6c 69 74 65  ap function lite
1f1f0 72 61 6c 73 20 69 6e 20 70 61 72 65 6e 73 20 75  rals in parens u
1f200 6e 6c 65 73 73 20 74 68 65 79 20 61 72 65 20 74  nless they are t
1f210 6f 20 62 65 20 69 6d 6d 65 64 69 61 74 65 6c 79  o be immediately
1f220 20 69 6e 76 6f 6b 65 64 2e 22 2c 0d 0a 20 20 20   invoked.",..   
1f230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f240 20 20 20 20 20 74 68 69 73 29 3b 0d 0a 20 20 20       this);..   
1f250 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1f260 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f270 20 72 65 74 75 72 6e 20 76 3b 0d 0a 20 20 20 20   return v;..    
1f280 7d 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 66 69 78  });....    infix
1f290 28 22 5b 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28  ("[", function (
1f2a0 6c 65 66 74 2c 20 74 68 61 74 29 20 7b 0d 0a 20  left, that) {.. 
1f2b0 20 20 20 20 20 20 20 6e 6f 62 72 65 61 6b 28 70         nobreak(p
1f2c0 72 65 76 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29  revtoken, token)
1f2d0 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73 70 61  ;..        nospa
1f2e0 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 76  ce();..        v
1f2f0 61 72 20 65 20 3d 20 65 78 70 72 65 73 73 69 6f  ar e = expressio
1f300 6e 28 30 29 2c 20 73 3b 0d 0a 20 20 20 20 20 20  n(0), s;..      
1f310 20 20 69 66 20 28 65 20 26 26 20 65 2e 74 79 70    if (e && e.typ
1f320 65 20 3d 3d 3d 20 22 28 73 74 72 69 6e 67 29 22  e === "(string)"
1f330 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1f340 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 65 76 69   if (!option.evi
1f350 6c 20 26 26 20 28 65 2e 76 61 6c 75 65 20 3d 3d  l && (e.value ==
1f360 3d 20 22 65 76 61 6c 22 20 7c 7c 20 65 2e 76 61  = "eval" || e.va
1f370 6c 75 65 20 3d 3d 3d 20 22 65 78 65 63 53 63 72  lue === "execScr
1f380 69 70 74 22 29 29 20 7b 0d 0a 20 20 20 20 20 20  ipt")) {..      
1f390 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
1f3a0 67 28 22 65 76 61 6c 20 69 73 20 65 76 69 6c 2e  g("eval is evil.
1f3b0 22 2c 20 74 68 61 74 29 3b 0d 0a 20 20 20 20 20  ", that);..     
1f3c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1f3d0 20 20 20 20 20 20 63 6f 75 6e 74 4d 65 6d 62 65        countMembe
1f3e0 72 28 65 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20  r(e.value);..   
1f3f0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70           if (!op
1f400 74 69 6f 6e 2e 73 75 62 20 26 26 20 69 78 2e 74  tion.sub && ix.t
1f410 65 73 74 28 65 2e 76 61 6c 75 65 29 29 20 7b 0d  est(e.value)) {.
1f420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f430 20 73 20 3d 20 73 79 6e 74 61 78 5b 65 2e 76 61   s = syntax[e.va
1f440 6c 75 65 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue];..         
1f450 20 20 20 20 20 20 20 69 66 20 28 21 73 20 7c 7c         if (!s ||
1f460 20 21 73 2e 72 65 73 65 72 76 65 64 29 20 7b 0d   !s.reserved) {.
1f470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f480 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 5b 27       warning("['
1f490 7b 61 7d 27 5d 20 69 73 20 62 65 74 74 65 72 20  {a}'] is better 
1f4a0 77 72 69 74 74 65 6e 20 69 6e 20 64 6f 74 20 6e  written in dot n
1f4b0 6f 74 61 74 69 6f 6e 2e 22 2c 0d 0a 20 20 20 20  otation.",..    
1f4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4d0 20 20 20 20 20 20 20 20 70 72 65 76 74 6f 6b 65          prevtoke
1f4e0 6e 2c 20 65 2e 76 61 6c 75 65 29 3b 0d 0a 20 20  n, e.value);..  
1f4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1f500 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1f510 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1f520 20 20 20 61 64 76 61 6e 63 65 28 22 5d 22 2c 20     advance("]", 
1f530 74 68 61 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  that);..        
1f540 6e 6f 73 70 61 63 65 28 70 72 65 76 74 6f 6b 65  nospace(prevtoke
1f550 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20  n, token);..    
1f560 20 20 20 20 74 68 61 74 2e 6c 65 66 74 20 3d 20      that.left = 
1f570 6c 65 66 74 3b 0d 0a 20 20 20 20 20 20 20 20 74  left;..        t
1f580 68 61 74 2e 72 69 67 68 74 20 3d 20 65 3b 0d 0a  hat.right = e;..
1f590 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1f5a0 68 61 74 3b 0d 0a 20 20 20 20 7d 2c 20 31 36 30  hat;..    }, 160
1f5b0 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  , true);....    
1f5c0 70 72 65 66 69 78 28 22 5b 22 2c 20 66 75 6e 63  prefix("[", func
1f5d0 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20  tion () {..     
1f5e0 20 20 20 76 61 72 20 62 20 3d 20 74 6f 6b 65 6e     var b = token
1f5f0 2e 6c 69 6e 65 20 21 3d 3d 20 6e 65 78 74 74 6f  .line !== nextto
1f600 6b 65 6e 2e 6c 69 6e 65 3b 0d 0a 20 20 20 20 20  ken.line;..     
1f610 20 20 20 74 68 69 73 2e 66 69 72 73 74 20 3d 20     this.first = 
1f620 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  [];..        if 
1f630 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  (b) {..         
1f640 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20 6f 70 74     indent += opt
1f650 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a 20 20 20  ion.indent;..   
1f660 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78           if (nex
1f670 74 74 6f 6b 65 6e 2e 66 72 6f 6d 20 3d 3d 3d 20  ttoken.from === 
1f680 69 6e 64 65 6e 74 20 2b 20 6f 70 74 69 6f 6e 2e  indent + option.
1f690 69 6e 64 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20  indent) {..     
1f6a0 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e             inden
1f6b0 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64 65  t += option.inde
1f6c0 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt;..           
1f6d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
1f6e0 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 6e 65         while (ne
1f6f0 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22  xttoken.id !== "
1f700 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20 20 20 20  (end)") {..     
1f710 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 6e 65         while (ne
1f720 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22  xttoken.id === "
1f730 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ,") {..         
1f740 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22         warning("
1f750 45 78 74 72 61 20 63 6f 6d 6d 61 2e 22 29 3b 0d  Extra comma.");.
1f760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f770 20 61 64 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a   advance(",");..
1f780 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1f790 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
1f7a0 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20  exttoken.id === 
1f7b0 22 5d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  "]") {..        
1f7c0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1f7e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
1f7f0 20 26 26 20 74 6f 6b 65 6e 2e 6c 69 6e 65 20 21   && token.line !
1f800 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e  == nexttoken.lin
1f810 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  e) {..          
1f820 20 20 20 20 20 20 69 6e 64 65 6e 74 61 74 69 6f        indentatio
1f830 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  n();..          
1f840 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1f850 20 74 68 69 73 2e 66 69 72 73 74 2e 70 75 73 68   this.first.push
1f860 28 65 78 70 72 65 73 73 69 6f 6e 28 31 30 29 29  (expression(10))
1f870 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ;..            i
1f880 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20  f (nexttoken.id 
1f890 3d 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20  === ",") {..    
1f8a0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d              comm
1f8b0 61 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  a();..          
1f8c0 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f        if (nextto
1f8d0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 5d 22 20 26  ken.id === "]" &
1f8e0 26 20 21 6f 70 74 69 6f 6e 2e 65 73 35 29 20 7b  & !option.es5) {
1f8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f900 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45        warning("E
1f910 78 74 72 61 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f  xtra comma.", to
1f920 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ken);..         
1f930 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1f940 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1f950 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1f960 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
1f970 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
1f980 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
1f990 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
1f9a0 20 20 20 20 20 20 69 66 20 28 62 29 20 7b 0d 0a        if (b) {..
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
1f9c0 6e 74 20 2d 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64  nt -= option.ind
1f9d0 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ent;..          
1f9e0 20 20 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29 3b    indentation();
1f9f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1fa00 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 5d 22       advance("]"
1fa10 2c 20 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  , this);..      
1fa20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a    return this;..
1fa30 20 20 20 20 7d 2c 20 31 36 30 29 3b 0d 0a 0d 0a      }, 160);....
1fa40 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70  ..    function p
1fa50 72 6f 70 65 72 74 79 5f 6e 61 6d 65 28 29 20 7b  roperty_name() {
1fa60 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 64  ..        var id
1fa70 20 3d 20 6f 70 74 69 6f 6e 61 6c 69 64 65 6e 74   = optionalident
1fa80 69 66 69 65 72 28 74 72 75 65 29 3b 0d 0a 20 20  ifier(true);..  
1fa90 20 20 20 20 20 20 69 66 20 28 21 69 64 29 20 7b        if (!id) {
1faa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1fab0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d   (nexttoken.id =
1fac0 3d 3d 20 22 28 73 74 72 69 6e 67 29 22 29 20 7b  == "(string)") {
1fad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fae0 20 20 69 64 20 3d 20 6e 65 78 74 74 6f 6b 65 6e    id = nexttoken
1faf0 2e 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  .value;..       
1fb00 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
1fb10 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1fb20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e 65 78 74   } else if (next
1fb30 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28 6e  token.id === "(n
1fb40 75 6d 62 65 72 29 22 29 20 7b 0d 0a 20 20 20 20  umber)") {..    
1fb50 20 20 20 20 20 20 20 20 20 20 20 20 69 64 20 3d              id =
1fb60 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65   nexttoken.value
1fb70 2e 74 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .toString();..  
1fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64                ad
1fb90 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20  vance();..      
1fba0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1fbb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   }..        retu
1fbc0 72 6e 20 69 64 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rn id;..    }...
1fbd0 0a 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20  ...    function 
1fbe0 66 75 6e 63 74 69 6f 6e 70 61 72 61 6d 73 28 29  functionparams()
1fbf0 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20   {..        var 
1fc00 6e 65 78 74 20 20 20 3d 20 6e 65 78 74 74 6f 6b  next   = nexttok
1fc10 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  en;..        var
1fc20 20 70 61 72 61 6d 73 20 3d 20 5b 5d 3b 0d 0a 20   params = [];.. 
1fc30 20 20 20 20 20 20 20 76 61 72 20 69 64 65 6e 74         var ident
1fc40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 61 64 76  ;....        adv
1fc50 61 6e 63 65 28 22 28 22 29 3b 0d 0a 20 20 20 20  ance("(");..    
1fc60 20 20 20 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a      nospace();..
1fc70 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65  ..        if (ne
1fc80 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22  xttoken.id === "
1fc90 29 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  )") {..         
1fca0 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 29 3b     advance(")");
1fcb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1fcc0 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 7d  turn;..        }
1fcd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20  ....        for 
1fce0 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  (;;) {..        
1fcf0 20 20 20 20 69 64 65 6e 74 20 3d 20 69 64 65 6e      ident = iden
1fd00 74 69 66 69 65 72 28 74 72 75 65 29 3b 0d 0a 20  tifier(true);.. 
1fd10 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d             param
1fd20 73 2e 70 75 73 68 28 69 64 65 6e 74 29 3b 0d 0a  s.push(ident);..
1fd30 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64 6c              addl
1fd40 61 62 65 6c 28 69 64 65 6e 74 2c 20 22 75 6e 75  abel(ident, "unu
1fd50 73 65 64 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20  sed", token);.. 
1fd60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
1fd70 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20  exttoken.id === 
1fd80 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ",") {..        
1fd90 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28 29 3b          comma();
1fda0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
1fdb0 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
1fdc0 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28          advance(
1fdd0 22 29 22 2c 20 6e 65 78 74 29 3b 0d 0a 20 20 20  ")", next);..   
1fde0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 73               nos
1fdf0 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20  pace(prevtoken, 
1fe00 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20  token);..       
1fe10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1fe20 70 61 72 61 6d 73 3b 0d 0a 20 20 20 20 20 20 20  params;..       
1fe30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fe40 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20  }..    }......  
1fe50 20 20 66 75 6e 63 74 69 6f 6e 20 64 6f 46 75 6e    function doFun
1fe60 63 74 69 6f 6e 28 69 2c 20 73 74 61 74 65 6d 65  ction(i, stateme
1fe70 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76  nt) {..        v
1fe80 61 72 20 66 2c 0d 0a 20 20 20 20 20 20 20 20 20  ar f,..         
1fe90 20 20 20 6f 6c 64 4f 70 74 69 6f 6e 20 3d 20 6f     oldOption = o
1fea0 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ption,..        
1feb0 20 20 20 20 6f 6c 64 53 63 6f 70 65 20 20 3d 20      oldScope  = 
1fec0 73 63 6f 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  scope;....      
1fed0 20 20 6f 70 74 69 6f 6e 20 3d 20 4f 62 6a 65 63    option = Objec
1fee0 74 2e 63 72 65 61 74 65 28 6f 70 74 69 6f 6e 29  t.create(option)
1fef0 3b 0d 0a 20 20 20 20 20 20 20 20 73 63 6f 70 65  ;..        scope
1ff00 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65   = Object.create
1ff10 28 73 63 6f 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  (scope);....    
1ff20 20 20 20 20 66 75 6e 63 74 20 3d 20 7b 0d 0a 20      funct = {.. 
1ff30 20 20 20 20 20 20 20 20 20 20 20 22 28 6e 61 6d             "(nam
1ff40 65 29 22 20 20 20 20 20 3a 20 69 20 7c 7c 20 22  e)"     : i || "
1ff50 5c 22 22 20 2b 20 61 6e 6f 6e 6e 61 6d 65 20 2b  \"" + anonname +
1ff60 20 22 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20   "\"",..        
1ff70 20 20 20 20 22 28 6c 69 6e 65 29 22 20 20 20 20      "(line)"    
1ff80 20 3a 20 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e   : nexttoken.lin
1ff90 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1ffa0 22 28 63 68 61 72 61 63 74 65 72 29 22 3a 20 6e  "(character)": n
1ffb0 65 78 74 74 6f 6b 65 6e 2e 63 68 61 72 61 63 74  exttoken.charact
1ffc0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
1ffd0 20 22 28 63 6f 6e 74 65 78 74 29 22 20 20 3a 20   "(context)"  : 
1ffe0 66 75 6e 63 74 2c 0d 0a 20 20 20 20 20 20 20 20  funct,..        
1fff0 20 20 20 20 22 28 62 72 65 61 6b 61 67 65 29 22      "(breakage)"
20000 20 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20   : 0,..         
20010 20 20 20 22 28 6c 6f 6f 70 61 67 65 29 22 20 20     "(loopage)"  
20020 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  : 0,..          
20030 20 20 22 28 73 63 6f 70 65 29 22 20 20 20 20 3a    "(scope)"    :
20040 20 73 63 6f 70 65 2c 0d 0a 20 20 20 20 20 20 20   scope,..       
20050 20 20 20 20 20 22 28 73 74 61 74 65 6d 65 6e 74       "(statement
20060 29 22 3a 20 73 74 61 74 65 6d 65 6e 74 2c 0d 0a  )": statement,..
20070 20 20 20 20 20 20 20 20 20 20 20 20 22 28 74 6f              "(to
20080 6b 65 6e 73 29 22 20 20 20 3a 20 7b 7d 0d 0a 20  kens)"   : {}.. 
20090 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20         };..     
200a0 20 20 20 66 20 3d 20 66 75 6e 63 74 3b 0d 0a 20     f = funct;.. 
200b0 20 20 20 20 20 20 20 74 6f 6b 65 6e 2e 66 75 6e         token.fun
200c0 63 74 20 3d 20 66 75 6e 63 74 3b 0d 0a 20 20 20  ct = funct;..   
200d0 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73 2e 70       functions.p
200e0 75 73 68 28 66 75 6e 63 74 29 3b 0d 0a 20 20 20  ush(funct);..   
200f0 20 20 20 20 20 69 66 20 28 69 29 20 7b 0d 0a 20       if (i) {.. 
20100 20 20 20 20 20 20 20 20 20 20 20 61 64 64 6c 61             addla
20110 62 65 6c 28 69 2c 20 22 66 75 6e 63 74 69 6f 6e  bel(i, "function
20120 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ");..        }..
20130 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28          funct["(
20140 70 61 72 61 6d 73 29 22 5d 20 3d 20 66 75 6e 63  params)"] = func
20150 74 69 6f 6e 70 61 72 61 6d 73 28 29 3b 0d 0a 0d  tionparams();...
20160 0a 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28 66  .        block(f
20170 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 74 72 75  alse, false, tru
20180 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 73 63 6f  e);..        sco
20190 70 65 20 3d 20 6f 6c 64 53 63 6f 70 65 3b 0d 0a  pe = oldScope;..
201a0 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 20 3d          option =
201b0 20 6f 6c 64 4f 70 74 69 6f 6e 3b 0d 0a 20 20 20   oldOption;..   
201c0 20 20 20 20 20 66 75 6e 63 74 5b 22 28 6c 61 73       funct["(las
201d0 74 29 22 5d 20 3d 20 74 6f 6b 65 6e 2e 6c 69 6e  t)"] = token.lin
201e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63  e;..        func
201f0 74 5b 22 28 6c 61 73 74 63 68 61 72 61 63 74 65  t["(lastcharacte
20200 72 29 22 5d 20 3d 20 74 6f 6b 65 6e 2e 63 68 61  r)"] = token.cha
20210 72 61 63 74 65 72 3b 0d 0a 20 20 20 20 20 20 20  racter;..       
20220 20 66 75 6e 63 74 20 3d 20 66 75 6e 63 74 5b 22   funct = funct["
20230 28 63 6f 6e 74 65 78 74 29 22 5d 3b 0d 0a 20 20  (context)"];..  
20240 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 3b 0d        return f;.
20250 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20  .    }......    
20260 28 66 75 6e 63 74 69 6f 6e 20 28 78 29 20 7b 0d  (function (x) {.
20270 0a 20 20 20 20 20 20 20 20 78 2e 6e 75 64 20 3d  .        x.nud =
20280 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a   function () {..
20290 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
202a0 62 2c 20 66 2c 20 69 2c 20 70 2c 20 74 3b 0d 0a  b, f, i, p, t;..
202b0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
202c0 70 72 6f 70 73 20 3d 20 7b 7d 3b 20 2f 2f 20 41  props = {}; // A
202d0 6c 6c 20 70 72 6f 70 65 72 74 69 65 73 2c 20 69  ll properties, i
202e0 6e 63 6c 75 64 69 6e 67 20 61 63 63 65 73 73 6f  ncluding accesso
202f0 72 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  rs....          
20300 20 20 66 75 6e 63 74 69 6f 6e 20 73 61 76 65 50    function saveP
20310 72 6f 70 65 72 74 79 28 6e 61 6d 65 2c 20 74 6f  roperty(name, to
20320 6b 65 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ken) {..        
20330 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 70          if (prop
20340 73 5b 6e 61 6d 65 5d 20 26 26 20 69 73 5f 6f 77  s[name] && is_ow
20350 6e 28 70 72 6f 70 73 2c 20 6e 61 6d 65 29 29 0d  n(props, name)).
20360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20370 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 44 75       warning("Du
20380 70 6c 69 63 61 74 65 20 6d 65 6d 62 65 72 20 27  plicate member '
20390 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74 6f 6b 65  {a}'.", nexttoke
203a0 6e 2c 20 69 29 3b 0d 0a 20 20 20 20 20 20 20 20  n, i);..        
203b0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
203c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203d0 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 20 3d 20    props[name] = 
203e0 7b 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  {};....         
203f0 20 20 20 20 20 20 20 70 72 6f 70 73 5b 6e 61 6d         props[nam
20400 65 5d 2e 62 61 73 69 63 20 3d 20 74 72 75 65 3b  e].basic = true;
20410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20420 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 62 61    props[name].ba
20430 73 69 63 54 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e  sicToken = token
20440 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
20450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
20460 66 75 6e 63 74 69 6f 6e 20 73 61 76 65 53 65 74  function saveSet
20470 74 65 72 28 6e 61 6d 65 2c 20 74 6f 6b 65 6e 29  ter(name, token)
20480 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20490 20 20 20 20 69 66 20 28 70 72 6f 70 73 5b 6e 61      if (props[na
204a0 6d 65 5d 20 26 26 20 69 73 5f 6f 77 6e 28 70 72  me] && is_own(pr
204b0 6f 70 73 2c 20 6e 61 6d 65 29 29 20 7b 0d 0a 20  ops, name)) {.. 
204c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204d0 20 20 20 69 66 20 28 70 72 6f 70 73 5b 6e 61 6d     if (props[nam
204e0 65 5d 2e 62 61 73 69 63 20 7c 7c 20 70 72 6f 70  e].basic || prop
204f0 73 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72 29 0d  s[name].setter).
20500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20510 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
20520 28 22 44 75 70 6c 69 63 61 74 65 20 6d 65 6d 62  ("Duplicate memb
20530 65 72 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74  er '{a}'.", next
20540 74 6f 6b 65 6e 2c 20 69 29 3b 0d 0a 20 20 20 20  token, i);..    
20550 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
20560 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
20570 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 73 5b            props[
20580 6e 61 6d 65 5d 20 3d 20 7b 7d 3b 0d 0a 20 20 20  name] = {};..   
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
205a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
205b0 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 73 65    props[name].se
205c0 74 74 65 72 20 3d 20 74 72 75 65 3b 0d 0a 20 20  tter = true;..  
205d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
205e0 6f 70 73 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72  ops[name].setter
205f0 54 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 3b 0d 0a  Token = token;..
20600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
20610 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e  .            fun
20620 63 74 69 6f 6e 20 73 61 76 65 47 65 74 74 65 72  ction saveGetter
20630 28 6e 61 6d 65 29 20 7b 0d 0a 20 20 20 20 20 20  (name) {..      
20640 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
20650 6f 70 73 5b 6e 61 6d 65 5d 20 26 26 20 69 73 5f  ops[name] && is_
20660 6f 77 6e 28 70 72 6f 70 73 2c 20 6e 61 6d 65 29  own(props, name)
20670 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
20680 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
20690 70 73 5b 6e 61 6d 65 5d 2e 62 61 73 69 63 20 7c  ps[name].basic |
206a0 7c 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 67 65  | props[name].ge
206b0 74 74 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20  tter)..         
206c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
206d0 61 72 6e 69 6e 67 28 22 44 75 70 6c 69 63 61 74  arning("Duplicat
206e0 65 20 6d 65 6d 62 65 72 20 27 7b 61 7d 27 2e 22  e member '{a}'."
206f0 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 69 29 3b  , nexttoken, i);
20700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20710 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
20720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20730 70 72 6f 70 73 5b 6e 61 6d 65 5d 20 3d 20 7b 7d  props[name] = {}
20740 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20750 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
20760 20 20 20 20 20 20 20 20 70 72 6f 70 73 5b 6e 61          props[na
20770 6d 65 5d 2e 67 65 74 74 65 72 20 3d 20 74 72 75  me].getter = tru
20780 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
20790 20 20 20 20 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e      props[name].
207a0 67 65 74 74 65 72 54 6f 6b 65 6e 20 3d 20 74 6f  getterToken = to
207b0 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ken;..          
207c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
207d0 20 20 20 62 20 3d 20 74 6f 6b 65 6e 2e 6c 69 6e     b = token.lin
207e0 65 20 21 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e  e !== nexttoken.
207f0 6c 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  line;..         
20800 20 20 20 69 66 20 28 62 29 20 7b 0d 0a 20 20 20     if (b) {..   
20810 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
20820 65 6e 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e  ent += option.in
20830 64 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  dent;..         
20840 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74         if (nextt
20850 6f 6b 65 6e 2e 66 72 6f 6d 20 3d 3d 3d 20 69 6e  oken.from === in
20860 64 65 6e 74 20 2b 20 6f 70 74 69 6f 6e 2e 69 6e  dent + option.in
20870 64 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20  dent) {..       
20880 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
20890 65 6e 74 20 2b 3d 20 6f 70 74 69 6f 6e 2e 69 6e  ent += option.in
208a0 64 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  dent;..         
208b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
208c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
208d0 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d       for (;;) {.
208e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
208f0 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69   if (nexttoken.i
20900 64 20 3d 3d 3d 20 22 7d 22 29 20 7b 0d 0a 20 20  d === "}") {..  
20910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20920 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
20930 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
20940 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
20950 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  (b) {..         
20960 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e             inden
20970 74 61 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20  tation();..     
20980 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
20990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
209a0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75   (nexttoken.valu
209b0 65 20 3d 3d 3d 20 22 67 65 74 22 20 26 26 20 70  e === "get" && p
209c0 65 65 6b 28 29 2e 69 64 20 21 3d 3d 20 22 3a 22  eek().id !== ":"
209d0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
209e0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
209f0 28 22 67 65 74 22 29 3b 0d 0a 20 20 20 20 20 20  ("get");..      
20a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
20a10 20 28 21 6f 70 74 69 6f 6e 2e 65 73 35 29 20 7b   (!option.es5) {
20a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20a30 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28            error(
20a40 22 67 65 74 2f 73 65 74 20 61 72 65 20 45 53 35  "get/set are ES5
20a50 20 66 65 61 74 75 72 65 73 2e 22 29 3b 0d 0a 20   features.");.. 
20a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
20a80 20 20 20 20 20 20 20 20 20 20 69 20 3d 20 70 72            i = pr
20a90 6f 70 65 72 74 79 5f 6e 61 6d 65 28 29 3b 0d 0a  operty_name();..
20aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ab0 20 20 20 20 69 66 20 28 21 69 29 20 7b 0d 0a 20      if (!i) {.. 
20ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ad0 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 4d 69         error("Mi
20ae0 73 73 69 6e 67 20 70 72 6f 70 65 72 74 79 20 6e  ssing property n
20af0 61 6d 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20  ame.");..       
20b00 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
20b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b20 20 20 20 20 73 61 76 65 47 65 74 74 65 72 28 69      saveGetter(i
20b30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
20b40 20 20 20 20 20 20 20 20 74 20 3d 20 6e 65 78 74          t = next
20b50 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20  token;..        
20b60 20 20 20 20 20 20 20 20 20 20 20 20 61 64 6a 61              adja
20b70 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74  cent(token, next
20b80 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20  token);..       
20b90 20 20 20 20 20 20 20 20 20 20 20 20 20 66 20 3d               f =
20ba0 20 64 6f 46 75 6e 63 74 69 6f 6e 28 29 3b 0d 0a   doFunction();..
20bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20bc0 20 20 20 20 70 20 3d 20 66 5b 22 28 70 61 72 61      p = f["(para
20bd0 6d 73 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20 20  ms)"];..        
20be0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
20bf0 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  p) {..          
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
20c10 72 6e 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65  rning("Unexpecte
20c20 64 20 70 61 72 61 6d 65 74 65 72 20 27 7b 61 7d  d parameter '{a}
20c30 27 20 69 6e 20 67 65 74 20 7b 62 7d 20 66 75 6e  ' in get {b} fun
20c40 63 74 69 6f 6e 2e 22 2c 20 74 2c 20 70 5b 30 5d  ction.", t, p[0]
20c50 2c 20 69 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , i);..         
20c60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
20c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c80 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e    adjacent(token
20c90 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20  , nexttoken);.. 
20ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
20cb0 20 65 6c 73 65 20 69 66 20 28 6e 65 78 74 74 6f   else if (nextto
20cc0 6b 65 6e 2e 76 61 6c 75 65 20 3d 3d 3d 20 22 73  ken.value === "s
20cd0 65 74 22 20 26 26 20 70 65 65 6b 28 29 2e 69 64  et" && peek().id
20ce0 20 21 3d 3d 20 22 3a 22 29 20 7b 0d 0a 20 20 20   !== ":") {..   
20cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d00 20 61 64 76 61 6e 63 65 28 22 73 65 74 22 29 3b   advance("set");
20d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20d20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69 6f        if (!optio
20d30 6e 2e 65 73 35 29 20 7b 0d 0a 20 20 20 20 20 20  n.es5) {..      
20d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d50 20 20 65 72 72 6f 72 28 22 67 65 74 2f 73 65 74    error("get/set
20d60 20 61 72 65 20 45 53 35 20 66 65 61 74 75 72 65   are ES5 feature
20d70 73 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  s.");..         
20d80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
20d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20da0 20 20 69 20 3d 20 70 72 6f 70 65 72 74 79 5f 6e    i = property_n
20db0 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ame();..        
20dc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
20dd0 21 69 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  !i) {..         
20de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
20df0 72 72 6f 72 28 22 4d 69 73 73 69 6e 67 20 70 72  rror("Missing pr
20e00 6f 70 65 72 74 79 20 6e 61 6d 65 2e 22 29 3b 0d  operty name.");.
20e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20e20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20e30 20 20 20 20 20 20 20 20 20 20 20 20 73 61 76 65              save
20e40 53 65 74 74 65 72 28 69 2c 20 6e 65 78 74 74 6f  Setter(i, nextto
20e50 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ken);..         
20e60 20 20 20 20 20 20 20 20 20 20 20 74 20 3d 20 6e             t = n
20e70 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20  exttoken;..     
20e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
20e90 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e  djacent(token, n
20ea0 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20  exttoken);..    
20eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ec0 66 20 3d 20 64 6f 46 75 6e 63 74 69 6f 6e 28 29  f = doFunction()
20ed0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20ee0 20 20 20 20 20 20 20 70 20 3d 20 66 5b 22 28 70         p = f["(p
20ef0 61 72 61 6d 73 29 22 5d 3b 0d 0a 20 20 20 20 20  arams)"];..     
20f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
20f10 66 20 28 21 70 20 7c 7c 20 70 2e 6c 65 6e 67 74  f (!p || p.lengt
20f20 68 20 21 3d 3d 20 31 29 20 7b 0d 0a 20 20 20 20  h !== 1) {..    
20f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f40 20 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 70      warning("Exp
20f50 65 63 74 65 64 20 61 20 73 69 6e 67 6c 65 20 70  ected a single p
20f60 61 72 61 6d 65 74 65 72 20 69 6e 20 73 65 74 20  arameter in set 
20f70 7b 61 7d 20 66 75 6e 63 74 69 6f 6e 2e 22 2c 20  {a} function.", 
20f80 74 2c 20 69 29 3b 0d 0a 20 20 20 20 20 20 20 20  t, i);..        
20f90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
20fb0 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20   else {..       
20fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 20 3d               i =
20fd0 20 70 72 6f 70 65 72 74 79 5f 6e 61 6d 65 28 29   property_name()
20fe0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20ff0 20 20 20 20 20 20 20 73 61 76 65 50 72 6f 70 65         savePrope
21000 72 74 79 28 69 2c 20 6e 65 78 74 74 6f 6b 65 6e  rty(i, nexttoken
21010 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
21020 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
21030 6f 66 20 69 20 21 3d 3d 20 22 73 74 72 69 6e 67  of i !== "string
21040 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
21050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
21060 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
21070 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
21080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21090 20 61 64 76 61 6e 63 65 28 22 3a 22 29 3b 0d 0a   advance(":");..
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210b0 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28      nonadjacent(
210c0 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e  token, nexttoken
210d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
210e0 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69          expressi
210f0 6f 6e 28 31 30 29 3b 0d 0a 20 20 20 20 20 20 20  on(10);..       
21100 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
21110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
21120 75 6e 74 4d 65 6d 62 65 72 28 69 29 3b 0d 0a 20  untMember(i);.. 
21130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
21140 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20  f (nexttoken.id 
21150 3d 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20  === ",") {..    
21160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21170 63 6f 6d 6d 61 28 29 3b 0d 0a 20 20 20 20 20 20  comma();..      
21180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
21190 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d   (nexttoken.id =
211a0 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20  == ",") {..     
211b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211c0 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 74 72     warning("Extr
211d0 61 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e  a comma.", token
211e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
211f0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
21200 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20  f (nexttoken.id 
21210 3d 3d 3d 20 22 7d 22 20 26 26 20 21 6f 70 74 69  === "}" && !opti
21220 6f 6e 2e 65 73 35 29 20 7b 0d 0a 20 20 20 20 20  on.es5) {..     
21230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21240 20 20 20 77 61 72 6e 69 6e 67 28 22 45 78 74 72     warning("Extr
21250 61 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e  a comma.", token
21260 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
21270 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
21280 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
21290 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
212a0 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
212b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
212c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
212d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
212e0 66 20 28 62 29 20 7b 0d 0a 20 20 20 20 20 20 20  f (b) {..       
212f0 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 20           indent 
21300 2d 3d 20 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74  -= option.indent
21310 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
21320 20 20 20 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29     indentation()
21330 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
21340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64  ..            ad
21350 76 61 6e 63 65 28 22 7d 22 2c 20 74 68 69 73 29  vance("}", this)
21360 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
21370 20 2f 2f 20 43 68 65 63 6b 20 66 6f 72 20 6c 6f   // Check for lo
21380 6e 65 6c 79 20 73 65 74 74 65 72 73 20 69 66 20  nely setters if 
21390 69 6e 20 74 68 65 20 45 53 35 20 6d 6f 64 65 2e  in the ES5 mode.
213a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
213b0 20 28 6f 70 74 69 6f 6e 2e 65 73 35 29 20 7b 0d   (option.es5) {.
213c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
213d0 20 66 6f 72 20 28 76 61 72 20 6e 61 6d 65 20 69   for (var name i
213e0 6e 20 70 72 6f 70 73 29 20 7b 0d 0a 20 20 20 20  n props) {..    
213f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21400 69 66 20 28 69 73 5f 6f 77 6e 28 70 72 6f 70 73  if (is_own(props
21410 2c 20 6e 61 6d 65 29 20 26 26 20 70 72 6f 70 73  , name) && props
21420 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72 20 26 26  [name].setter &&
21430 20 21 70 72 6f 70 73 5b 6e 61 6d 65 5d 2e 67 65   !props[name].ge
21440 74 74 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20  tter) {..       
21450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21460 20 77 61 72 6e 69 6e 67 28 22 53 65 74 74 65 72   warning("Setter
21470 20 69 73 20 64 65 66 69 6e 65 64 20 77 69 74 68   is defined with
21480 6f 75 74 20 67 65 74 74 65 72 2e 22 2c 20 70 72  out getter.", pr
21490 6f 70 73 5b 6e 61 6d 65 5d 2e 73 65 74 74 65 72  ops[name].setter
214a0 54 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20  Token);..       
214b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
214c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
214e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
214f0 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20  turn this;..    
21500 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20      };..        
21510 78 2e 66 75 64 20 3d 20 66 75 6e 63 74 69 6f 6e  x.fud = function
21520 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20   () {..         
21530 20 20 20 65 72 72 6f 72 28 22 45 78 70 65 63 74     error("Expect
21540 65 64 20 74 6f 20 73 65 65 20 61 20 73 74 61 74  ed to see a stat
21550 65 6d 65 6e 74 20 61 6e 64 20 69 6e 73 74 65 61  ement and instea
21560 64 20 73 61 77 20 61 20 62 6c 6f 63 6b 2e 22 2c  d saw a block.",
21570 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20   token);..      
21580 20 20 7d 3b 0d 0a 20 20 20 20 7d 28 64 65 6c 69    };..    }(deli
21590 6d 28 22 7b 22 29 29 29 3b 0d 0a 0d 0a 2f 2f 20  m("{")));....// 
215a0 54 68 69 73 20 46 75 6e 63 74 69 6f 6e 20 69 73  This Function is
215b0 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 65 73 6e   called when esn
215c0 65 78 74 20 6f 70 74 69 6f 6e 20 69 73 20 73 65  ext option is se
215d0 74 20 74 6f 20 74 72 75 65 0d 0a 2f 2f 20 69 74  t to true..// it
215e0 20 61 64 64 73 20 74 68 65 20 60 63 6f 6e 73 74   adds the `const
215f0 60 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 4a  ` statement to J
21600 53 48 49 4e 54 0d 0a 0d 0a 20 20 20 20 75 73 65  SHINT....    use
21610 45 53 4e 65 78 74 53 79 6e 74 61 78 20 3d 20 66  ESNextSyntax = f
21620 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20  unction () {..  
21630 20 20 20 20 20 20 76 61 72 20 63 6f 6e 73 74 73        var consts
21640 74 61 74 65 6d 65 6e 74 20 3d 20 73 74 6d 74 28  tatement = stmt(
21650 22 63 6f 6e 73 74 22 2c 20 66 75 6e 63 74 69 6f  "const", functio
21660 6e 20 28 70 72 65 66 69 78 29 20 7b 0d 0a 20 20  n (prefix) {..  
21670 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 64            var id
21680 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 3b 0d 0a  , name, value;..
21690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
216a0 69 73 2e 66 69 72 73 74 20 3d 20 5b 5d 3b 0d 0a  is.first = [];..
216b0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
216c0 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  (;;) {..        
216d0 20 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63          nonadjac
216e0 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74  ent(token, nextt
216f0 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  oken);..        
21700 20 20 20 20 20 20 20 20 69 64 20 3d 20 69 64 65          id = ide
21710 6e 74 69 66 69 65 72 28 29 3b 0d 0a 20 20 20 20  ntifier();..    
21720 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21730 66 75 6e 63 74 5b 69 64 5d 20 3d 3d 3d 20 22 63  funct[id] === "c
21740 6f 6e 73 74 22 29 20 7b 0d 0a 20 20 20 20 20 20  onst") {..      
21750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
21760 72 6e 69 6e 67 28 22 63 6f 6e 73 74 20 27 22 20  rning("const '" 
21770 2b 20 69 64 20 2b 20 22 27 20 68 61 73 20 61 6c  + id + "' has al
21780 72 65 61 64 79 20 62 65 65 6e 20 64 65 63 6c 61  ready been decla
21790 72 65 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  red");..        
217a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
217b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66             if (f
217c0 75 6e 63 74 5b 22 28 67 6c 6f 62 61 6c 29 22 5d  unct["(global)"]
217d0 20 26 26 20 70 72 65 64 65 66 69 6e 65 64 5b 69   && predefined[i
217e0 64 5d 20 3d 3d 3d 20 66 61 6c 73 65 29 20 7b 0d  d] === false) {.
217f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21800 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 52 65       warning("Re
21810 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 27 7b  definition of '{
21820 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 69 64  a}'.", token, id
21830 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
21840 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21850 20 20 20 20 20 20 20 61 64 64 6c 61 62 65 6c 28         addlabel(
21860 69 64 2c 20 22 63 6f 6e 73 74 22 29 3b 0d 0a 20  id, "const");.. 
21870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
21880 66 20 28 70 72 65 66 69 78 29 20 7b 0d 0a 20 20  f (prefix) {..  
21890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218a0 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
218b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
218c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d               nam
218d0 65 20 3d 20 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20  e = token;..    
218e0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
218f0 2e 66 69 72 73 74 2e 70 75 73 68 28 74 6f 6b 65  .first.push(toke
21900 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
21910 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74         if (nextt
21920 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 3d 22 29  oken.id !== "=")
21930 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21940 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
21950 22 63 6f 6e 73 74 20 22 20 2b 0d 0a 20 20 20 20  "const " +..    
21960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21970 20 20 22 27 7b 61 7d 27 20 69 73 20 69 6e 69 74    "'{a}' is init
21980 69 61 6c 69 7a 65 64 20 74 6f 20 27 75 6e 64 65  ialized to 'unde
21990 66 69 6e 65 64 27 2e 22 2c 20 74 6f 6b 65 6e 2c  fined'.", token,
219a0 20 69 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20   id);..         
219b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
219c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
219d0 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d  nexttoken.id ===
219e0 20 22 3d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20   "=") {..       
219f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e               non
21a00 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20  adjacent(token, 
21a10 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20  nexttoken);..   
21a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a30 20 61 64 76 61 6e 63 65 28 22 3d 22 29 3b 0d 0a   advance("=");..
21a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a50 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28      nonadjacent(
21a60 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e  token, nexttoken
21a70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
21a80 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74          if (next
21a90 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 75 6e  token.id === "un
21aa0 64 65 66 69 6e 65 64 22 29 20 7b 0d 0a 20 20 20  defined") {..   
21ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ac0 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 49 74       warning("It
21ad0 20 69 73 20 6e 6f 74 20 6e 65 63 65 73 73 61 72   is not necessar
21ae0 79 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20  y to initialize 
21af0 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
21b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
21b10 27 7b 61 7d 27 20 74 6f 20 27 75 6e 64 65 66 69  '{a}' to 'undefi
21b20 6e 65 64 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 69  ned'.", token, i
21b30 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d);..           
21b40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
21b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b60 69 66 20 28 70 65 65 6b 28 30 29 2e 69 64 20 3d  if (peek(0).id =
21b70 3d 3d 20 22 3d 22 20 26 26 20 6e 65 78 74 74 6f  == "=" && nextto
21b80 6b 65 6e 2e 69 64 65 6e 74 69 66 69 65 72 29 20  ken.identifier) 
21b90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21ba0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
21bb0 28 22 43 6f 6e 73 74 61 6e 74 20 7b 61 7d 20 77  ("Constant {a} w
21bc0 61 73 20 6e 6f 74 20 64 65 63 6c 61 72 65 64 20  as not declared 
21bd0 63 6f 72 72 65 63 74 6c 79 2e 22 2c 0d 0a 20 20  correctly.",..  
21be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
21c00 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b  xttoken, nexttok
21c10 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  en.value);..    
21c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
21c40 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65         value = e
21c50 78 70 72 65 73 73 69 6f 6e 28 30 29 3b 0d 0a 20  xpression(0);.. 
21c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c70 20 20 20 6e 61 6d 65 2e 66 69 72 73 74 20 3d 20     name.first = 
21c80 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
21c90 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
21ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
21cb0 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d  (nexttoken.id !=
21cc0 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20  = ",") {..      
21cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
21ce0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
21cf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
21d00 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28 29           comma()
21d10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
21d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
21d30 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20  turn this;..    
21d40 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20 20 20      });..       
21d50 20 63 6f 6e 73 74 73 74 61 74 65 6d 65 6e 74 2e   conststatement.
21d60 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20  exps = true;..  
21d70 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 76 61 72 20    };....    var 
21d80 76 61 72 73 74 61 74 65 6d 65 6e 74 20 3d 20 73  varstatement = s
21d90 74 6d 74 28 22 76 61 72 22 2c 20 66 75 6e 63 74  tmt("var", funct
21da0 69 6f 6e 20 28 70 72 65 66 69 78 29 20 7b 0d 0a  ion (prefix) {..
21db0 20 20 20 20 20 20 20 20 2f 2f 20 4a 61 76 61 53          // JavaS
21dc0 63 72 69 70 74 20 64 6f 65 73 20 6e 6f 74 20 68  cript does not h
21dd0 61 76 65 20 62 6c 6f 63 6b 20 73 63 6f 70 65 2e  ave block scope.
21de0 20 49 74 20 6f 6e 6c 79 20 68 61 73 20 66 75 6e   It only has fun
21df0 63 74 69 6f 6e 20 73 63 6f 70 65 2e 20 53 6f 2c  ction scope. So,
21e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 64 65 63  ..        // dec
21e10 6c 61 72 69 6e 67 20 61 20 76 61 72 69 61 62 6c  laring a variabl
21e20 65 20 69 6e 20 61 20 62 6c 6f 63 6b 20 63 61 6e  e in a block can
21e30 20 68 61 76 65 20 75 6e 65 78 70 65 63 74 65 64   have unexpected
21e40 20 63 6f 6e 73 65 71 75 65 6e 63 65 73 2e 0d 0a   consequences...
21e50 20 20 20 20 20 20 20 20 76 61 72 20 69 64 2c 20          var id, 
21e60 6e 61 6d 65 2c 20 76 61 6c 75 65 3b 0d 0a 0d 0a  name, value;....
21e70 20 20 20 20 20 20 20 20 69 66 20 28 66 75 6e 63          if (func
21e80 74 5b 22 28 6f 6e 65 76 61 72 29 22 5d 20 26 26  t["(onevar)"] &&
21e90 20 6f 70 74 69 6f 6e 2e 6f 6e 65 76 61 72 29 20   option.onevar) 
21ea0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77  {..            w
21eb0 61 72 6e 69 6e 67 28 22 54 6f 6f 20 6d 61 6e 79  arning("Too many
21ec0 20 76 61 72 20 73 74 61 74 65 6d 65 6e 74 73 2e   var statements.
21ed0 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65  ");..        } e
21ee0 6c 73 65 20 69 66 20 28 21 66 75 6e 63 74 5b 22  lse if (!funct["
21ef0 28 67 6c 6f 62 61 6c 29 22 5d 29 20 7b 0d 0a 20  (global)"]) {.. 
21f00 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74             funct
21f10 5b 22 28 6f 6e 65 76 61 72 29 22 5d 20 3d 20 74  ["(onevar)"] = t
21f20 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rue;..        }.
21f30 0a 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ...        this.
21f40 66 69 72 73 74 20 3d 20 5b 5d 3b 0d 0a 0d 0a 20  first = [];.... 
21f50 20 20 20 20 20 20 20 66 6f 72 20 28 3b 3b 29 20         for (;;) 
21f60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  {..            n
21f70 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e  onadjacent(token
21f80 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20  , nexttoken);.. 
21f90 20 20 20 20 20 20 20 20 20 20 20 69 64 20 3d 20             id = 
21fa0 69 64 65 6e 74 69 66 69 65 72 28 29 3b 0d 0a 0d  identifier();...
21fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
21fc0 28 6f 70 74 69 6f 6e 2e 65 73 6e 65 78 74 20 26  (option.esnext &
21fd0 26 20 66 75 6e 63 74 5b 69 64 5d 20 3d 3d 3d 20  & funct[id] === 
21fe0 22 63 6f 6e 73 74 22 29 20 7b 0d 0a 20 20 20 20  "const") {..    
21ff0 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e              warn
22000 69 6e 67 28 22 63 6f 6e 73 74 20 27 22 20 2b 20  ing("const '" + 
22010 69 64 20 2b 20 22 27 20 68 61 73 20 61 6c 72 65  id + "' has alre
22020 61 64 79 20 62 65 65 6e 20 64 65 63 6c 61 72 65  ady been declare
22030 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d");..          
22040 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
22050 20 20 20 69 66 20 28 66 75 6e 63 74 5b 22 28 67     if (funct["(g
22060 6c 6f 62 61 6c 29 22 5d 20 26 26 20 70 72 65 64  lobal)"] && pred
22070 65 66 69 6e 65 64 5b 69 64 5d 20 3d 3d 3d 20 66  efined[id] === f
22080 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  alse) {..       
22090 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67           warning
220a0 28 22 52 65 64 65 66 69 6e 69 74 69 6f 6e 20 6f  ("Redefinition o
220b0 66 20 27 7b 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e  f '{a}'.", token
220c0 2c 20 69 64 29 3b 0d 0a 20 20 20 20 20 20 20 20  , id);..        
220d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
220e0 20 20 20 20 20 61 64 64 6c 61 62 65 6c 28 69 64       addlabel(id
220f0 2c 20 22 75 6e 75 73 65 64 22 2c 20 74 6f 6b 65  , "unused", toke
22100 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
22110 20 20 20 69 66 20 28 70 72 65 66 69 78 29 20 7b     if (prefix) {
22120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22130 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
22140 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
22150 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 74 6f         name = to
22160 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ken;..          
22170 20 20 74 68 69 73 2e 66 69 72 73 74 2e 70 75 73    this.first.pus
22180 68 28 74 6f 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20  h(token);....   
22190 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78           if (nex
221a0 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 3d  ttoken.id === "=
221b0 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
221c0 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e        nonadjacen
221d0 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b  t(token, nexttok
221e0 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  en);..          
221f0 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 3d        advance("=
22200 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
22210 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74       nonadjacent
22220 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65  (token, nexttoke
22230 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n);..           
22240 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b       if (nexttok
22250 65 6e 2e 69 64 20 3d 3d 3d 20 22 75 6e 64 65 66  en.id === "undef
22260 69 6e 65 64 22 29 20 7b 0d 0a 20 20 20 20 20 20  ined") {..      
22270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
22280 72 6e 69 6e 67 28 22 49 74 20 69 73 20 6e 6f 74  rning("It is not
22290 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 69 6e   necessary to in
222a0 69 74 69 61 6c 69 7a 65 20 27 7b 61 7d 27 20 74  itialize '{a}' t
222b0 6f 20 27 75 6e 64 65 66 69 6e 65 64 27 2e 22 2c  o 'undefined'.",
222c0 20 74 6f 6b 65 6e 2c 20 69 64 29 3b 0d 0a 20 20   token, id);..  
222d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
222e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
222f0 20 69 66 20 28 70 65 65 6b 28 30 29 2e 69 64 20   if (peek(0).id 
22300 3d 3d 3d 20 22 3d 22 20 26 26 20 6e 65 78 74 74  === "=" && nextt
22310 6f 6b 65 6e 2e 69 64 65 6e 74 69 66 69 65 72 29  oken.identifier)
22320 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22330 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 22 56          error("V
22340 61 72 69 61 62 6c 65 20 7b 61 7d 20 77 61 73 20  ariable {a} was 
22350 6e 6f 74 20 64 65 63 6c 61 72 65 64 20 63 6f 72  not declared cor
22360 72 65 63 74 6c 79 2e 22 2c 0d 0a 20 20 20 20 20  rectly.",..     
22370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22380 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e         nexttoken
22390 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75  , nexttoken.valu
223a0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
223b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
223c0 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
223d0 65 78 70 72 65 73 73 69 6f 6e 28 30 29 3b 0d 0a  expression(0);..
223e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223f0 6e 61 6d 65 2e 66 69 72 73 74 20 3d 20 76 61 6c  name.first = val
22400 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
22410 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
22420 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64  if (nexttoken.id
22430 20 21 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20   !== ",") {..   
22440 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
22450 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ak;..           
22460 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
22470 63 6f 6d 6d 61 28 29 3b 0d 0a 20 20 20 20 20 20  comma();..      
22480 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74    }..        ret
22490 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d  urn this;..    }
224a0 29 3b 0d 0a 20 20 20 20 76 61 72 73 74 61 74 65  );..    varstate
224b0 6d 65 6e 74 2e 65 78 70 73 20 3d 20 74 72 75 65  ment.exps = true
224c0 3b 0d 0a 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74  ;....    blockst
224d0 6d 74 28 22 66 75 6e 63 74 69 6f 6e 22 2c 20 66  mt("function", f
224e0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20  unction () {..  
224f0 20 20 20 20 20 20 69 66 20 28 69 6e 62 6c 6f 63        if (inbloc
22500 6b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  k) {..          
22510 20 20 77 61 72 6e 69 6e 67 28 22 46 75 6e 63 74    warning("Funct
22520 69 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  ion declarations
22530 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 70   should not be p
22540 6c 61 63 65 64 20 69 6e 20 62 6c 6f 63 6b 73 2e  laced in blocks.
22550 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
22560 20 20 20 20 20 20 22 55 73 65 20 61 20 66 75 6e        "Use a fun
22570 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e  ction expression
22580 20 6f 72 20 6d 6f 76 65 20 74 68 65 20 73 74 61   or move the sta
22590 74 65 6d 65 6e 74 20 74 6f 20 74 68 65 20 74 6f  tement to the to
225a0 70 20 6f 66 20 22 20 2b 0d 0a 20 20 20 20 20 20  p of " +..      
225b0 20 20 20 20 20 20 20 20 20 20 22 74 68 65 20 6f            "the o
225c0 75 74 65 72 20 66 75 6e 63 74 69 6f 6e 2e 22 2c  uter function.",
225d0 20 74 6f 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20   token);....    
225e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 76      }..        v
225f0 61 72 20 69 20 3d 20 69 64 65 6e 74 69 66 69 65  ar i = identifie
22600 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  r();..        if
22610 20 28 6f 70 74 69 6f 6e 2e 65 73 6e 65 78 74 20   (option.esnext 
22620 26 26 20 66 75 6e 63 74 5b 69 5d 20 3d 3d 3d 20  && funct[i] === 
22630 22 63 6f 6e 73 74 22 29 20 7b 0d 0a 20 20 20 20  "const") {..    
22640 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
22650 22 63 6f 6e 73 74 20 27 22 20 2b 20 69 20 2b 20  "const '" + i + 
22660 22 27 20 68 61 73 20 61 6c 72 65 61 64 79 20 62  "' has already b
22670 65 65 6e 20 64 65 63 6c 61 72 65 64 22 29 3b 0d  een declared");.
22680 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
22690 20 20 20 20 61 64 6a 61 63 65 6e 74 28 74 6f 6b      adjacent(tok
226a0 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d  en, nexttoken);.
226b0 0a 20 20 20 20 20 20 20 20 61 64 64 6c 61 62 65  .        addlabe
226c0 6c 28 69 2c 20 22 75 6e 63 74 69 6f 6e 22 2c 20  l(i, "unction", 
226d0 74 6f 6b 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  token);....     
226e0 20 20 20 64 6f 46 75 6e 63 74 69 6f 6e 28 69 2c     doFunction(i,
226f0 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20   true);..       
22700 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69   if (nexttoken.i
22710 64 20 3d 3d 3d 20 22 28 22 20 26 26 20 6e 65 78  d === "(" && nex
22720 74 74 6f 6b 65 6e 2e 6c 69 6e 65 20 3d 3d 3d 20  ttoken.line === 
22730 74 6f 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20  token.line) {.. 
22740 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
22750 28 0d 0a 22 46 75 6e 63 74 69 6f 6e 20 64 65 63  (.."Function dec
22760 6c 61 72 61 74 69 6f 6e 73 20 61 72 65 20 6e 6f  larations are no
22770 74 20 69 6e 76 6f 63 61 62 6c 65 2e 20 57 72 61  t invocable. Wra
22780 70 20 74 68 65 20 77 68 6f 6c 65 20 66 75 6e 63  p the whole func
22790 74 69 6f 6e 20 69 6e 76 6f 63 61 74 69 6f 6e 20  tion invocation 
227a0 69 6e 20 70 61 72 65 6e 73 2e 22 29 3b 0d 0a 20  in parens.");.. 
227b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
227c0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a    return this;..
227d0 20 20 20 20 7d 29 3b 0d 0a 0d 0a 20 20 20 20 70      });....    p
227e0 72 65 66 69 78 28 22 66 75 6e 63 74 69 6f 6e 22  refix("function"
227f0 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d  , function () {.
22800 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 20 3d  .        var i =
22810 20 6f 70 74 69 6f 6e 61 6c 69 64 65 6e 74 69 66   optionalidentif
22820 69 65 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ier();..        
22830 69 66 20 28 69 29 20 7b 0d 0a 20 20 20 20 20 20  if (i) {..      
22840 20 20 20 20 20 20 61 64 6a 61 63 65 6e 74 28 74        adjacent(t
22850 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29  oken, nexttoken)
22860 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73  ;..        } els
22870 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
22880 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b   nonadjacent(tok
22890 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d  en, nexttoken);.
228a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
228b0 20 20 20 20 64 6f 46 75 6e 63 74 69 6f 6e 28 69      doFunction(i
228c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  );..        if (
228d0 21 6f 70 74 69 6f 6e 2e 6c 6f 6f 70 66 75 6e 63  !option.loopfunc
228e0 20 26 26 20 66 75 6e 63 74 5b 22 28 6c 6f 6f 70   && funct["(loop
228f0 61 67 65 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20  age)"]) {..     
22900 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22         warning("
22910 44 6f 6e 27 74 20 6d 61 6b 65 20 66 75 6e 63 74  Don't make funct
22920 69 6f 6e 73 20 77 69 74 68 69 6e 20 61 20 6c 6f  ions within a lo
22930 6f 70 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  op.");..        
22940 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  }..        retur
22950 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d 29 3b  n this;..    });
22960 0d 0a 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74 6d  ....    blockstm
22970 74 28 22 69 66 22 2c 20 66 75 6e 63 74 69 6f 6e  t("if", function
22980 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76   () {..        v
22990 61 72 20 74 20 3d 20 6e 65 78 74 74 6f 6b 65 6e  ar t = nexttoken
229a0 3b 0d 0a 20 20 20 20 20 20 20 20 61 64 76 61 6e  ;..        advan
229b0 63 65 28 22 28 22 29 3b 0d 0a 20 20 20 20 20 20  ce("(");..      
229c0 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 68    nonadjacent(th
229d0 69 73 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20 20  is, t);..       
229e0 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a 20 20 20   nospace();..   
229f0 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 28       expression(
22a00 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  20);..        if
22a10 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d   (nexttoken.id =
22a20 3d 3d 20 22 3d 22 29 20 7b 0d 0a 20 20 20 20 20  == "=") {..     
22a30 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74 69         if (!opti
22a40 6f 6e 2e 62 6f 73 73 29 0d 0a 20 20 20 20 20 20  on.boss)..      
22a50 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
22a60 67 28 22 45 78 70 65 63 74 65 64 20 61 20 63 6f  g("Expected a co
22a70 6e 64 69 74 69 6f 6e 61 6c 20 65 78 70 72 65 73  nditional expres
22a80 73 69 6f 6e 20 61 6e 64 20 69 6e 73 74 65 61 64  sion and instead
22a90 20 73 61 77 20 61 6e 20 61 73 73 69 67 6e 6d 65   saw an assignme
22aa0 6e 74 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  nt.");..        
22ab0 20 20 20 20 61 64 76 61 6e 63 65 28 22 3d 22 29      advance("=")
22ac0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  ;..            e
22ad0 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b 0d 0a  xpression(20);..
22ae0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22af0 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c 20     advance(")", 
22b00 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73  t);..        nos
22b10 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20  pace(prevtoken, 
22b20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20  token);..       
22b30 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20 74 72 75   block(true, tru
22b40 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  e);..        if 
22b50 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d  (nexttoken.id ==
22b60 3d 20 22 65 6c 73 65 22 29 20 7b 0d 0a 20 20 20  = "else") {..   
22b70 20 20 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61           nonadja
22b80 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74  cent(token, next
22b90 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20  token);..       
22ba0 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 65 6c       advance("el
22bb0 73 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se");..         
22bc0 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e     if (nexttoken
22bd0 2e 69 64 20 3d 3d 3d 20 22 69 66 22 20 7c 7c 20  .id === "if" || 
22be0 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d  nexttoken.id ===
22bf0 20 22 73 77 69 74 63 68 22 29 20 7b 0d 0a 20 20   "switch") {..  
22c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
22c10 61 74 65 6d 65 6e 74 28 74 72 75 65 29 3b 0d 0a  atement(true);..
22c20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
22c30 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
22c40 20 20 20 20 20 20 62 6c 6f 63 6b 28 74 72 75 65        block(true
22c50 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  , true);..      
22c60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
22c70 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   }..        retu
22c80 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d 29  rn this;..    })
22c90 3b 0d 0a 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74  ;....    blockst
22ca0 6d 74 28 22 74 72 79 22 2c 20 66 75 6e 63 74 69  mt("try", functi
22cb0 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  on () {..       
22cc0 20 76 61 72 20 62 2c 20 65 2c 20 73 3b 0d 0a 0d   var b, e, s;...
22cd0 0a 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28 66  .        block(f
22ce0 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
22cf0 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64  if (nexttoken.id
22d00 20 3d 3d 3d 20 22 63 61 74 63 68 22 29 20 7b 0d   === "catch") {.
22d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76  .            adv
22d20 61 6e 63 65 28 22 63 61 74 63 68 22 29 3b 0d 0a  ance("catch");..
22d30 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6e 61              nona
22d40 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20 6e  djacent(token, n
22d50 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20  exttoken);..    
22d60 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28          advance(
22d70 22 28 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  "(");..         
22d80 20 20 20 73 20 3d 20 73 63 6f 70 65 3b 0d 0a 20     s = scope;.. 
22d90 20 20 20 20 20 20 20 20 20 20 20 73 63 6f 70 65             scope
22da0 20 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65   = Object.create
22db0 28 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (s);..          
22dc0 20 20 65 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e    e = nexttoken.
22dd0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
22de0 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65      if (nexttoke
22df0 6e 2e 74 79 70 65 20 21 3d 3d 20 22 28 69 64 65  n.type !== "(ide
22e00 6e 74 69 66 69 65 72 29 22 29 20 7b 0d 0a 20 20  ntifier)") {..  
22e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
22e20 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 20  rning("Expected 
22e30 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e  an identifier an
22e40 64 20 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b  d instead saw '{
22e50 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  a}'.",..        
22e60 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74              next
22e70 74 6f 6b 65 6e 2c 20 65 29 3b 0d 0a 20 20 20 20  token, e);..    
22e80 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
22e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22ea0 20 20 61 64 64 6c 61 62 65 6c 28 65 2c 20 22 65    addlabel(e, "e
22eb0 78 63 65 70 74 69 6f 6e 22 29 3b 0d 0a 20 20 20  xception");..   
22ec0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
22ed0 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28          advance(
22ee0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
22ef0 61 64 76 61 6e 63 65 28 22 29 22 29 3b 0d 0a 20  advance(")");.. 
22f00 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 6b             block
22f10 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
22f20 20 20 20 20 20 20 62 20 3d 20 74 72 75 65 3b 0d        b = true;.
22f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 6f  .            sco
22f40 70 65 20 3d 20 73 3b 0d 0a 20 20 20 20 20 20 20  pe = s;..       
22f50 20 7d 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   }..        if (
22f60 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d  nexttoken.id ===
22f70 20 22 66 69 6e 61 6c 6c 79 22 29 20 7b 0d 0a 20   "finally") {.. 
22f80 20 20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e             advan
22f90 63 65 28 22 66 69 6e 61 6c 6c 79 22 29 3b 0d 0a  ce("finally");..
22fa0 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63              bloc
22fb0 6b 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  k(false);..     
22fc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
22fd0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
22fe0 66 20 28 21 62 29 20 7b 0d 0a 20 20 20 20 20 20  f (!b) {..      
22ff0 20 20 20 20 20 20 65 72 72 6f 72 28 22 45 78 70        error("Exp
23000 65 63 74 65 64 20 27 7b 61 7d 27 20 61 6e 64 20  ected '{a}' and 
23010 69 6e 73 74 65 61 64 20 73 61 77 20 27 7b 62 7d  instead saw '{b}
23020 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  '.",..          
23030 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f            nextto
23040 6b 65 6e 2c 20 22 63 61 74 63 68 22 2c 20 6e 65  ken, "catch", ne
23050 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d  xttoken.value);.
23060 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
23070 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b      return this;
23080 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d 0a 20 20 20  ..    });....   
23090 20 62 6c 6f 63 6b 73 74 6d 74 28 22 77 68 69 6c   blockstmt("whil
230a0 65 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  e", function () 
230b0 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 74  {..        var t
230c0 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20   = nexttoken;.. 
230d0 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 62         funct["(b
230e0 72 65 61 6b 61 67 65 29 22 5d 20 2b 3d 20 31 3b  reakage)"] += 1;
230f0 0d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b  ..        funct[
23100 22 28 6c 6f 6f 70 61 67 65 29 22 5d 20 2b 3d 20  "(loopage)"] += 
23110 31 3b 0d 0a 20 20 20 20 20 20 20 20 61 64 76 61  1;..        adva
23120 6e 63 65 28 22 28 22 29 3b 0d 0a 20 20 20 20 20  nce("(");..     
23130 20 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74     nonadjacent(t
23140 68 69 73 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20  his, t);..      
23150 20 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a 20 20    nospace();..  
23160 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e        expression
23170 28 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  (20);..        i
23180 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20  f (nexttoken.id 
23190 3d 3d 3d 20 22 3d 22 29 20 7b 0d 0a 20 20 20 20  === "=") {..    
231a0 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 70 74          if (!opt
231b0 69 6f 6e 2e 62 6f 73 73 29 0d 0a 20 20 20 20 20  ion.boss)..     
231c0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
231d0 6e 67 28 22 45 78 70 65 63 74 65 64 20 61 20 63  ng("Expected a c
231e0 6f 6e 64 69 74 69 6f 6e 61 6c 20 65 78 70 72 65  onditional expre
231f0 73 73 69 6f 6e 20 61 6e 64 20 69 6e 73 74 65 61  ssion and instea
23200 64 20 73 61 77 20 61 6e 20 61 73 73 69 67 6e 6d  d saw an assignm
23210 65 6e 74 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20  ent.");..       
23220 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 3d 22       advance("="
23230 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23240 65 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b 0d  expression(20);.
23250 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
23260 20 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c      advance(")",
23270 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f   t);..        no
23280 73 70 61 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c  space(prevtoken,
23290 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20   token);..      
232a0 20 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20 74 72    block(true, tr
232b0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 66 75  ue);..        fu
232c0 6e 63 74 5b 22 28 62 72 65 61 6b 61 67 65 29 22  nct["(breakage)"
232d0 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20  ] -= 1;..       
232e0 20 66 75 6e 63 74 5b 22 28 6c 6f 6f 70 61 67 65   funct["(loopage
232f0 29 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20  )"] -= 1;..     
23300 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d     return this;.
23310 0a 20 20 20 20 7d 29 2e 6c 61 62 65 6c 6c 65 64  .    }).labelled
23320 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20   = true;....    
23330 62 6c 6f 63 6b 73 74 6d 74 28 22 77 69 74 68 22  blockstmt("with"
23340 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d  , function () {.
23350 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 20 3d  .        var t =
23360 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20   nexttoken;..   
23370 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 69       if (directi
23380 76 65 5b 22 75 73 65 20 73 74 72 69 63 74 22 5d  ve["use strict"]
23390 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
233a0 20 65 72 72 6f 72 28 22 27 77 69 74 68 27 20 69   error("'with' i
233b0 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e  s not allowed in
233c0 20 73 74 72 69 63 74 20 6d 6f 64 65 2e 22 2c 20   strict mode.", 
233d0 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20  token);..       
233e0 20 7d 20 65 6c 73 65 20 69 66 20 28 21 6f 70 74   } else if (!opt
233f0 69 6f 6e 2e 77 69 74 68 73 74 6d 74 29 20 7b 0d  ion.withstmt) {.
23400 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72  .            war
23410 6e 69 6e 67 28 22 44 6f 6e 27 74 20 75 73 65 20  ning("Don't use 
23420 27 77 69 74 68 27 2e 22 2c 20 74 6f 6b 65 6e 29  'with'.", token)
23430 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
23440 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28          advance(
23450 22 28 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e  "(");..        n
23460 6f 6e 61 64 6a 61 63 65 6e 74 28 74 68 69 73 2c  onadjacent(this,
23470 20 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f   t);..        no
23480 73 70 61 63 65 28 29 3b 0d 0a 20 20 20 20 20 20  space();..      
23490 20 20 65 78 70 72 65 73 73 69 6f 6e 28 30 29 3b    expression(0);
234a0 0d 0a 20 20 20 20 20 20 20 20 61 64 76 61 6e 63  ..        advanc
234b0 65 28 22 29 22 2c 20 74 29 3b 0d 0a 20 20 20 20  e(")", t);..    
234c0 20 20 20 20 6e 6f 73 70 61 63 65 28 70 72 65 76      nospace(prev
234d0 74 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a  token, token);..
234e0 20 20 20 20 20 20 20 20 62 6c 6f 63 6b 28 74 72          block(tr
234f0 75 65 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20  ue, true);....  
23500 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
23510 73 3b 0d 0a 20 20 20 20 7d 29 3b 0d 0a 0d 0a 20  s;..    });.... 
23520 20 20 20 62 6c 6f 63 6b 73 74 6d 74 28 22 73 77     blockstmt("sw
23530 69 74 63 68 22 2c 20 66 75 6e 63 74 69 6f 6e 20  itch", function 
23540 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  () {..        va
23550 72 20 74 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 2c  r t = nexttoken,
23560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 20  ..            g 
23570 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
23580 20 20 66 75 6e 63 74 5b 22 28 62 72 65 61 6b 61    funct["(breaka
23590 67 65 29 22 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20  ge)"] += 1;..   
235a0 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 28 22       advance("("
235b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 6e 61  );..        nona
235c0 64 6a 61 63 65 6e 74 28 74 68 69 73 2c 20 74 29  djacent(this, t)
235d0 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f 73 70 61  ;..        nospa
235e0 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 74  ce();..        t
235f0 68 69 73 2e 63 6f 6e 64 69 74 69 6f 6e 20 3d 20  his.condition = 
23600 65 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b 0d  expression(20);.
23610 0a 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65  .        advance
23620 28 22 29 22 2c 20 74 29 3b 0d 0a 20 20 20 20 20  (")", t);..     
23630 20 20 20 6e 6f 73 70 61 63 65 28 70 72 65 76 74     nospace(prevt
23640 6f 6b 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20  oken, token);.. 
23650 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61 63 65         nonadjace
23660 6e 74 28 74 6f 6b 65 6e 2c 20 6e 65 78 74 74 6f  nt(token, nextto
23670 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 74  ken);..        t
23680 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20   = nexttoken;.. 
23690 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22         advance("
236a0 7b 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 6e 6f  {");..        no
236b0 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c  nadjacent(token,
236c0 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20   nexttoken);..  
236d0 20 20 20 20 20 20 69 6e 64 65 6e 74 20 2b 3d 20        indent += 
236e0 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a  option.indent;..
236f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 61 73          this.cas
23700 65 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20  es = [];..      
23710 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20    for (;;) {..  
23720 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68            switch
23730 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 29 20   (nexttoken.id) 
23740 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
23750 61 73 65 20 22 63 61 73 65 22 3a 0d 0a 20 20 20  ase "case":..   
23760 20 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69               swi
23770 74 63 68 20 28 66 75 6e 63 74 5b 22 28 76 65 72  tch (funct["(ver
23780 62 29 22 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20  b)"]) {..       
23790 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 62           case "b
237a0 72 65 61 6b 22 3a 0d 0a 20 20 20 20 20 20 20 20  reak":..        
237b0 20 20 20 20 20 20 20 20 63 61 73 65 20 22 63 61          case "ca
237c0 73 65 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  se":..          
237d0 20 20 20 20 20 20 63 61 73 65 20 22 63 6f 6e 74        case "cont
237e0 69 6e 75 65 22 3a 0d 0a 20 20 20 20 20 20 20 20  inue":..        
237f0 20 20 20 20 20 20 20 20 63 61 73 65 20 22 72 65          case "re
23800 74 75 72 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20  turn":..        
23810 20 20 20 20 20 20 20 20 63 61 73 65 20 22 73 77          case "sw
23820 69 74 63 68 22 3a 0d 0a 20 20 20 20 20 20 20 20  itch":..        
23830 20 20 20 20 20 20 20 20 63 61 73 65 20 22 74 68          case "th
23840 72 6f 77 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  row":..         
23850 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
23860 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
23870 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20     default:..   
23880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23890 20 2f 2f 20 59 6f 75 20 63 61 6e 20 74 65 6c 6c   // You can tell
238a0 20 4a 53 48 69 6e 74 20 74 68 61 74 20 79 6f 75   JSHint that you
238b0 20 64 6f 6e 27 74 20 75 73 65 20 62 72 65 61 6b   don't use break
238c0 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 6c 79 20 62   intentionally b
238d0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
238e0 20 20 20 20 20 20 20 2f 2f 20 61 64 64 69 6e 67         // adding
238f0 20 61 20 63 6f 6d 6d 65 6e 74 20 2f 2a 20 66 61   a comment /* fa
23900 6c 6c 73 20 74 68 72 6f 75 67 68 20 2a 2f 20 6f  lls through */ o
23910 6e 20 61 20 6c 69 6e 65 20 6a 75 73 74 20 62 65  n a line just be
23920 66 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20  fore..          
23930 20 20 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65            // the
23940 20 6e 65 78 74 20 60 63 61 73 65 60 2e 0d 0a 20   next `case`... 
23950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23960 20 20 20 69 66 20 28 21 66 74 2e 74 65 73 74 28     if (!ft.test(
23970 6c 69 6e 65 73 5b 6e 65 78 74 74 6f 6b 65 6e 2e  lines[nexttoken.
23980 6c 69 6e 65 20 2d 20 32 5d 29 29 20 7b 0d 0a 20  line - 2])) {.. 
23990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239a0 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 0d         warning(.
239b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
239c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 45 78               "Ex
239d0 70 65 63 74 65 64 20 61 20 27 62 72 65 61 6b 27  pected a 'break'
239e0 20 73 74 61 74 65 6d 65 6e 74 20 62 65 66 6f 72   statement befor
239f0 65 20 27 63 61 73 65 27 2e 22 2c 0d 0a 20 20 20  e 'case'.",..   
23a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a10 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 29 3b           token);
23a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23a30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
23a40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
23a50 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
23a60 6e 74 61 74 69 6f 6e 28 2d 6f 70 74 69 6f 6e 2e  ntation(-option.
23a70 69 6e 64 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  indent);..      
23a80 20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63            advanc
23a90 65 28 22 63 61 73 65 22 29 3b 0d 0a 20 20 20 20  e("case");..    
23aa0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
23ab0 2e 63 61 73 65 73 2e 70 75 73 68 28 65 78 70 72  .cases.push(expr
23ac0 65 73 73 69 6f 6e 28 32 30 29 29 3b 0d 0a 20 20  ession(20));..  
23ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 20                g 
23ae0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
23af0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
23b00 28 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  (":");..        
23b10 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28          funct["(
23b20 76 65 72 62 29 22 5d 20 3d 20 22 63 61 73 65 22  verb)"] = "case"
23b30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
23b40 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
23b50 20 20 20 20 20 20 20 63 61 73 65 20 22 64 65 66         case "def
23b60 61 75 6c 74 22 3a 0d 0a 20 20 20 20 20 20 20 20  ault":..        
23b70 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
23b80 66 75 6e 63 74 5b 22 28 76 65 72 62 29 22 5d 29  funct["(verb)"])
23b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23ba0 20 20 20 20 63 61 73 65 20 22 62 72 65 61 6b 22      case "break"
23bb0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
23bc0 20 20 20 63 61 73 65 20 22 63 6f 6e 74 69 6e 75     case "continu
23bd0 65 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e":..           
23be0 20 20 20 20 20 63 61 73 65 20 22 72 65 74 75 72       case "retur
23bf0 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n":..           
23c00 20 20 20 20 20 63 61 73 65 20 22 74 68 72 6f 77       case "throw
23c10 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
23c20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
23c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c40 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20  default:..      
23c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
23c60 20 28 21 66 74 2e 74 65 73 74 28 6c 69 6e 65 73   (!ft.test(lines
23c70 5b 6e 65 78 74 74 6f 6b 65 6e 2e 6c 69 6e 65 20  [nexttoken.line 
23c80 2d 20 32 5d 29 29 20 7b 0d 0a 20 20 20 20 20 20  - 2])) {..      
23c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ca0 20 20 77 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20    warning(..    
23cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cc0 20 20 20 20 20 20 20 20 22 45 78 70 65 63 74 65          "Expecte
23cd0 64 20 61 20 27 62 72 65 61 6b 27 20 73 74 61 74  d a 'break' stat
23ce0 65 6d 65 6e 74 20 62 65 66 6f 72 65 20 27 64 65  ement before 'de
23cf0 66 61 75 6c 74 27 2e 22 2c 0d 0a 20 20 20 20 20  fault'.",..     
23d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d10 20 20 20 20 20 20 20 74 6f 6b 65 6e 29 3b 0d 0a         token);..
23d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
23d40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
23d50 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74            indent
23d60 61 74 69 6f 6e 28 2d 6f 70 74 69 6f 6e 2e 69 6e  ation(-option.in
23d70 64 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  dent);..        
23d80 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28          advance(
23d90 22 64 65 66 61 75 6c 74 22 29 3b 0d 0a 20 20 20  "default");..   
23da0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 20 3d               g =
23db0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
23dc0 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28          advance(
23dd0 22 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ":");..         
23de0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
23df0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
23e00 22 7d 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "}":..          
23e10 20 20 20 20 20 20 69 6e 64 65 6e 74 20 2d 3d 20        indent -= 
23e20 6f 70 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 0d 0a  option.indent;..
23e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e40 69 6e 64 65 6e 74 61 74 69 6f 6e 28 29 3b 0d 0a  indentation();..
23e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e60 61 64 76 61 6e 63 65 28 22 7d 22 2c 20 74 29 3b  advance("}", t);
23e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23e80 20 20 69 66 20 28 74 68 69 73 2e 63 61 73 65 73    if (this.cases
23e90 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 31 20 7c 7c  .length === 1 ||
23ea0 20 74 68 69 73 2e 63 6f 6e 64 69 74 69 6f 6e 2e   this.condition.
23eb0 69 64 20 3d 3d 3d 20 22 74 72 75 65 22 20 7c 7c  id === "true" ||
23ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23ed0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
23ee0 6f 6e 64 69 74 69 6f 6e 2e 69 64 20 3d 3d 3d 20  ondition.id === 
23ef0 22 66 61 6c 73 65 22 29 20 7b 0d 0a 20 20 20 20  "false") {..    
23f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f10 69 66 20 28 21 6f 70 74 69 6f 6e 2e 6f 6e 65 63  if (!option.onec
23f20 61 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ase)..          
23f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
23f40 72 6e 69 6e 67 28 22 54 68 69 73 20 27 73 77 69  rning("This 'swi
23f50 74 63 68 27 20 73 68 6f 75 6c 64 20 62 65 20 61  tch' should be a
23f60 6e 20 27 69 66 27 2e 22 2c 20 74 68 69 73 29 3b  n 'if'.", this);
23f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23f80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
23f90 20 20 20 20 20 66 75 6e 63 74 5b 22 28 62 72 65       funct["(bre
23fa0 61 6b 61 67 65 29 22 5d 20 2d 3d 20 31 3b 0d 0a  akage)"] -= 1;..
23fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fc0 66 75 6e 63 74 5b 22 28 76 65 72 62 29 22 5d 20  funct["(verb)"] 
23fd0 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0d 0a 20 20  = undefined;..  
23fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
23ff0 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  turn;..         
24000 20 20 20 63 61 73 65 20 22 28 65 6e 64 29 22 3a     case "(end)":
24010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24020 20 20 65 72 72 6f 72 28 22 4d 69 73 73 69 6e 67    error("Missing
24030 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74 6f   '{a}'.", nextto
24040 6b 65 6e 2c 20 22 7d 22 29 3b 0d 0a 20 20 20 20  ken, "}");..    
24050 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24060 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rn;..           
24070 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
24080 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 67             if (g
24090 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
240a0 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20           switch 
240b0 28 74 6f 6b 65 6e 2e 69 64 29 20 7b 0d 0a 20 20  (token.id) {..  
240c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240d0 20 20 63 61 73 65 20 22 2c 22 3a 0d 0a 20 20 20    case ",":..   
240e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240f0 20 20 20 20 20 65 72 72 6f 72 28 22 45 61 63 68       error("Each
24100 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 68 61   value should ha
24110 76 65 20 69 74 73 20 6f 77 6e 20 63 61 73 65 20  ve its own case 
24120 6c 61 62 65 6c 2e 22 29 3b 0d 0a 20 20 20 20 20  label.");..     
24130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24140 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20     return;..    
24150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24160 63 61 73 65 20 22 3a 22 3a 0d 0a 20 20 20 20 20  case ":":..     
24170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24180 20 20 20 67 20 3d 20 66 61 6c 73 65 3b 0d 0a 20     g = false;.. 
24190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241a0 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74         statement
241b0 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
241c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
241d0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
241e0 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
241f0 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
24200 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
24210 72 28 22 4d 69 73 73 69 6e 67 20 27 3a 27 20 6f  r("Missing ':' o
24220 6e 20 61 20 63 61 73 65 20 63 6c 61 75 73 65 2e  n a case clause.
24230 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20  ", token);..    
24240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24250 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20      return;..   
24260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24270 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
24280 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
24290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242a0 20 20 69 66 20 28 74 6f 6b 65 6e 2e 69 64 20 3d    if (token.id =
242b0 3d 3d 20 22 3a 22 29 20 7b 0d 0a 20 20 20 20 20  == ":") {..     
242c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242d0 20 20 20 61 64 76 61 6e 63 65 28 22 3a 22 29 3b     advance(":");
242e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
242f0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28            error(
24300 22 28 34 29 55 6e 65 78 70 65 63 74 65 64 20 27  "(4)Unexpected '
24310 7b 61 7d 27 2e 22 2c 20 74 6f 6b 65 6e 2c 20 22  {a}'.", token, "
24320 3a 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  :");..          
24330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
24340 61 74 65 6d 65 6e 74 73 28 29 3b 0d 0a 20 20 20  atements();..   
24350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24360 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
24370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24380 20 20 20 65 72 72 6f 72 28 22 45 78 70 65 63 74     error("Expect
24390 65 64 20 27 7b 61 7d 27 20 61 6e 64 20 69 6e 73  ed '{a}' and ins
243a0 74 65 61 64 20 73 61 77 20 27 7b 62 7d 27 2e 22  tead saw '{b}'."
243b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
243c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
243d0 65 78 74 74 6f 6b 65 6e 2c 20 22 63 61 73 65 22  exttoken, "case"
243e0 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75  , nexttoken.valu
243f0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
24400 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
24410 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  urn;..          
24420 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24430 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24440 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24450 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 29         }..    })
24460 2e 6c 61 62 65 6c 6c 65 64 20 3d 20 74 72 75 65  .labelled = true
24470 3b 0d 0a 0d 0a 20 20 20 20 73 74 6d 74 28 22 64  ;....    stmt("d
24480 65 62 75 67 67 65 72 22 2c 20 66 75 6e 63 74 69  ebugger", functi
24490 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  on () {..       
244a0 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 64 65 62   if (!option.deb
244b0 75 67 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ug) {..         
244c0 20 20 20 77 61 72 6e 69 6e 67 28 22 41 6c 6c 20     warning("All 
244d0 27 64 65 62 75 67 67 65 72 27 20 73 74 61 74 65  'debugger' state
244e0 6d 65 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20  ments should be 
244f0 72 65 6d 6f 76 65 64 2e 22 29 3b 0d 0a 20 20 20  removed.");..   
24500 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24510 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20  return this;..  
24520 20 20 7d 29 2e 65 78 70 73 20 3d 20 74 72 75 65    }).exps = true
24530 3b 0d 0a 0d 0a 20 20 20 20 28 66 75 6e 63 74 69  ;....    (functi
24540 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  on () {..       
24550 20 76 61 72 20 78 20 3d 20 73 74 6d 74 28 22 64   var x = stmt("d
24560 6f 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  o", function () 
24570 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  {..            f
24580 75 6e 63 74 5b 22 28 62 72 65 61 6b 61 67 65 29  unct["(breakage)
24590 22 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20  "] += 1;..      
245a0 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 6c 6f        funct["(lo
245b0 6f 70 61 67 65 29 22 5d 20 2b 3d 20 31 3b 0d 0a  opage)"] += 1;..
245c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
245d0 2e 66 69 72 73 74 20 3d 20 62 6c 6f 63 6b 28 74  .first = block(t
245e0 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
245f0 20 20 20 61 64 76 61 6e 63 65 28 22 77 68 69 6c     advance("whil
24600 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e");..          
24610 20 20 76 61 72 20 74 20 3d 20 6e 65 78 74 74 6f    var t = nextto
24620 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ken;..          
24630 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f    nonadjacent(to
24640 6b 65 6e 2c 20 74 29 3b 0d 0a 20 20 20 20 20 20  ken, t);..      
24650 20 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 28        advance("(
24660 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
24670 20 6e 6f 73 70 61 63 65 28 29 3b 0d 0a 20 20 20   nospace();..   
24680 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73           express
24690 69 6f 6e 28 32 30 29 3b 0d 0a 20 20 20 20 20 20  ion(20);..      
246a0 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f        if (nextto
246b0 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 3d 22 29 20  ken.id === "=") 
246c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
246d0 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 62     if (!option.b
246e0 6f 73 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oss)..          
246f0 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
24700 67 28 22 45 78 70 65 63 74 65 64 20 61 20 63 6f  g("Expected a co
24710 6e 64 69 74 69 6f 6e 61 6c 20 65 78 70 72 65 73  nditional expres
24720 73 69 6f 6e 20 61 6e 64 20 69 6e 73 74 65 61 64  sion and instead
24730 20 73 61 77 20 61 6e 20 61 73 73 69 67 6e 6d 65   saw an assignme
24740 6e 74 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  nt.");..        
24750 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65 28          advance(
24760 22 3d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  "=");..         
24770 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f         expressio
24780 6e 28 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  n(20);..        
24790 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
247a0 20 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c 20     advance(")", 
247b0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
247c0 20 6e 6f 73 70 61 63 65 28 70 72 65 76 74 6f 6b   nospace(prevtok
247d0 65 6e 2c 20 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20  en, token);..   
247e0 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22           funct["
247f0 28 62 72 65 61 6b 61 67 65 29 22 5d 20 2d 3d 20  (breakage)"] -= 
24800 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
24810 66 75 6e 63 74 5b 22 28 6c 6f 6f 70 61 67 65 29  funct["(loopage)
24820 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20 20  "] -= 1;..      
24830 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
24840 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d  s;..        });.
24850 0a 20 20 20 20 20 20 20 20 78 2e 6c 61 62 65 6c  .        x.label
24860 6c 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  led = true;..   
24870 20 20 20 20 20 78 2e 65 78 70 73 20 3d 20 74 72       x.exps = tr
24880 75 65 3b 0d 0a 20 20 20 20 7d 28 29 29 3b 0d 0a  ue;..    }());..
24890 0d 0a 20 20 20 20 62 6c 6f 63 6b 73 74 6d 74 28  ..    blockstmt(
248a0 22 66 6f 72 22 2c 20 66 75 6e 63 74 69 6f 6e 20  "for", function 
248b0 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  () {..        va
248c0 72 20 73 2c 20 74 20 3d 20 6e 65 78 74 74 6f 6b  r s, t = nexttok
248d0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 66 75 6e  en;..        fun
248e0 63 74 5b 22 28 62 72 65 61 6b 61 67 65 29 22 5d  ct["(breakage)"]
248f0 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20   += 1;..        
24900 66 75 6e 63 74 5b 22 28 6c 6f 6f 70 61 67 65 29  funct["(loopage)
24910 22 5d 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20  "] += 1;..      
24920 20 20 61 64 76 61 6e 63 65 28 22 28 22 29 3b 0d    advance("(");.
24930 0a 20 20 20 20 20 20 20 20 6e 6f 6e 61 64 6a 61  .        nonadja
24940 63 65 6e 74 28 74 68 69 73 2c 20 74 29 3b 0d 0a  cent(this, t);..
24950 20 20 20 20 20 20 20 20 6e 6f 73 70 61 63 65 28          nospace(
24960 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  );..        if (
24970 70 65 65 6b 28 6e 65 78 74 74 6f 6b 65 6e 2e 69  peek(nexttoken.i
24980 64 20 3d 3d 3d 20 22 76 61 72 22 20 3f 20 31 20  d === "var" ? 1 
24990 3a 20 30 29 2e 69 64 20 3d 3d 3d 20 22 69 6e 22  : 0).id === "in"
249a0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
249b0 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69   if (nexttoken.i
249c0 64 20 3d 3d 3d 20 22 76 61 72 22 29 20 7b 0d 0a  d === "var") {..
249d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249e0 61 64 76 61 6e 63 65 28 22 76 61 72 22 29 3b 0d  advance("var");.
249f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24a00 20 76 61 72 73 74 61 74 65 6d 65 6e 74 2e 66 75   varstatement.fu
24a10 64 2e 63 61 6c 6c 28 76 61 72 73 74 61 74 65 6d  d.call(varstatem
24a20 65 6e 74 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20  ent, true);..   
24a30 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
24a40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
24a50 20 20 20 73 77 69 74 63 68 20 28 66 75 6e 63 74     switch (funct
24a60 5b 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65  [nexttoken.value
24a70 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ]) {..          
24a80 20 20 20 20 20 20 63 61 73 65 20 22 75 6e 75 73        case "unus
24a90 65 64 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ed":..          
24aa0 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b            funct[
24ab0 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 5d  nexttoken.value]
24ac0 20 3d 20 22 76 61 72 22 3b 0d 0a 20 20 20 20 20   = "var";..     
24ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
24ae0 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
24af0 20 20 20 20 20 20 20 63 61 73 65 20 22 76 61 72         case "var
24b00 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
24b10 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
24b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b30 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20  default:..      
24b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
24b50 72 6e 69 6e 67 28 22 42 61 64 20 66 6f 72 20 69  rning("Bad for i
24b60 6e 20 76 61 72 69 61 62 6c 65 20 27 7b 61 7d 27  n variable '{a}'
24b70 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
24b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b90 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 6e 65 78 74   nexttoken, next
24ba0 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a 20  token.value);.. 
24bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
24bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24bd0 20 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20    advance();..  
24be0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24bf0 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
24c00 28 22 69 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20  ("in");..       
24c10 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 28       expression(
24c20 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  20);..          
24c30 20 20 61 64 76 61 6e 63 65 28 22 29 22 2c 20 74    advance(")", t
24c40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
24c50 73 20 3d 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20  s = block(true, 
24c60 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
24c70 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e 66      if (option.f
24c80 6f 72 69 6e 20 26 26 20 73 20 26 26 20 28 73 2e  orin && s && (s.
24c90 6c 65 6e 67 74 68 20 3e 20 31 20 7c 7c 20 74 79  length > 1 || ty
24ca0 70 65 6f 66 20 73 5b 30 5d 20 21 3d 3d 20 22 6f  peof s[0] !== "o
24cb0 62 6a 65 63 74 22 20 7c 7c 0d 0a 20 20 20 20 20  bject" ||..     
24cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
24cd0 5b 30 5d 2e 76 61 6c 75 65 20 21 3d 3d 20 22 69  [0].value !== "i
24ce0 66 22 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  f")) {..        
24cf0 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28          warning(
24d00 22 54 68 65 20 62 6f 64 79 20 6f 66 20 61 20 66  "The body of a f
24d10 6f 72 20 69 6e 20 73 68 6f 75 6c 64 20 62 65 20  or in should be 
24d20 77 72 61 70 70 65 64 20 69 6e 20 61 6e 20 69 66  wrapped in an if
24d30 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 66 69   statement to fi
24d40 6c 74 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20  lter " +..      
24d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d60 20 20 22 75 6e 77 61 6e 74 65 64 20 70 72 6f 70    "unwanted prop
24d70 65 72 74 69 65 73 20 66 72 6f 6d 20 74 68 65 20  erties from the 
24d80 70 72 6f 74 6f 74 79 70 65 2e 22 2c 20 74 68 69  prototype.", thi
24d90 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s);..           
24da0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
24db0 66 75 6e 63 74 5b 22 28 62 72 65 61 6b 61 67 65  funct["(breakage
24dc0 29 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20 20 20 20  )"] -= 1;..     
24dd0 20 20 20 20 20 20 20 66 75 6e 63 74 5b 22 28 6c         funct["(l
24de0 6f 6f 70 61 67 65 29 22 5d 20 2d 3d 20 31 3b 0d  oopage)"] -= 1;.
24df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
24e00 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 20  urn this;..     
24e10 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
24e20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78           if (nex
24e30 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 3b  ttoken.id !== ";
24e40 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
24e50 20 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f        if (nextto
24e60 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 76 61 72 22  ken.id === "var"
24e70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
24e80 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
24e90 28 22 76 61 72 22 29 3b 0d 0a 20 20 20 20 20 20  ("var");..      
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
24eb0 72 73 74 61 74 65 6d 65 6e 74 2e 66 75 64 2e 63  rstatement.fud.c
24ec0 61 6c 6c 28 76 61 72 73 74 61 74 65 6d 65 6e 74  all(varstatement
24ed0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
24ee0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
24ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f00 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20    for (;;) {..  
24f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e        expression
24f30 28 30 2c 20 22 66 6f 72 22 29 3b 0d 0a 20 20 20  (0, "for");..   
24f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f50 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b       if (nexttok
24f60 65 6e 2e 69 64 20 21 3d 3d 20 22 2c 22 29 20 7b  en.id !== ",") {
24f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
24f90 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
24fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
24fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24fc0 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 28 29           comma()
24fd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
24fe0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24ff0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25000 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
25010 20 20 20 20 20 20 20 20 6e 6f 6c 69 6e 65 62 72          nolinebr
25020 65 61 6b 28 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20  eak(token);..   
25030 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
25040 28 22 3b 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  (";");..        
25050 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65      if (nexttoke
25060 6e 2e 69 64 20 21 3d 3d 20 22 3b 22 29 20 7b 0d  n.id !== ";") {.
25070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25080 20 65 78 70 72 65 73 73 69 6f 6e 28 32 30 29 3b   expression(20);
25090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
250a0 20 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e    if (nexttoken.
250b0 69 64 20 3d 3d 3d 20 22 3d 22 29 20 7b 0d 0a 20  id === "=") {.. 
250c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250d0 20 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 62     if (!option.b
250e0 6f 73 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oss)..          
250f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
25100 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64 20  rning("Expected 
25110 61 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 65 78  a conditional ex
25120 70 72 65 73 73 69 6f 6e 20 61 6e 64 20 69 6e 73  pression and ins
25130 74 65 61 64 20 73 61 77 20 61 6e 20 61 73 73 69  tead saw an assi
25140 67 6e 6d 65 6e 74 2e 22 29 3b 0d 0a 20 20 20 20  gnment.");..    
25150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25160 61 64 76 61 6e 63 65 28 22 3d 22 29 3b 0d 0a 20  advance("=");.. 
25170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25180 20 20 20 65 78 70 72 65 73 73 69 6f 6e 28 32 30     expression(20
25190 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
251a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
251b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
251c0 20 20 6e 6f 6c 69 6e 65 62 72 65 61 6b 28 74 6f    nolinebreak(to
251d0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ken);..         
251e0 20 20 20 61 64 76 61 6e 63 65 28 22 3b 22 29 3b     advance(";");
251f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
25200 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d   (nexttoken.id =
25210 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20  == ";") {..     
25220 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
25230 28 22 45 78 70 65 63 74 65 64 20 27 7b 61 7d 27  ("Expected '{a}'
25240 20 61 6e 64 20 69 6e 73 74 65 61 64 20 73 61 77   and instead saw
25250 20 27 7b 62 7d 27 2e 22 2c 0d 0a 20 20 20 20 20   '{b}'.",..     
25260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25270 20 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 22 29     nexttoken, ")
25280 22 2c 20 22 3b 22 29 3b 0d 0a 20 20 20 20 20 20  ", ";");..      
25290 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
252a0 20 20 20 20 20 69 66 20 28 6e 65 78 74 74 6f 6b       if (nexttok
252b0 65 6e 2e 69 64 20 21 3d 3d 20 22 29 22 29 20 7b  en.id !== ")") {
252c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
252d0 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0d 0a 20 20    for (;;) {..  
252e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252f0 20 20 65 78 70 72 65 73 73 69 6f 6e 28 30 2c 20    expression(0, 
25300 22 66 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20  "for");..       
25310 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25320 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d  (nexttoken.id !=
25330 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20  = ",") {..      
25340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25350 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
25370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25380 20 20 20 20 20 63 6f 6d 6d 61 28 29 3b 0d 0a 20       comma();.. 
25390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
253a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
253b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76  .            adv
253c0 61 6e 63 65 28 22 29 22 2c 20 74 29 3b 0d 0a 20  ance(")", t);.. 
253d0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 73 70 61             nospa
253e0 63 65 28 70 72 65 76 74 6f 6b 65 6e 2c 20 74 6f  ce(prevtoken, to
253f0 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ken);..         
25400 20 20 20 62 6c 6f 63 6b 28 74 72 75 65 2c 20 74     block(true, t
25410 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
25420 20 20 20 66 75 6e 63 74 5b 22 28 62 72 65 61 6b     funct["(break
25430 61 67 65 29 22 5d 20 2d 3d 20 31 3b 0d 0a 20 20  age)"] -= 1;..  
25440 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 5b            funct[
25450 22 28 6c 6f 6f 70 61 67 65 29 22 5d 20 2d 3d 20  "(loopage)"] -= 
25460 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
25470 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20  return this;..  
25480 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 29 2e        }..    }).
25490 6c 61 62 65 6c 6c 65 64 20 3d 20 74 72 75 65 3b  labelled = true;
254a0 0d 0a 0d 0a 0d 0a 20 20 20 20 73 74 6d 74 28 22  ......    stmt("
254b0 62 72 65 61 6b 22 2c 20 66 75 6e 63 74 69 6f 6e  break", function
254c0 20 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76   () {..        v
254d0 61 72 20 76 20 3d 20 6e 65 78 74 74 6f 6b 65 6e  ar v = nexttoken
254e0 2e 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  .value;....     
254f0 20 20 20 69 66 20 28 66 75 6e 63 74 5b 22 28 62     if (funct["(b
25500 72 65 61 6b 61 67 65 29 22 5d 20 3d 3d 3d 20 30  reakage)"] === 0
25510 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77  )..            w
25520 61 72 6e 69 6e 67 28 22 28 35 29 55 6e 65 78 70  arning("(5)Unexp
25530 65 63 74 65 64 20 27 7b 61 7d 27 2e 22 2c 20 6e  ected '{a}'.", n
25540 65 78 74 74 6f 6b 65 6e 2c 20 74 68 69 73 2e 76  exttoken, this.v
25550 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
25560 20 20 69 66 20 28 21 6f 70 74 69 6f 6e 2e 61 73    if (!option.as
25570 69 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  i)..            
25580 6e 6f 6c 69 6e 65 62 72 65 61 6b 28 74 68 69 73  nolinebreak(this
25590 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  );....        if
255a0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21   (nexttoken.id !
255b0 3d 3d 20 22 3b 22 29 20 7b 0d 0a 20 20 20 20 20  == ";") {..     
255c0 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e         if (token
255d0 2e 6c 69 6e 65 20 3d 3d 3d 20 6e 65 78 74 74 6f  .line === nextto
255e0 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20 20  ken.line) {..   
255f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25600 28 66 75 6e 63 74 5b 76 5d 20 21 3d 3d 20 22 6c  (funct[v] !== "l
25610 61 62 65 6c 22 29 20 7b 0d 0a 20 20 20 20 20 20  abel") {..      
25620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
25630 72 6e 69 6e 67 28 22 27 7b 61 7d 27 20 69 73 20  rning("'{a}' is 
25640 6e 6f 74 20 61 20 73 74 61 74 65 6d 65 6e 74 20  not a statement 
25650 6c 61 62 65 6c 2e 22 2c 20 6e 65 78 74 74 6f 6b  label.", nexttok
25660 65 6e 2c 20 76 29 3b 0d 0a 20 20 20 20 20 20 20  en, v);..       
25670 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
25680 69 66 20 28 73 63 6f 70 65 5b 76 5d 20 21 3d 3d  if (scope[v] !==
25690 20 66 75 6e 63 74 29 20 7b 0d 0a 20 20 20 20 20   funct) {..     
256a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
256b0 61 72 6e 69 6e 67 28 22 27 7b 61 7d 27 20 69 73  arning("'{a}' is
256c0 20 6f 75 74 20 6f 66 20 73 63 6f 70 65 2e 22 2c   out of scope.",
256d0 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 76 29 3b 0d   nexttoken, v);.
256e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
256f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
25700 20 20 20 20 74 68 69 73 2e 66 69 72 73 74 20 3d      this.first =
25710 20 6e 65 78 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20   nexttoken;..   
25720 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76               adv
25730 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  ance();..       
25740 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25750 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 61 63 68  }..        reach
25760 61 62 6c 65 28 22 62 72 65 61 6b 22 29 3b 0d 0a  able("break");..
25770 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
25780 68 69 73 3b 0d 0a 20 20 20 20 7d 29 2e 65 78 70  his;..    }).exp
25790 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 0d 0a 20  s = true;...... 
257a0 20 20 20 73 74 6d 74 28 22 63 6f 6e 74 69 6e 75     stmt("continu
257b0 65 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  e", function () 
257c0 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 76  {..        var v
257d0 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c   = nexttoken.val
257e0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
257f0 66 20 28 66 75 6e 63 74 5b 22 28 62 72 65 61 6b  f (funct["(break
25800 61 67 65 29 22 5d 20 3d 3d 3d 20 30 29 0d 0a 20  age)"] === 0).. 
25810 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
25820 6e 67 28 22 28 36 29 55 6e 65 78 70 65 63 74 65  ng("(6)Unexpecte
25830 64 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74  d '{a}'.", nextt
25840 6f 6b 65 6e 2c 20 74 68 69 73 2e 76 61 6c 75 65  oken, this.value
25850 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  );....        if
25860 20 28 21 6f 70 74 69 6f 6e 2e 61 73 69 29 0d 0a   (!option.asi)..
25870 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6c 69              noli
25880 6e 65 62 72 65 61 6b 28 74 68 69 73 29 3b 0d 0a  nebreak(this);..
25890 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65  ..        if (ne
258a0 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22  xttoken.id !== "
258b0 3b 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ;") {..         
258c0 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e 6c 69 6e     if (token.lin
258d0 65 20 3d 3d 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e  e === nexttoken.
258e0 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  line) {..       
258f0 20 20 20 20 20 20 20 20 20 69 66 20 28 66 75 6e           if (fun
25900 63 74 5b 76 5d 20 21 3d 3d 20 22 6c 61 62 65 6c  ct[v] !== "label
25910 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
25920 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
25930 67 28 22 27 7b 61 7d 27 20 69 73 20 6e 6f 74 20  g("'{a}' is not 
25940 61 20 73 74 61 74 65 6d 65 6e 74 20 6c 61 62 65  a statement labe
25950 6c 2e 22 2c 20 6e 65 78 74 74 6f 6b 65 6e 2c 20  l.", nexttoken, 
25960 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  v);..           
25970 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
25980 73 63 6f 70 65 5b 76 5d 20 21 3d 3d 20 66 75 6e  scope[v] !== fun
25990 63 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ct) {..         
259a0 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
259b0 6e 67 28 22 27 7b 61 7d 27 20 69 73 20 6f 75 74  ng("'{a}' is out
259c0 20 6f 66 20 73 63 6f 70 65 2e 22 2c 20 6e 65 78   of scope.", nex
259d0 74 74 6f 6b 65 6e 2c 20 76 29 3b 0d 0a 20 20 20  ttoken, v);..   
259e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
259f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a00 74 68 69 73 2e 66 69 72 73 74 20 3d 20 6e 65 78  this.first = nex
25a10 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20  ttoken;..       
25a20 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
25a30 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
25a40 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c   }..        } el
25a50 73 65 20 69 66 20 28 21 66 75 6e 63 74 5b 22 28  se if (!funct["(
25a60 6c 6f 6f 70 61 67 65 29 22 5d 29 20 7b 0d 0a 20  loopage)"]) {.. 
25a70 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
25a80 6e 67 28 22 28 37 29 55 6e 65 78 70 65 63 74 65  ng("(7)Unexpecte
25a90 64 20 27 7b 61 7d 27 2e 22 2c 20 6e 65 78 74 74  d '{a}'.", nextt
25aa0 6f 6b 65 6e 2c 20 74 68 69 73 2e 76 61 6c 75 65  oken, this.value
25ab0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
25ac0 20 20 20 20 20 20 20 72 65 61 63 68 61 62 6c 65         reachable
25ad0 28 22 63 6f 6e 74 69 6e 75 65 22 29 3b 0d 0a 20  ("continue");.. 
25ae0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
25af0 69 73 3b 0d 0a 20 20 20 20 7d 29 2e 65 78 70 73  is;..    }).exps
25b00 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 0d 0a 20 20   = true;......  
25b10 20 20 73 74 6d 74 28 22 72 65 74 75 72 6e 22 2c    stmt("return",
25b20 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a   function () {..
25b30 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
25b40 2e 6c 69 6e 65 20 3d 3d 3d 20 6e 65 78 74 74 6f  .line === nextto
25b50 6b 65 6e 2e 6c 69 6e 65 29 20 7b 0d 0a 20 20 20  ken.line) {..   
25b60 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78           if (nex
25b70 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 28  ttoken.id === "(
25b80 72 65 67 65 78 70 29 22 29 0d 0a 20 20 20 20 20  regexp)")..     
25b90 20 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69             warni
25ba0 6e 67 28 22 57 72 61 70 20 74 68 65 20 2f 72 65  ng("Wrap the /re
25bb0 67 65 78 70 2f 20 6c 69 74 65 72 61 6c 20 69 6e  gexp/ literal in
25bc0 20 70 61 72 65 6e 73 20 74 6f 20 64 69 73 61 6d   parens to disam
25bd0 62 69 67 75 61 74 65 20 74 68 65 20 73 6c 61 73  biguate the slas
25be0 68 20 6f 70 65 72 61 74 6f 72 2e 22 29 3b 0d 0a  h operator.");..
25bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
25c00 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21   (nexttoken.id !
25c10 3d 3d 20 22 3b 22 20 26 26 20 21 6e 65 78 74 74  == ";" && !nextt
25c20 6f 6b 65 6e 2e 72 65 61 63 68 29 20 7b 0d 0a 20  oken.reach) {.. 
25c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
25c40 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e  onadjacent(token
25c50 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20  , nexttoken);.. 
25c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25c70 66 20 28 70 65 65 6b 28 29 2e 76 61 6c 75 65 20  f (peek().value 
25c80 3d 3d 3d 20 22 3d 22 20 26 26 20 21 6f 70 74 69  === "=" && !opti
25c90 6f 6e 2e 62 6f 73 73 29 20 7b 0d 0a 20 20 20 20  on.boss) {..    
25ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cb0 77 61 72 6e 69 6e 67 41 74 28 22 44 69 64 20 79  warningAt("Did y
25cc0 6f 75 20 6d 65 61 6e 20 74 6f 20 72 65 74 75 72  ou mean to retur
25cd0 6e 20 61 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20  n a conditional 
25ce0 69 6e 73 74 65 61 64 20 6f 66 20 61 6e 20 61 73  instead of an as
25cf0 73 69 67 6e 6d 65 6e 74 3f 22 2c 0d 0a 20 20 20  signment?",..   
25d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d10 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e             token
25d20 2e 6c 69 6e 65 2c 20 74 6f 6b 65 6e 2e 63 68 61  .line, token.cha
25d30 72 61 63 74 65 72 20 2b 20 31 29 3b 0d 0a 20 20  racter + 1);..  
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
25d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25d60 20 74 68 69 73 2e 66 69 72 73 74 20 3d 20 65 78   this.first = ex
25d70 70 72 65 73 73 69 6f 6e 28 30 29 3b 0d 0a 20 20  pression(0);..  
25d80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25d90 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
25da0 21 6f 70 74 69 6f 6e 2e 61 73 69 29 20 7b 0d 0a  !option.asi) {..
25db0 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 6c 69              noli
25dc0 6e 65 62 72 65 61 6b 28 74 68 69 73 29 3b 20 2f  nebreak(this); /
25dd0 2f 20 61 6c 77 61 79 73 20 77 61 72 6e 20 28 4c  / always warn (L
25de0 69 6e 65 20 62 72 65 61 6b 69 6e 67 20 65 72 72  ine breaking err
25df0 6f 72 29 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  or)..        }..
25e00 20 20 20 20 20 20 20 20 72 65 61 63 68 61 62 6c          reachabl
25e10 65 28 22 72 65 74 75 72 6e 22 29 3b 0d 0a 20 20  e("return");..  
25e20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
25e30 73 3b 0d 0a 20 20 20 20 7d 29 2e 65 78 70 73 20  s;..    }).exps 
25e40 3d 20 74 72 75 65 3b 0d 0a 0d 0a 0d 0a 20 20 20  = true;......   
25e50 20 73 74 6d 74 28 22 74 68 72 6f 77 22 2c 20 66   stmt("throw", f
25e60 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20  unction () {..  
25e70 20 20 20 20 20 20 6e 6f 6c 69 6e 65 62 72 65 61        nolinebrea
25e80 6b 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  k(this);..      
25e90 20 20 6e 6f 6e 61 64 6a 61 63 65 6e 74 28 74 6f    nonadjacent(to
25ea0 6b 65 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 29 3b  ken, nexttoken);
25eb0 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 66  ..        this.f
25ec0 69 72 73 74 20 3d 20 65 78 70 72 65 73 73 69 6f  irst = expressio
25ed0 6e 28 32 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  n(20);..        
25ee0 72 65 61 63 68 61 62 6c 65 28 22 74 68 72 6f 77  reachable("throw
25ef0 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ");..        ret
25f00 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 7d  urn this;..    }
25f10 29 2e 65 78 70 73 20 3d 20 74 72 75 65 3b 0d 0a  ).exps = true;..
25f20 0d 0a 2f 2f 20 20 53 75 70 65 72 66 6c 75 6f 75  ..//  Superfluou
25f30 73 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73  s reserved words
25f40 0d 0a 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28  ....    reserve(
25f50 22 63 6c 61 73 73 22 29 3b 0d 0a 20 20 20 20 72  "class");..    r
25f60 65 73 65 72 76 65 28 22 63 6f 6e 73 74 22 29 3b  eserve("const");
25f70 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 65  ..    reserve("e
25f80 6e 75 6d 22 29 3b 0d 0a 20 20 20 20 72 65 73 65  num");..    rese
25f90 72 76 65 28 22 65 78 70 6f 72 74 22 29 3b 0d 0a  rve("export");..
25fa0 20 20 20 20 72 65 73 65 72 76 65 28 22 65 78 74      reserve("ext
25fb0 65 6e 64 73 22 29 3b 0d 0a 20 20 20 20 72 65 73  ends");..    res
25fc0 65 72 76 65 28 22 69 6d 70 6f 72 74 22 29 3b 0d  erve("import");.
25fd0 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 73 75  .    reserve("su
25fe0 70 65 72 22 29 3b 0d 0a 0d 0a 20 20 20 20 72 65  per");....    re
25ff0 73 65 72 76 65 28 22 6c 65 74 22 29 3b 0d 0a 20  serve("let");.. 
26000 20 20 20 72 65 73 65 72 76 65 28 22 79 69 65 6c     reserve("yiel
26010 64 22 29 3b 0d 0a 20 20 20 20 72 65 73 65 72 76  d");..    reserv
26020 65 28 22 69 6d 70 6c 65 6d 65 6e 74 73 22 29 3b  e("implements");
26030 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 69  ..    reserve("i
26040 6e 74 65 72 66 61 63 65 22 29 3b 0d 0a 20 20 20  nterface");..   
26050 20 72 65 73 65 72 76 65 28 22 70 61 63 6b 61 67   reserve("packag
26060 65 22 29 3b 0d 0a 20 20 20 20 72 65 73 65 72 76  e");..    reserv
26070 65 28 22 70 72 69 76 61 74 65 22 29 3b 0d 0a 20  e("private");.. 
26080 20 20 20 72 65 73 65 72 76 65 28 22 70 72 6f 74     reserve("prot
26090 65 63 74 65 64 22 29 3b 0d 0a 20 20 20 20 72 65  ected");..    re
260a0 73 65 72 76 65 28 22 70 75 62 6c 69 63 22 29 3b  serve("public");
260b0 0d 0a 20 20 20 20 72 65 73 65 72 76 65 28 22 73  ..    reserve("s
260c0 74 61 74 69 63 22 29 3b 0d 0a 0d 0a 0d 0a 2f 2f  tatic");......//
260d0 20 50 61 72 73 65 20 4a 53 4f 4e 0d 0a 0d 0a 20   Parse JSON.... 
260e0 20 20 20 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e     function json
260f0 56 61 6c 75 65 28 29 20 7b 0d 0a 0d 0a 20 20 20  Value() {....   
26100 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6a 73       function js
26110 6f 6e 4f 62 6a 65 63 74 28 29 20 7b 0d 0a 20 20  onObject() {..  
26120 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6f 20            var o 
26130 3d 20 7b 7d 2c 20 74 20 3d 20 6e 65 78 74 74 6f  = {}, t = nextto
26140 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ken;..          
26150 20 20 61 64 76 61 6e 63 65 28 22 7b 22 29 3b 0d    advance("{");.
26160 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
26170 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 21 3d  (nexttoken.id !=
26180 3d 20 22 7d 22 29 20 7b 0d 0a 20 20 20 20 20 20  = "}") {..      
26190 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b            for (;
261a0 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ;) {..          
261b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 65            if (ne
261c0 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22  xttoken.id === "
261d0 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20 20 20 20  (end)") {..     
261e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261f0 20 20 20 65 72 72 6f 72 28 22 4d 69 73 73 69 6e     error("Missin
26200 67 20 27 7d 27 20 74 6f 20 6d 61 74 63 68 20 27  g '}' to match '
26210 7b 27 20 66 72 6f 6d 20 6c 69 6e 65 20 7b 61 7d  {' from line {a}
26220 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
26230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26240 20 20 20 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20       nexttoken, 
26250 74 2e 6c 69 6e 65 29 3b 0d 0a 20 20 20 20 20 20  t.line);..      
26260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
26270 65 6c 73 65 20 69 66 20 28 6e 65 78 74 74 6f 6b  else if (nexttok
26280 65 6e 2e 69 64 20 3d 3d 3d 20 22 7d 22 29 20 7b  en.id === "}") {
26290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
262a0 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 69 6e            warnin
262b0 67 28 22 55 6e 65 78 70 65 63 74 65 64 20 63 6f  g("Unexpected co
262c0 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e 29 3b 0d 0a  mma.", token);..
262d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262e0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
262f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26300 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6e      } else if (n
26310 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20  exttoken.id === 
26320 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ",") {..        
26330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26340 65 72 72 6f 72 28 22 55 6e 65 78 70 65 63 74 65  error("Unexpecte
26350 64 20 63 6f 6d 6d 61 2e 22 2c 20 6e 65 78 74 74  d comma.", nextt
26360 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  oken);..        
26370 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
26380 73 65 20 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e  se if (nexttoken
26390 2e 69 64 20 21 3d 3d 20 22 28 73 74 72 69 6e 67  .id !== "(string
263a0 29 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  )") {..         
263b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
263c0 61 72 6e 69 6e 67 28 22 45 78 70 65 63 74 65 64  arning("Expected
263d0 20 61 20 73 74 72 69 6e 67 20 61 6e 64 20 69 6e   a string and in
263e0 73 74 65 61 64 20 73 61 77 20 7b 61 7d 2e 22 2c  stead saw {a}.",
263f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26410 20 20 6e 65 78 74 74 6f 6b 65 6e 2c 20 6e 65 78    nexttoken, nex
26420 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0d 0a  ttoken.value);..
26430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26440 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
26450 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
26460 5b 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65  [nexttoken.value
26470 5d 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d 0a 20  ] === true) {.. 
26480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26490 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22         warning("
264a0 44 75 70 6c 69 63 61 74 65 20 6b 65 79 20 27 7b  Duplicate key '{
264b0 61 7d 27 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  a}'.",..        
264c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264d0 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65          nexttoke
264e0 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c  n, nexttoken.val
264f0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
26500 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
26510 20 69 66 20 28 28 6e 65 78 74 74 6f 6b 65 6e 2e   if ((nexttoken.
26520 76 61 6c 75 65 20 3d 3d 3d 20 22 5f 5f 70 72 6f  value === "__pro
26530 74 6f 5f 5f 22 20 26 26 0d 0a 20 20 20 20 20 20  to__" &&..      
26540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26550 20 20 21 6f 70 74 69 6f 6e 2e 70 72 6f 74 6f 29    !option.proto)
26560 20 7c 7c 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 76   || (nexttoken.v
26570 61 6c 75 65 20 3d 3d 3d 20 22 5f 5f 69 74 65 72  alue === "__iter
26580 61 74 6f 72 5f 5f 22 20 26 26 0d 0a 20 20 20 20  ator__" &&..    
26590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265a0 20 20 20 20 21 6f 70 74 69 6f 6e 2e 69 74 65 72      !option.iter
265b0 61 74 6f 72 29 29 20 7b 0d 0a 20 20 20 20 20 20  ator)) {..      
265c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265d0 20 20 77 61 72 6e 69 6e 67 28 22 54 68 65 20 27    warning("The '
265e0 7b 61 7d 27 20 6b 65 79 20 6d 61 79 20 70 72 6f  {a}' key may pro
265f0 64 75 63 65 20 75 6e 65 78 70 65 63 74 65 64 20  duce unexpected 
26600 72 65 73 75 6c 74 73 2e 22 2c 0d 0a 20 20 20 20  results.",..    
26610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26620 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65          nexttoke
26630 6e 2c 20 6e 65 78 74 74 6f 6b 65 6e 2e 76 61 6c  n, nexttoken.val
26640 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
26650 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
26660 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26670 20 20 20 20 20 20 20 20 20 20 20 20 6f 5b 6e 65              o[ne
26680 78 74 74 6f 6b 65 6e 2e 76 61 6c 75 65 5d 20 3d  xttoken.value] =
26690 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
266a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
266b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266c0 20 20 20 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20     advance();.. 
266d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266e0 20 20 20 61 64 76 61 6e 63 65 28 22 3a 22 29 3b     advance(":");
266f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26700 20 20 20 20 20 20 6a 73 6f 6e 56 61 6c 75 65 28        jsonValue(
26710 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26720 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74          if (next
26730 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 2c 22  token.id !== ","
26740 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
26750 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
26760 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ak;..           
26770 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
26780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26790 61 64 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a 20  advance(",");.. 
267a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
267b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
267c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76  .            adv
267d0 61 6e 63 65 28 22 7d 22 29 3b 0d 0a 20 20 20 20  ance("}");..    
267e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
267f0 20 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 41 72   function jsonAr
26800 72 61 79 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ray() {..       
26810 20 20 20 20 20 76 61 72 20 74 20 3d 20 6e 65 78       var t = nex
26820 74 74 6f 6b 65 6e 3b 0d 0a 20 20 20 20 20 20 20  ttoken;..       
26830 20 20 20 20 20 61 64 76 61 6e 63 65 28 22 5b 22       advance("["
26840 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26850 69 66 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64  if (nexttoken.id
26860 20 21 3d 3d 20 22 5d 22 29 20 7b 0d 0a 20 20 20   !== "]") {..   
26870 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
26880 20 28 3b 3b 29 20 7b 0d 0a 20 20 20 20 20 20 20   (;;) {..       
26890 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
268a0 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d 3d  (nexttoken.id ==
268b0 3d 20 22 28 65 6e 64 29 22 29 20 7b 0d 0a 20 20  = "(end)") {..  
268c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268d0 20 20 20 20 20 20 65 72 72 6f 72 28 22 4d 69 73        error("Mis
268e0 73 69 6e 67 20 27 5d 27 20 74 6f 20 6d 61 74 63  sing ']' to matc
268f0 68 20 27 5b 27 20 66 72 6f 6d 20 6c 69 6e 65 20  h '[' from line 
26900 7b 61 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  {a}.",..        
26910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26920 20 20 20 20 20 20 20 20 6e 65 78 74 74 6f 6b 65          nexttoke
26930 6e 2c 20 74 2e 6c 69 6e 65 29 3b 0d 0a 20 20 20  n, t.line);..   
26940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26950 20 7d 20 65 6c 73 65 20 69 66 20 28 6e 65 78 74   } else if (next
26960 74 6f 6b 65 6e 2e 69 64 20 3d 3d 3d 20 22 5d 22  token.id === "]"
26970 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
26980 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
26990 6e 69 6e 67 28 22 55 6e 65 78 70 65 63 74 65 64  ning("Unexpected
269a0 20 63 6f 6d 6d 61 2e 22 2c 20 74 6f 6b 65 6e 29   comma.", token)
269b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
269c0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
269d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
269e0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
269f0 20 28 6e 65 78 74 74 6f 6b 65 6e 2e 69 64 20 3d   (nexttoken.id =
26a00 3d 3d 20 22 2c 22 29 20 7b 0d 0a 20 20 20 20 20  == ",") {..     
26a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a20 20 20 20 65 72 72 6f 72 28 22 55 6e 65 78 70 65     error("Unexpe
26a30 63 74 65 64 20 63 6f 6d 6d 61 2e 22 2c 20 6e 65  cted comma.", ne
26a40 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20  xttoken);..     
26a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
26a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26a70 20 20 20 20 20 20 6a 73 6f 6e 56 61 6c 75 65 28        jsonValue(
26a80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26a90 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 78 74          if (next
26aa0 74 6f 6b 65 6e 2e 69 64 20 21 3d 3d 20 22 2c 22  token.id !== ","
26ab0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
26ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
26ad0 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ak;..           
26ae0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b00 61 64 76 61 6e 63 65 28 22 2c 22 29 3b 0d 0a 20  advance(",");.. 
26b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
26b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 76  .            adv
26b40 61 6e 63 65 28 22 5d 22 29 3b 0d 0a 20 20 20 20  ance("]");..    
26b50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26b60 20 73 77 69 74 63 68 20 28 6e 65 78 74 74 6f 6b   switch (nexttok
26b70 65 6e 2e 69 64 29 20 7b 0d 0a 20 20 20 20 20 20  en.id) {..      
26b80 20 20 63 61 73 65 20 22 7b 22 3a 0d 0a 20 20 20    case "{":..   
26b90 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 4f 62 6a           jsonObj
26ba0 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ect();..        
26bb0 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
26bc0 20 20 20 20 63 61 73 65 20 22 5b 22 3a 0d 0a 20      case "[":.. 
26bd0 20 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 41             jsonA
26be0 72 72 61 79 28 29 3b 0d 0a 20 20 20 20 20 20 20  rray();..       
26bf0 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
26c00 20 20 20 20 20 63 61 73 65 20 22 74 72 75 65 22       case "true"
26c10 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20  :..        case 
26c20 22 66 61 6c 73 65 22 3a 0d 0a 20 20 20 20 20 20  "false":..      
26c30 20 20 63 61 73 65 20 22 6e 75 6c 6c 22 3a 0d 0a    case "null":..
26c40 20 20 20 20 20 20 20 20 63 61 73 65 20 22 28 6e          case "(n
26c50 75 6d 62 65 72 29 22 3a 0d 0a 20 20 20 20 20 20  umber)":..      
26c60 20 20 63 61 73 65 20 22 28 73 74 72 69 6e 67 29    case "(string)
26c70 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
26c80 61 64 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20  advance();..    
26c90 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
26ca0 20 20 20 20 20 20 20 20 63 61 73 65 20 22 2d 22          case "-"
26cb0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61  :..            a
26cc0 64 76 61 6e 63 65 28 22 2d 22 29 3b 0d 0a 20 20  dvance("-");..  
26cd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 6f            if (to
26ce0 6b 65 6e 2e 63 68 61 72 61 63 74 65 72 20 21 3d  ken.character !=
26cf0 3d 20 6e 65 78 74 74 6f 6b 65 6e 2e 66 72 6f 6d  = nexttoken.from
26d00 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
26d10 20 20 20 20 20 77 61 72 6e 69 6e 67 28 22 55 6e       warning("Un
26d20 65 78 70 65 63 74 65 64 20 73 70 61 63 65 20 61  expected space a
26d30 66 74 65 72 20 27 2d 27 2e 22 2c 20 74 6f 6b 65  fter '-'.", toke
26d40 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n);..           
26d50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
26d60 61 64 6a 61 63 65 6e 74 28 74 6f 6b 65 6e 2c 20  adjacent(token, 
26d70 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20 20  nexttoken);..   
26d80 20 20 20 20 20 20 20 20 20 61 64 76 61 6e 63 65           advance
26d90 28 22 28 6e 75 6d 62 65 72 29 22 29 3b 0d 0a 20  ("(number)");.. 
26da0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
26db0 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75  ;..        defau
26dc0 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lt:..           
26dd0 20 65 72 72 6f 72 28 22 45 78 70 65 63 74 65 64   error("Expected
26de0 20 61 20 4a 53 4f 4e 20 76 61 6c 75 65 2e 22 2c   a JSON value.",
26df0 20 6e 65 78 74 74 6f 6b 65 6e 29 3b 0d 0a 20 20   nexttoken);..  
26e00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
26e10 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 61  ....    // The a
26e20 63 74 75 61 6c 20 4a 53 48 49 4e 54 20 66 75 6e  ctual JSHINT fun
26e30 63 74 69 6f 6e 20 69 74 73 65 6c 66 2e 0d 0a 20  ction itself... 
26e40 20 20 20 76 61 72 20 69 74 73 65 6c 66 20 3d 20     var itself = 
26e50 66 75 6e 63 74 69 6f 6e 20 28 73 2c 20 6f 2c 20  function (s, o, 
26e60 67 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  g) {..        va
26e70 72 20 61 2c 20 69 2c 20 6b 2c 20 78 2c 0d 0a 20  r a, i, k, x,.. 
26e80 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f             optio
26e90 6e 4b 65 79 73 2c 0d 0a 20 20 20 20 20 20 20 20  nKeys,..        
26ea0 20 20 20 20 6e 65 77 4f 70 74 69 6f 6e 4f 62 6a      newOptionObj
26eb0 20 3d 20 7b 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20   = {};....      
26ec0 20 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73 20    JSHINT.errors 
26ed0 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 4a  = [];..        J
26ee0 53 48 49 4e 54 2e 75 6e 64 65 66 73 20 3d 20 5b  SHINT.undefs = [
26ef0 5d 3b 0d 0a 20 20 20 20 20 20 20 20 4a 53 48 49  ];..        JSHI
26f00 4e 54 2e 62 6c 61 63 6b 6c 69 73 74 20 3d 20 7b  NT.blacklist = {
26f10 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  };....        pr
26f20 65 64 65 66 69 6e 65 64 20 3d 20 4f 62 6a 65 63  edefined = Objec
26f30 74 2e 63 72 65 61 74 65 28 73 74 61 6e 64 61 72  t.create(standar
26f40 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 63  d);..        dec
26f50 6c 61 72 65 64 20 3d 20 4f 62 6a 65 63 74 2e 63  lared = Object.c
26f60 72 65 61 74 65 28 6e 75 6c 6c 29 3b 0d 0a 20 20  reate(null);..  
26f70 20 20 20 20 20 20 63 6f 6d 62 69 6e 65 28 70 72        combine(pr
26f80 65 64 65 66 69 6e 65 64 2c 20 67 20 7c 7c 20 7b  edefined, g || {
26f90 7d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  });....        i
26fa0 66 20 28 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20  f (o) {..       
26fb0 20 20 20 20 20 61 20 3d 20 6f 2e 70 72 65 64 65       a = o.prede
26fc0 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f;..            
26fd0 69 66 20 28 61 29 20 7b 0d 0a 20 20 20 20 20 20  if (a) {..      
26fe0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 41            if (!A
26ff0 72 72 61 79 2e 69 73 41 72 72 61 79 28 61 29 20  rray.isArray(a) 
27000 26 26 20 74 79 70 65 6f 66 20 61 20 3d 3d 3d 20  && typeof a === 
27010 22 6f 62 6a 65 63 74 22 29 20 7b 0d 0a 20 20 20  "object") {..   
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27030 20 61 20 3d 20 4f 62 6a 65 63 74 2e 6b 65 79 73   a = Object.keys
27040 28 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (a);..          
27050 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
27060 20 20 20 20 20 20 20 20 20 61 2e 66 6f 72 45 61           a.forEa
27070 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 69 74 65  ch(function (ite
27080 6d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  m) {..          
27090 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 6c            var sl
270a0 69 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ice;..          
270b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74            if (it
270c0 65 6d 5b 30 5d 20 3d 3d 3d 20 22 2d 22 29 20 7b  em[0] === "-") {
270d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
270e0 20 20 20 20 20 20 20 20 20 20 73 6c 69 63 65 20            slice 
270f0 3d 20 69 74 65 6d 2e 73 6c 69 63 65 28 31 29 3b  = item.slice(1);
27100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27110 20 20 20 20 20 20 20 20 20 20 4a 53 48 49 4e 54            JSHINT
27120 2e 62 6c 61 63 6b 6c 69 73 74 5b 73 6c 69 63 65  .blacklist[slice
27130 5d 20 3d 20 73 6c 69 63 65 3b 0d 0a 20 20 20 20  ] = slice;..    
27140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27150 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
27160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27170 20 20 70 72 65 64 65 66 69 6e 65 64 5b 69 74 65    predefined[ite
27180 6d 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  m] = true;..    
27190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
271b0 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20 20 20 20     });..        
271c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
271d0 20 20 20 6f 70 74 69 6f 6e 4b 65 79 73 20 3d 20     optionKeys = 
271e0 4f 62 6a 65 63 74 2e 6b 65 79 73 28 6f 29 3b 0d  Object.keys(o);.
271f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
27200 20 28 78 20 3d 20 30 3b 20 78 20 3c 20 6f 70 74   (x = 0; x < opt
27210 69 6f 6e 4b 65 79 73 2e 6c 65 6e 67 74 68 3b 20  ionKeys.length; 
27220 78 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  x++) {..        
27230 20 20 20 20 20 20 20 20 6e 65 77 4f 70 74 69 6f          newOptio
27240 6e 4f 62 6a 5b 6f 70 74 69 6f 6e 4b 65 79 73 5b  nObj[optionKeys[
27250 78 5d 5d 20 3d 20 6f 5b 6f 70 74 69 6f 6e 4b 65  x]] = o[optionKe
27260 79 73 5b 78 5d 5d 3b 0d 0a 0d 0a 20 20 20 20 20  ys[x]];....     
27270 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
27280 70 74 69 6f 6e 4b 65 79 73 5b 78 5d 20 3d 3d 3d  ptionKeys[x] ===
27290 20 22 6e 65 77 63 61 70 22 20 26 26 20 6f 5b 6f   "newcap" && o[o
272a0 70 74 69 6f 6e 4b 65 79 73 5b 78 5d 5d 20 3d 3d  ptionKeys[x]] ==
272b0 3d 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20  = false)..      
272c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
272d0 77 4f 70 74 69 6f 6e 4f 62 6a 5b 22 28 65 78 70  wOptionObj["(exp
272e0 6c 69 63 69 74 4e 65 77 63 61 70 29 22 5d 20 3d  licitNewcap)"] =
272f0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
27300 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
27310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6f 70 74 69  ....        opti
27320 6f 6e 20 3d 20 6e 65 77 4f 70 74 69 6f 6e 4f 62  on = newOptionOb
27330 6a 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6f 70  j;....        op
27340 74 69 6f 6e 2e 69 6e 64 65 6e 74 20 3d 20 6f 70  tion.indent = op
27350 74 69 6f 6e 2e 69 6e 64 65 6e 74 20 7c 7c 20 34  tion.indent || 4
27360 3b 0d 0a 20 20 20 20 20 20 20 20 6f 70 74 69 6f  ;..        optio
27370 6e 2e 6d 61 78 65 72 72 20 3d 20 6f 70 74 69 6f  n.maxerr = optio
27380 6e 2e 6d 61 78 65 72 72 20 7c 7c 20 35 30 3b 0d  n.maxerr || 50;.
27390 0a 0d 0a 20 20 20 20 20 20 20 20 74 61 62 20 3d  ...        tab =
273a0 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 66 6f   "";..        fo
273b0 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6f 70  r (i = 0; i < op
273c0 74 69 6f 6e 2e 69 6e 64 65 6e 74 3b 20 69 20 2b  tion.indent; i +
273d0 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  = 1) {..        
273e0 20 20 20 20 74 61 62 20 2b 3d 20 22 20 22 3b 0d      tab += " ";.
273f0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
27400 20 20 20 20 69 6e 64 65 6e 74 20 3d 20 31 3b 0d      indent = 1;.
27410 0a 20 20 20 20 20 20 20 20 67 6c 6f 62 61 6c 20  .        global 
27420 3d 20 4f 62 6a 65 63 74 2e 63 72 65 61 74 65 28  = Object.create(
27430 70 72 65 64 65 66 69 6e 65 64 29 3b 0d 0a 20 20  predefined);..  
27440 20 20 20 20 20 20 73 63 6f 70 65 20 3d 20 67 6c        scope = gl
27450 6f 62 61 6c 3b 0d 0a 20 20 20 20 20 20 20 20 66  obal;..        f
27460 75 6e 63 74 20 3d 20 7b 0d 0a 20 20 20 20 20 20  unct = {..      
27470 20 20 20 20 20 20 22 28 67 6c 6f 62 61 6c 29 22        "(global)"
27480 3a 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20  : true,..       
27490 20 20 20 20 20 22 28 6e 61 6d 65 29 22 3a 20 22       "(name)": "
274a0 28 67 6c 6f 62 61 6c 29 22 2c 0d 0a 20 20 20 20  (global)",..    
274b0 20 20 20 20 20 20 20 20 22 28 73 63 6f 70 65 29          "(scope)
274c0 22 3a 20 73 63 6f 70 65 2c 0d 0a 20 20 20 20 20  ": scope,..     
274d0 20 20 20 20 20 20 20 22 28 62 72 65 61 6b 61 67         "(breakag
274e0 65 29 22 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20  e)": 0,..       
274f0 20 20 20 20 20 22 28 6c 6f 6f 70 61 67 65 29 22       "(loopage)"
27500 3a 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  : 0,..          
27510 20 20 22 28 74 6f 6b 65 6e 73 29 22 3a 20 7b 7d    "(tokens)": {}
27520 0d 0a 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20  ..        };..  
27530 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 73 20        functions 
27540 3d 20 5b 66 75 6e 63 74 5d 3b 0d 0a 20 20 20 20  = [funct];..    
27550 20 20 20 20 75 72 6c 73 20 3d 20 5b 5d 3b 0d 0a      urls = [];..
27560 20 20 20 20 20 20 20 20 73 74 61 63 6b 20 3d 20          stack = 
27570 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 6d  null;..        m
27580 65 6d 62 65 72 20 3d 20 7b 7d 3b 0d 0a 20 20 20  ember = {};..   
27590 20 20 20 20 20 6d 65 6d 62 65 72 73 4f 6e 6c 79       membersOnly
275a0 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
275b0 20 20 69 6d 70 6c 69 65 64 20 3d 20 7b 7d 3b 0d    implied = {};.
275c0 0a 20 20 20 20 20 20 20 20 69 6e 62 6c 6f 63 6b  .        inblock
275d0 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
275e0 20 20 20 6c 6f 6f 6b 61 68 65 61 64 20 3d 20 5b     lookahead = [
275f0 5d 3b 0d 0a 20 20 20 20 20 20 20 20 6a 73 6f 6e  ];..        json
27600 6d 6f 64 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  mode = false;.. 
27610 20 20 20 20 20 20 20 77 61 72 6e 69 6e 67 73 20         warnings 
27620 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 6c 69  = 0;..        li
27630 6e 65 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20  nes = [];..     
27640 20 20 20 75 6e 75 73 65 64 73 20 3d 20 5b 5d 3b     unuseds = [];
27650 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
27660 21 69 73 53 74 72 69 6e 67 28 73 29 20 26 26 20  !isString(s) && 
27670 21 41 72 72 61 79 2e 69 73 41 72 72 61 79 28 73  !Array.isArray(s
27680 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  )) {..          
27690 20 20 65 72 72 6f 72 41 74 28 22 49 6e 70 75 74    errorAt("Input
276a0 20 69 73 20 6e 65 69 74 68 65 72 20 61 20 73 74   is neither a st
276b0 72 69 6e 67 20 6e 6f 72 20 61 6e 20 61 72 72 61  ring nor an arra
276c0 79 20 6f 66 20 73 74 72 69 6e 67 73 2e 22 2c 20  y of strings.", 
276d0 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0);..           
276e0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
276f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
27700 20 20 20 20 20 69 66 20 28 69 73 53 74 72 69 6e       if (isStrin
27710 67 28 73 29 20 26 26 20 2f 5e 5c 73 2a 24 2f 67  g(s) && /^\s*$/g
27720 2e 74 65 73 74 28 73 29 29 20 7b 0d 0a 20 20 20  .test(s)) {..   
27730 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 41 74           errorAt
27740 28 22 49 6e 70 75 74 20 69 73 20 61 6e 20 65 6d  ("Input is an em
27750 70 74 79 20 73 74 72 69 6e 67 2e 22 2c 20 30 29  pty string.", 0)
27760 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
27770 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
27780 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27790 20 20 20 69 66 20 28 73 2e 6c 65 6e 67 74 68 20     if (s.length 
277a0 3d 3d 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20 20  === 0) {..      
277b0 20 20 20 20 20 20 65 72 72 6f 72 41 74 28 22 49        errorAt("I
277c0 6e 70 75 74 20 69 73 20 61 6e 20 65 6d 70 74 79  nput is an empty
277d0 20 61 72 72 61 79 2e 22 2c 20 30 29 3b 0d 0a 20   array.", 0);.. 
277e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
277f0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
27800 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c    }....        l
27810 65 78 2e 69 6e 69 74 28 73 29 3b 0d 0a 0d 0a 20  ex.init(s);.... 
27820 20 20 20 20 20 20 20 70 72 65 72 65 67 20 3d 20         prereg = 
27830 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 64  true;..        d
27840 69 72 65 63 74 69 76 65 20 3d 20 7b 7d 3b 0d 0a  irective = {};..
27850 0d 0a 20 20 20 20 20 20 20 20 70 72 65 76 74 6f  ..        prevto
27860 6b 65 6e 20 3d 20 74 6f 6b 65 6e 20 3d 20 6e 65  ken = token = ne
27870 78 74 74 6f 6b 65 6e 20 3d 20 73 79 6e 74 61 78  xttoken = syntax
27880 5b 22 28 62 65 67 69 6e 29 22 5d 3b 0d 0a 0d 0a  ["(begin)"];....
27890 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
278a0 20 6f 70 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20   options..      
278b0 20 20 66 6f 72 20 28 76 61 72 20 6e 61 6d 65 20    for (var name 
278c0 69 6e 20 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20  in o) {..       
278d0 20 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28       if (is_own(
278e0 6f 2c 20 6e 61 6d 65 29 29 20 7b 0d 0a 20 20 20  o, name)) {..   
278f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 65               che
27900 63 6b 4f 70 74 69 6f 6e 28 6e 61 6d 65 2c 20 74  ckOption(name, t
27910 6f 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  oken);..        
27920 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
27930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 61 73 73 75  ....        assu
27940 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  me();....       
27950 20 2f 2f 20 63 6f 6d 62 69 6e 65 20 74 68 65 20   // combine the 
27960 70 61 73 73 65 64 20 67 6c 6f 62 61 6c 73 20 61  passed globals a
27970 66 74 65 72 20 77 65 27 76 65 20 61 73 73 75 6d  fter we've assum
27980 65 64 20 61 6c 6c 20 6f 75 72 20 6f 70 74 69 6f  ed all our optio
27990 6e 73 0d 0a 20 20 20 20 20 20 20 20 63 6f 6d 62  ns..        comb
279a0 69 6e 65 28 70 72 65 64 65 66 69 6e 65 64 2c 20  ine(predefined, 
279b0 67 20 7c 7c 20 7b 7d 29 3b 0d 0a 0d 0a 20 20 20  g || {});....   
279c0 20 20 20 20 20 2f 2f 72 65 73 65 74 20 76 61 6c       //reset val
279d0 75 65 73 0d 0a 20 20 20 20 20 20 20 20 63 6f 6d  ues..        com
279e0 6d 61 2e 66 69 72 73 74 20 3d 20 74 72 75 65 3b  ma.first = true;
279f0 0d 0a 20 20 20 20 20 20 20 20 71 75 6f 74 6d 61  ..        quotma
27a00 72 6b 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0d  rk = undefined;.
27a10 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b  ...        try {
27a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64  ..            ad
27a30 76 61 6e 63 65 28 29 3b 0d 0a 20 20 20 20 20 20  vance();..      
27a40 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 65        switch (ne
27a50 78 74 74 6f 6b 65 6e 2e 69 64 29 20 7b 0d 0a 20  xttoken.id) {.. 
27a60 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
27a70 22 7b 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "{":..          
27a80 20 20 63 61 73 65 20 22 5b 22 3a 0d 0a 20 20 20    case "[":..   
27a90 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74               opt
27aa0 69 6f 6e 2e 6c 61 78 62 72 65 61 6b 20 3d 20 74  ion.laxbreak = t
27ab0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
27ac0 20 20 20 20 20 20 6a 73 6f 6e 6d 6f 64 65 20 3d        jsonmode =
27ad0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
27ae0 20 20 20 20 20 20 20 20 6a 73 6f 6e 56 61 6c 75          jsonValu
27af0 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
27b00 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20        break;..  
27b10 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
27b20 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
27b30 20 20 20 20 64 69 72 65 63 74 69 76 65 73 28 29      directives()
27b40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
27b50 20 20 20 69 66 20 28 64 69 72 65 63 74 69 76 65     if (directive
27b60 5b 22 75 73 65 20 73 74 72 69 63 74 22 5d 20 26  ["use strict"] &
27b70 26 20 21 6f 70 74 69 6f 6e 2e 67 6c 6f 62 61 6c  & !option.global
27b80 73 74 72 69 63 74 29 20 7b 0d 0a 20 20 20 20 20  strict) {..     
27b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
27ba0 61 72 6e 69 6e 67 28 22 55 73 65 20 74 68 65 20  arning("Use the 
27bb0 66 75 6e 63 74 69 6f 6e 20 66 6f 72 6d 20 6f 66  function form of
27bc0 20 5c 22 75 73 65 20 73 74 72 69 63 74 5c 22 2e   \"use strict\".
27bd0 22 2c 20 70 72 65 76 74 6f 6b 65 6e 29 3b 0d 0a  ", prevtoken);..
27be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27bf0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27c00 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74 73 28       statements(
27c10 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
27c20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61  }..            a
27c30 64 76 61 6e 63 65 28 28 6e 65 78 74 74 6f 6b 65  dvance((nexttoke
27c40 6e 20 26 26 20 6e 65 78 74 74 6f 6b 65 6e 2e 76  n && nexttoken.v
27c50 61 6c 75 65 20 21 3d 3d 20 22 2e 22 29 20 20 3f  alue !== ".")  ?
27c60 20 22 28 65 6e 64 29 22 20 3a 20 75 6e 64 65 66   "(end)" : undef
27c70 69 6e 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ined);....      
27c80 20 20 20 20 20 20 76 61 72 20 6d 61 72 6b 44 65        var markDe
27c90 66 69 6e 65 64 20 3d 20 66 75 6e 63 74 69 6f 6e  fined = function
27ca0 20 28 6e 61 6d 65 2c 20 63 6f 6e 74 65 78 74 29   (name, context)
27cb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27cc0 20 20 20 20 64 6f 20 7b 0d 0a 20 20 20 20 20 20      do {..      
27cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27ce0 20 28 74 79 70 65 6f 66 20 63 6f 6e 74 65 78 74   (typeof context
27cf0 5b 6e 61 6d 65 5d 20 3d 3d 3d 20 22 73 74 72 69  [name] === "stri
27d00 6e 67 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ng") {..        
27d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d20 2f 2f 20 4a 53 48 49 4e 54 20 6d 61 72 6b 73 20  // JSHINT marks 
27d30 75 6e 75 73 65 64 20 76 61 72 69 61 62 6c 65 73  unused variables
27d40 20 61 73 20 27 75 6e 75 73 65 64 27 20 61 6e 64   as 'unused' and
27d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27d60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 75 6e 75            // unu
27d70 73 65 64 20 66 75 6e 63 74 69 6f 6e 20 64 65 63  sed function dec
27d80 6c 61 72 61 74 69 6f 6e 20 61 73 20 27 75 6e 63  laration as 'unc
27d90 74 69 6f 6e 27 2e 20 54 68 69 73 0d 0a 20 20 20  tion'. This..   
27da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27db0 20 20 20 20 20 2f 2f 20 63 6f 64 65 20 63 68 61       // code cha
27dc0 6e 67 65 73 20 73 75 63 68 20 69 6e 73 74 61 6e  nges such instan
27dd0 63 65 73 20 62 61 63 6b 20 27 76 61 72 27 20 61  ces back 'var' a
27de0 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
27df0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 27              // '
27e00 63 6c 6f 73 75 72 65 27 20 73 6f 20 74 68 61 74  closure' so that
27e10 20 74 68 65 20 63 6f 64 65 20 69 6e 20 4a 53 48   the code in JSH
27e20 49 4e 54 2e 64 61 74 61 28 29 0d 0a 20 20 20 20  INT.data()..    
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e40 20 20 20 20 2f 2f 20 64 6f 65 73 6e 27 74 20 74      // doesn't t
27e50 68 69 6e 6b 20 74 68 65 79 27 72 65 20 75 6e 75  hink they're unu
27e60 73 65 64 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  sed.....        
27e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e80 69 66 20 28 63 6f 6e 74 65 78 74 5b 6e 61 6d 65  if (context[name
27e90 5d 20 3d 3d 3d 20 22 75 6e 75 73 65 64 22 29 0d  ] === "unused").
27ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
27ec0 74 65 78 74 5b 6e 61 6d 65 5d 20 3d 20 22 76 61  text[name] = "va
27ed0 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r";..           
27ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
27ef0 65 20 69 66 20 28 63 6f 6e 74 65 78 74 5b 6e 61  e if (context[na
27f00 6d 65 5d 20 3d 3d 3d 20 22 75 6e 63 74 69 6f 6e  me] === "unction
27f10 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")..            
27f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f30 63 6f 6e 74 65 78 74 5b 6e 61 6d 65 5d 20 3d 20  context[name] = 
27f40 22 63 6c 6f 73 75 72 65 22 3b 0d 0a 0d 0a 20 20  "closure";....  
27f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f60 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
27f70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
27f80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
27f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27fa0 20 63 6f 6e 74 65 78 74 20 3d 20 63 6f 6e 74 65   context = conte
27fb0 78 74 5b 22 28 63 6f 6e 74 65 78 74 29 22 5d 3b  xt["(context)"];
27fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27fd0 20 20 7d 20 77 68 69 6c 65 20 28 63 6f 6e 74 65    } while (conte
27fe0 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
27ff0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
28000 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
28010 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     };....       
28020 20 20 20 20 20 76 61 72 20 63 6c 65 61 72 49 6d       var clearIm
28030 70 6c 69 65 64 20 3d 20 66 75 6e 63 74 69 6f 6e  plied = function
28040 20 28 6e 61 6d 65 2c 20 6c 69 6e 65 29 20 7b 0d   (name, line) {.
28050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28060 20 69 66 20 28 21 69 6d 70 6c 69 65 64 5b 6e 61   if (!implied[na
28070 6d 65 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me])..          
28080 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28090 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
280a0 20 20 20 20 20 76 61 72 20 6e 65 77 49 6d 70 6c       var newImpl
280b0 69 65 64 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20  ied = [];..     
280c0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
280d0 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 69  var i = 0; i < i
280e0 6d 70 6c 69 65 64 5b 6e 61 6d 65 5d 2e 6c 65 6e  mplied[name].len
280f0 67 74 68 3b 20 69 20 2b 3d 20 31 29 20 7b 0d 0a  gth; i += 1) {..
28100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28110 20 20 20 20 69 66 20 28 69 6d 70 6c 69 65 64 5b      if (implied[
28120 6e 61 6d 65 5d 5b 69 5d 20 21 3d 3d 20 6c 69 6e  name][i] !== lin
28130 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
28140 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 49              newI
28150 6d 70 6c 69 65 64 2e 70 75 73 68 28 69 6d 70 6c  mplied.push(impl
28160 69 65 64 5b 6e 61 6d 65 5d 5b 69 5d 29 3b 0d 0a  ied[name][i]);..
28170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28180 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28190 20 20 20 20 20 69 66 20 28 6e 65 77 49 6d 70 6c       if (newImpl
281a0 69 65 64 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30  ied.length === 0
281b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
281c0 20 20 20 20 20 20 20 64 65 6c 65 74 65 20 69 6d         delete im
281d0 70 6c 69 65 64 5b 6e 61 6d 65 5d 3b 0d 0a 20 20  plied[name];..  
281e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
281f0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
28200 20 20 20 20 20 20 20 20 69 6d 70 6c 69 65 64 5b          implied[
28210 6e 61 6d 65 5d 20 3d 20 6e 65 77 49 6d 70 6c 69  name] = newImpli
28220 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed;..           
28230 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   };....         
28240 20 20 20 76 61 72 20 77 61 72 6e 55 6e 75 73 65     var warnUnuse
28250 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e 61  d = function (na
28260 6d 65 2c 20 74 6f 6b 65 6e 29 20 7b 0d 0a 20 20  me, token) {..  
28270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
28280 72 20 6c 69 6e 65 20 3d 20 74 6f 6b 65 6e 2e 6c  r line = token.l
28290 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ine;..          
282a0 20 20 20 20 20 20 76 61 72 20 63 68 72 20 20 3d        var chr  =
282b0 20 74 6f 6b 65 6e 2e 63 68 61 72 61 63 74 65 72   token.character
282c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
282d0 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e 2e       if (option.
282e0 75 6e 75 73 65 64 29 0d 0a 20 20 20 20 20 20 20  unused)..       
282f0 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 72               war
28300 6e 69 6e 67 41 74 28 22 27 7b 61 7d 27 20 69 73  ningAt("'{a}' is
28310 20 64 65 66 69 6e 65 64 20 62 75 74 20 6e 65 76   defined but nev
28320 65 72 20 75 73 65 64 2e 22 2c 20 6c 69 6e 65 2c  er used.", line,
28330 20 63 68 72 2c 20 6e 61 6d 65 29 3b 0d 0a 0d 0a   chr, name);....
28340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28350 75 6e 75 73 65 64 73 2e 70 75 73 68 28 7b 0d 0a  unuseds.push({..
28360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28370 20 20 20 20 6e 61 6d 65 3a 20 6e 61 6d 65 2c 0d      name: name,.
28380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28390 20 20 20 20 20 6c 69 6e 65 3a 20 6c 69 6e 65 2c       line: line,
283a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
283b0 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 3a        character:
283c0 20 63 68 72 0d 0a 20 20 20 20 20 20 20 20 20 20   chr..          
283d0 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20        });..     
283e0 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
283f0 20 20 20 20 20 20 20 20 20 76 61 72 20 63 68 65           var che
28400 63 6b 55 6e 75 73 65 64 20 3d 20 66 75 6e 63 74  ckUnused = funct
28410 69 6f 6e 20 28 66 75 6e 63 2c 20 6b 65 79 29 20  ion (func, key) 
28420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28430 20 20 20 76 61 72 20 74 79 70 65 20 3d 20 66 75     var type = fu
28440 6e 63 5b 6b 65 79 5d 3b 0d 0a 20 20 20 20 20 20  nc[key];..      
28450 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f            var to
28460 6b 65 6e 20 3d 20 66 75 6e 63 5b 22 28 74 6f 6b  ken = func["(tok
28470 65 6e 73 29 22 5d 5b 6b 65 79 5d 3b 0d 0a 0d 0a  ens)"][key];....
28480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28490 69 66 20 28 6b 65 79 2e 63 68 61 72 41 74 28 30  if (key.charAt(0
284a0 29 20 3d 3d 3d 20 22 28 22 29 0d 0a 20 20 20 20  ) === "(")..    
284b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284c0 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
284d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
284e0 79 70 65 20 21 3d 3d 20 22 75 6e 75 73 65 64 22  ype !== "unused"
284f0 20 26 26 20 74 79 70 65 20 21 3d 3d 20 22 75 6e   && type !== "un
28500 63 74 69 6f 6e 22 29 0d 0a 20 20 20 20 20 20 20  ction")..       
28510 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28520 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
28530 20 20 20 20 20 20 20 20 2f 2f 20 50 61 72 61 6d          // Param
28540 73 20 61 72 65 20 63 68 65 63 6b 65 64 20 73 65  s are checked se
28550 70 61 72 61 74 65 6c 79 20 66 72 6f 6d 20 6f 74  parately from ot
28560 68 65 72 20 76 61 72 69 61 62 6c 65 73 2e 0d 0a  her variables...
28570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28580 69 66 20 28 66 75 6e 63 5b 22 28 70 61 72 61 6d  if (func["(param
28590 73 29 22 5d 20 26 26 20 66 75 6e 63 5b 22 28 70  s)"] && func["(p
285a0 61 72 61 6d 73 29 22 5d 2e 69 6e 64 65 78 4f 66  arams)"].indexOf
285b0 28 6b 65 79 29 20 21 3d 3d 20 2d 31 29 0d 0a 20  (key) !== -1).. 
285c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285d0 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
285e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61                wa
285f0 72 6e 55 6e 75 73 65 64 28 6b 65 79 2c 20 74 6f  rnUnused(key, to
28600 6b 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ken);..         
28610 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     };....       
28620 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 71 75       // Check qu
28630 65 75 65 64 20 27 78 20 69 73 20 6e 6f 74 20 64  eued 'x is not d
28640 65 66 69 6e 65 64 27 20 69 6e 73 74 61 6e 63 65  efined' instance
28650 73 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 79  s to see if they
28660 27 72 65 20 73 74 69 6c 6c 20 75 6e 64 65 66 69  're still undefi
28670 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ned...          
28680 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20    for (i = 0; i 
28690 3c 20 4a 53 48 49 4e 54 2e 75 6e 64 65 66 73 2e  < JSHINT.undefs.
286a0 6c 65 6e 67 74 68 3b 20 69 20 2b 3d 20 31 29 20  length; i += 1) 
286b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
286c0 20 20 20 6b 20 3d 20 4a 53 48 49 4e 54 2e 75 6e     k = JSHINT.un
286d0 64 65 66 73 5b 69 5d 2e 73 6c 69 63 65 28 30 29  defs[i].slice(0)
286e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
286f0 20 20 20 20 20 69 66 20 28 6d 61 72 6b 44 65 66       if (markDef
28700 69 6e 65 64 28 6b 5b 32 5d 2e 76 61 6c 75 65 2c  ined(k[2].value,
28710 20 6b 5b 30 5d 29 29 20 7b 0d 0a 20 20 20 20 20   k[0])) {..     
28720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
28730 6c 65 61 72 49 6d 70 6c 69 65 64 28 6b 5b 32 5d  learImplied(k[2]
28740 2e 76 61 6c 75 65 2c 20 6b 5b 32 5d 2e 6c 69 6e  .value, k[2].lin
28750 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
28760 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
28770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28780 20 20 20 77 61 72 6e 69 6e 67 2e 61 70 70 6c 79     warning.apply
28790 28 77 61 72 6e 69 6e 67 2c 20 6b 2e 73 6c 69 63  (warning, k.slic
287a0 65 28 31 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  e(1));..        
287b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
287c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
287d0 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e          function
287e0 73 2e 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69  s.forEach(functi
287f0 6f 6e 20 28 66 75 6e 63 29 20 7b 0d 0a 20 20 20  on (func) {..   
28800 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
28810 20 28 76 61 72 20 6b 65 79 20 69 6e 20 66 75 6e   (var key in fun
28820 63 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  c) {..          
28830 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73            if (is
28840 5f 6f 77 6e 28 66 75 6e 63 2c 20 6b 65 79 29 29  _own(func, key))
28850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28860 20 20 20 20 20 20 20 20 20 20 20 20 63 68 65 63              chec
28870 6b 55 6e 75 73 65 64 28 66 75 6e 63 2c 20 6b 65  kUnused(func, ke
28880 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
28890 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
288a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
288b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
288c0 20 69 66 20 28 21 66 75 6e 63 5b 22 28 70 61 72   if (!func["(par
288d0 61 6d 73 29 22 5d 29 0d 0a 20 20 20 20 20 20 20  ams)"])..       
288e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
288f0 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
28900 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72 61          var para
28910 6d 73 20 3d 20 66 75 6e 63 5b 22 28 70 61 72 61  ms = func["(para
28920 6d 73 29 22 5d 2e 73 6c 69 63 65 28 29 3b 0d 0a  ms)"].slice();..
28930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28940 76 61 72 20 70 61 72 61 6d 20 20 3d 20 70 61 72  var param  = par
28950 61 6d 73 2e 70 6f 70 28 29 3b 0d 0a 20 20 20 20  ams.pop();..    
28960 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
28970 74 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  type;....       
28980 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28           while (
28990 70 61 72 61 6d 29 20 7b 0d 0a 20 20 20 20 20 20  param) {..      
289a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
289b0 70 65 20 3d 20 66 75 6e 63 5b 70 61 72 61 6d 5d  pe = func[param]
289c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
289d0 20 20 20 20 20 20 20 20 20 2f 2f 20 27 75 6e 64           // 'und
289e0 65 66 69 6e 65 64 27 20 69 73 20 61 20 73 70 65  efined' is a spe
289f0 63 69 61 6c 20 63 61 73 65 20 66 6f 72 20 28 66  cial case for (f
28a00 75 6e 63 74 69 6f 6e 20 28 77 69 6e 64 6f 77 2c  unction (window,
28a10 20 75 6e 64 65 66 69 6e 65 64 29 20 7b 20 2e 2e   undefined) { ..
28a20 2e 20 7d 29 28 29 3b 0d 0a 20 20 20 20 20 20 20  . })();..       
28a30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
28a40 70 61 74 74 65 72 6e 73 2e 0d 0a 0d 0a 20 20 20  patterns.....   
28a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a60 20 69 66 20 28 70 61 72 61 6d 20 3d 3d 3d 20 22   if (param === "
28a70 75 6e 64 65 66 69 6e 65 64 22 29 0d 0a 20 20 20  undefined")..   
28a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a90 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
28aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ab0 20 20 20 20 69 66 20 28 74 79 70 65 20 21 3d 3d      if (type !==
28ac0 20 22 75 6e 75 73 65 64 22 20 26 26 20 74 79 70   "unused" && typ
28ad0 65 20 21 3d 3d 20 22 75 6e 63 74 69 6f 6e 22 29  e !== "unction")
28ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28af0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28b00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
28b10 20 20 20 20 20 20 20 20 20 77 61 72 6e 55 6e 75           warnUnu
28b20 73 65 64 28 70 61 72 61 6d 2c 20 66 75 6e 63 5b  sed(param, func[
28b30 22 28 74 6f 6b 65 6e 73 29 22 5d 5b 70 61 72 61  "(tokens)"][para
28b40 6d 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  m]);..          
28b50 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 20            param 
28b60 3d 20 70 61 72 61 6d 73 2e 70 6f 70 28 29 3b 0d  = params.pop();.
28b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28b80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
28b90 7d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  });....         
28ba0 20 20 20 66 6f 72 20 28 76 61 72 20 6b 65 79 20     for (var key 
28bb0 69 6e 20 64 65 63 6c 61 72 65 64 29 20 7b 0d 0a  in declared) {..
28bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28bd0 69 66 20 28 69 73 5f 6f 77 6e 28 64 65 63 6c 61  if (is_own(decla
28be0 72 65 64 2c 20 6b 65 79 29 20 26 26 20 21 69 73  red, key) && !is
28bf0 5f 6f 77 6e 28 67 6c 6f 62 61 6c 2c 20 6b 65 79  _own(global, key
28c00 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  )) {..          
28c10 20 20 20 20 20 20 20 20 20 20 77 61 72 6e 55 6e            warnUn
28c20 75 73 65 64 28 6b 65 79 2c 20 64 65 63 6c 61 72  used(key, declar
28c30 65 64 5b 6b 65 79 5d 29 3b 0d 0a 20 20 20 20 20  ed[key]);..     
28c40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
28c50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
28c60 20 20 20 20 20 7d 20 63 61 74 63 68 20 28 65 29       } catch (e)
28c70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28c80 69 66 20 28 65 29 20 7b 0d 0a 20 20 20 20 20 20  if (e) {..      
28c90 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 74            var nt
28ca0 20 3d 20 6e 65 78 74 74 6f 6b 65 6e 20 7c 7c 20   = nexttoken || 
28cb0 7b 7d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  {};..           
28cc0 20 20 20 20 20 4a 53 48 49 4e 54 2e 65 72 72 6f       JSHINT.erro
28cd0 72 73 2e 70 75 73 68 28 7b 0d 0a 20 20 20 20 20  rs.push({..     
28ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28cf0 61 77 20 20 20 20 20 20 20 3a 20 65 2e 72 61 77  aw       : e.raw
28d00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28d10 20 20 20 20 20 20 20 72 65 61 73 6f 6e 20 20 20         reason   
28d20 20 3a 20 65 2e 6d 65 73 73 61 67 65 2c 0d 0a 20   : e.message,.. 
28d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d40 20 20 20 6c 69 6e 65 20 20 20 20 20 20 3a 20 65     line      : e
28d50 2e 6c 69 6e 65 20 7c 7c 20 6e 74 2e 6c 69 6e 65  .line || nt.line
28d60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28d70 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72         character
28d80 20 3a 20 65 2e 63 68 61 72 61 63 74 65 72 20 7c   : e.character |
28d90 7c 20 6e 74 2e 66 72 6f 6d 0d 0a 20 20 20 20 20  | nt.from..     
28da0 20 20 20 20 20 20 20 20 20 20 20 7d 2c 20 6e 75             }, nu
28db0 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
28dc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
28dd0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
28de0 20 4a 53 48 49 4e 54 2e 65 72 72 6f 72 73 2e 6c   JSHINT.errors.l
28df0 65 6e 67 74 68 20 3d 3d 3d 20 30 3b 0d 0a 20 20  ength === 0;..  
28e00 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 44    };....    // D
28e10 61 74 61 20 73 75 6d 6d 61 72 79 2e 0d 0a 20 20  ata summary...  
28e20 20 20 69 74 73 65 6c 66 2e 64 61 74 61 20 3d 20    itself.data = 
28e30 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20  function () {.. 
28e40 20 20 20 20 20 20 20 76 61 72 20 64 61 74 61 20         var data 
28e50 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  = {..           
28e60 20 66 75 6e 63 74 69 6f 6e 73 3a 20 5b 5d 2c 0d   functions: [],.
28e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74  .            opt
28e80 69 6f 6e 73 3a 20 6f 70 74 69 6f 6e 0d 0a 20 20  ions: option..  
28e90 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20        };..      
28ea0 20 20 76 61 72 20 69 6d 70 6c 69 65 64 73 20 3d    var implieds =
28eb0 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 76 61   [];..        va
28ec0 72 20 6d 65 6d 62 65 72 73 20 3d 20 5b 5d 3b 0d  r members = [];.
28ed0 0a 20 20 20 20 20 20 20 20 76 61 72 20 66 75 2c  .        var fu,
28ee0 20 66 2c 20 69 2c 20 6a 2c 20 6e 2c 20 67 6c 6f   f, i, j, n, glo
28ef0 62 61 6c 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  bals;....       
28f00 20 69 66 20 28 69 74 73 65 6c 66 2e 65 72 72 6f   if (itself.erro
28f10 72 73 2e 6c 65 6e 67 74 68 29 20 7b 0d 0a 20 20  rs.length) {..  
28f20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 2e 65            data.e
28f30 72 72 6f 72 73 20 3d 20 69 74 73 65 6c 66 2e 65  rrors = itself.e
28f40 72 72 6f 72 73 3b 0d 0a 20 20 20 20 20 20 20 20  rrors;..        
28f50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  }....        if 
28f60 28 6a 73 6f 6e 6d 6f 64 65 29 20 7b 0d 0a 20 20  (jsonmode) {..  
28f70 20 20 20 20 20 20 20 20 20 20 64 61 74 61 2e 6a            data.j
28f80 73 6f 6e 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  son = true;..   
28f90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28fa0 20 20 66 6f 72 20 28 6e 20 69 6e 20 69 6d 70 6c    for (n in impl
28fb0 69 65 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ied) {..        
28fc0 20 20 20 20 69 66 20 28 69 73 5f 6f 77 6e 28 69      if (is_own(i
28fd0 6d 70 6c 69 65 64 2c 20 6e 29 29 20 7b 0d 0a 20  mplied, n)) {.. 
28fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28ff0 6d 70 6c 69 65 64 73 2e 70 75 73 68 28 7b 0d 0a  mplieds.push({..
29000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29010 20 20 20 20 6e 61 6d 65 3a 20 6e 2c 0d 0a 20 20      name: n,..  
29020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29030 20 20 6c 69 6e 65 3a 20 69 6d 70 6c 69 65 64 5b    line: implied[
29040 6e 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n]..            
29050 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 20 20 20      });..       
29060 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
29070 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  }....        if 
29080 28 69 6d 70 6c 69 65 64 73 2e 6c 65 6e 67 74 68  (implieds.length
29090 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20   > 0) {..       
290a0 20 20 20 20 20 64 61 74 61 2e 69 6d 70 6c 69 65       data.implie
290b0 64 73 20 3d 20 69 6d 70 6c 69 65 64 73 3b 0d 0a  ds = implieds;..
290c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
290d0 20 20 20 20 20 69 66 20 28 75 72 6c 73 2e 6c 65       if (urls.le
290e0 6e 67 74 68 20 3e 20 30 29 20 7b 0d 0a 20 20 20  ngth > 0) {..   
290f0 20 20 20 20 20 20 20 20 20 64 61 74 61 2e 75 72           data.ur
29100 6c 73 20 3d 20 75 72 6c 73 3b 0d 0a 20 20 20 20  ls = urls;..    
29110 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29120 20 67 6c 6f 62 61 6c 73 20 3d 20 4f 62 6a 65 63   globals = Objec
29130 74 2e 6b 65 79 73 28 73 63 6f 70 65 29 3b 0d 0a  t.keys(scope);..
29140 20 20 20 20 20 20 20 20 69 66 20 28 67 6c 6f 62          if (glob
29150 61 6c 73 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20  als.length > 0) 
29160 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  {..            d
29170 61 74 61 2e 67 6c 6f 62 61 6c 73 20 3d 20 67 6c  ata.globals = gl
29180 6f 62 61 6c 73 3b 0d 0a 20 20 20 20 20 20 20 20  obals;..        
29190 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72  }....        for
291a0 20 28 69 20 3d 20 31 3b 20 69 20 3c 20 66 75 6e   (i = 1; i < fun
291b0 63 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 3b 20 69  ctions.length; i
291c0 20 2b 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 20   += 1) {..      
291d0 20 20 20 20 20 20 66 20 3d 20 66 75 6e 63 74 69        f = functi
291e0 6f 6e 73 5b 69 5d 3b 0d 0a 20 20 20 20 20 20 20  ons[i];..       
291f0 20 20 20 20 20 66 75 20 3d 20 7b 7d 3b 0d 0a 0d       fu = {};...
29200 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
29210 20 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 66 75 6e   (j = 0; j < fun
29220 63 74 69 6f 6e 69 63 69 74 79 2e 6c 65 6e 67 74  ctionicity.lengt
29230 68 3b 20 6a 20 2b 3d 20 31 29 20 7b 0d 0a 20 20  h; j += 1) {..  
29240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75                fu
29250 5b 66 75 6e 63 74 69 6f 6e 69 63 69 74 79 5b 6a  [functionicity[j
29260 5d 5d 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20  ]] = [];..      
29270 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29280 20 20 20 20 20 20 20 66 6f 72 20 28 6a 20 3d 20         for (j = 
29290 30 3b 20 6a 20 3c 20 66 75 6e 63 74 69 6f 6e 69  0; j < functioni
292a0 63 69 74 79 2e 6c 65 6e 67 74 68 3b 20 6a 20 2b  city.length; j +
292b0 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  = 1) {..        
292c0 20 20 20 20 20 20 20 20 69 66 20 28 66 75 5b 66          if (fu[f
292d0 75 6e 63 74 69 6f 6e 69 63 69 74 79 5b 6a 5d 5d  unctionicity[j]]
292e0 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 29 20 7b  .length === 0) {
292f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29300 20 20 20 20 20 20 64 65 6c 65 74 65 20 66 75 5b        delete fu[
29310 66 75 6e 63 74 69 6f 6e 69 63 69 74 79 5b 6a 5d  functionicity[j]
29320 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
29330 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
29340 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
29350 20 20 20 20 66 75 2e 6e 61 6d 65 20 3d 20 66 5b      fu.name = f[
29360 22 28 6e 61 6d 65 29 22 5d 3b 0d 0a 20 20 20 20  "(name)"];..    
29370 20 20 20 20 20 20 20 20 66 75 2e 70 61 72 61 6d          fu.param
29380 20 3d 20 66 5b 22 28 70 61 72 61 6d 73 29 22 5d   = f["(params)"]
29390 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ;..            f
293a0 75 2e 6c 69 6e 65 20 3d 20 66 5b 22 28 6c 69 6e  u.line = f["(lin
293b0 65 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  e)"];..         
293c0 20 20 20 66 75 2e 63 68 61 72 61 63 74 65 72 20     fu.character 
293d0 3d 20 66 5b 22 28 63 68 61 72 61 63 74 65 72 29  = f["(character)
293e0 22 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "];..           
293f0 20 66 75 2e 6c 61 73 74 20 3d 20 66 5b 22 28 6c   fu.last = f["(l
29400 61 73 74 29 22 5d 3b 0d 0a 20 20 20 20 20 20 20  ast)"];..       
29410 20 20 20 20 20 66 75 2e 6c 61 73 74 63 68 61 72       fu.lastchar
29420 61 63 74 65 72 20 3d 20 66 5b 22 28 6c 61 73 74  acter = f["(last
29430 63 68 61 72 61 63 74 65 72 29 22 5d 3b 0d 0a 20  character)"];.. 
29440 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 2e             data.
29450 66 75 6e 63 74 69 6f 6e 73 2e 70 75 73 68 28 66  functions.push(f
29460 75 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  u);..        }..
29470 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 75 6e  ..        if (un
29480 75 73 65 64 73 2e 6c 65 6e 67 74 68 20 3e 20 30  useds.length > 0
29490 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
294a0 20 64 61 74 61 2e 75 6e 75 73 65 64 20 3d 20 75   data.unused = u
294b0 6e 75 73 65 64 73 3b 0d 0a 20 20 20 20 20 20 20  nuseds;..       
294c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6d 65   }....        me
294d0 6d 62 65 72 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20  mbers = [];..   
294e0 20 20 20 20 20 66 6f 72 20 28 6e 20 69 6e 20 6d       for (n in m
294f0 65 6d 62 65 72 29 20 7b 0d 0a 20 20 20 20 20 20  ember) {..      
29500 20 20 20 20 20 20 69 66 20 28 74 79 70 65 6f 66        if (typeof
29510 20 6d 65 6d 62 65 72 5b 6e 5d 20 3d 3d 3d 20 22   member[n] === "
29520 6e 75 6d 62 65 72 22 29 20 7b 0d 0a 20 20 20 20  number") {..    
29530 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61              data
29540 2e 6d 65 6d 62 65 72 20 3d 20 6d 65 6d 62 65 72  .member = member
29550 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29560 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
29570 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
29580 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72    }....        r
29590 65 74 75 72 6e 20 64 61 74 61 3b 0d 0a 20 20 20  eturn data;..   
295a0 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 74 73 65 6c   };....    itsel
295b0 66 2e 6a 73 68 69 6e 74 20 3d 20 69 74 73 65 6c  f.jshint = itsel
295c0 66 3b 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e  f;....    return
295d0 20 69 74 73 65 6c 66 3b 0d 0a 7d 28 29 29 3b 0d   itself;..}());.
295e0 0a 0d 0a 2f 2f 20 4d 61 6b 65 20 4a 53 48 49 4e  ...// Make JSHIN
295f0 54 20 61 20 4e 6f 64 65 20 6d 6f 64 75 6c 65 2c  T a Node module,
29600 20 69 66 20 70 6f 73 73 69 62 6c 65 2e 0d 0a 69   if possible...i
29610 66 20 28 74 79 70 65 6f 66 20 65 78 70 6f 72 74  f (typeof export
29620 73 20 3d 3d 3d 20 22 6f 62 6a 65 63 74 22 20 26  s === "object" &
29630 26 20 65 78 70 6f 72 74 73 29 20 7b 0d 0a 20 20  & exports) {..  
29640 20 20 65 78 70 6f 72 74 73 2e 4a 53 48 49 4e 54    exports.JSHINT
29650 20 3d 20 4a 53 48 49 4e 54 3b 0d 0a 7d 0d 0a      = JSHINT;..}..