/ Hex Artifact Content
Login

Artifact a7aa7e1fefc6e1918aa4d3111d5c44a09177168e962c5fd2cca9620de8a7ed6d:


0000: 23 20 32 30 31 34 20 4a 75 6e 65 20 31 37 0a 23  # 2014 June 17.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73 20 66 69  ******.# This fi
0170: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65  le implements re
0180: 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66  gression tests f
0190: 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  or SQLite librar
01a0: 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75 73 20  y.  The.# focus 
01b0: 6f 66 20 74 68 69 73 20 73 63 72 69 70 74 20 69  of this script i
01c0: 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 46 54  s testing the FT
01d0: 53 35 20 6d 6f 64 75 6c 65 2e 0a 23 0a 23 0a 0a  S5 module..#.#..
01e0: 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69  source [file joi
01f0: 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  n [file dirname 
0200: 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 66  [info script]] f
0210: 74 73 35 5f 63 6f 6d 6d 6f 6e 2e 74 63 6c 5d 0a  ts5_common.tcl].
0220: 73 65 74 20 74 65 73 74 70 72 65 66 69 78 20 66  set testprefix f
0230: 74 73 35 61 63 0a 0a 23 20 49 66 20 53 51 4c 49  ts5ac..# If SQLI
0240: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 20 69  TE_ENABLE_FTS5 i
0250: 73 20 64 65 66 69 6e 65 64 2c 20 6f 6d 69 74 20  s defined, omit 
0260: 74 68 69 73 20 66 69 6c 65 2e 0a 69 66 63 61 70  this file..ifcap
0270: 61 62 6c 65 20 21 66 74 73 35 20 7b 0a 20 20 66  able !fts5 {.  f
0280: 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74  inish_test.  ret
0290: 75 72 6e 0a 7d 0a 0a 66 6f 72 65 61 63 68 5f 64  urn.}..foreach_d
02a0: 65 74 61 69 6c 5f 6d 6f 64 65 20 24 74 65 73 74  etail_mode $test
02b0: 70 72 65 66 69 78 20 7b 0a 0a 73 65 74 20 64 61  prefix {..set da
02c0: 74 61 20 7b 0a 20 20 20 20 30 20 20 20 7b 70 20  ta {.    0   {p 
02d0: 6f 20 71 20 65 20 7a 20 6b 20 7a 20 70 20 6e 20  o q e z k z p n 
02e0: 66 20 79 20 75 20 7a 20 79 20 6e 20 79 7d 20 20  f y u z y n y}  
02f0: 20 7b 6c 20 6f 20 6f 20 6c 20 76 20 76 20 6b 7d   {l o o l v v k}
0300: 0a 20 20 20 20 31 20 20 20 7b 70 20 6b 20 68 20  .    1   {p k h 
0310: 68 20 70 20 79 20 6c 20 6c 20 68 20 69 20 70 20  h p y l l h i p 
0320: 76 20 6e 7d 20 20 20 20 20 20 20 20 20 7b 70 20  v n}         {p 
0330: 70 20 6c 20 75 20 72 20 69 20 66 20 61 20 6a 20  p l u r i f a j 
0340: 67 20 65 20 72 20 72 20 78 20 77 7d 0a 20 20 20  g e r r x w}.   
0350: 20 32 20 20 20 7b 6c 20 73 20 7a 20 6a 20 6b 20   2   {l s z j k 
0360: 69 20 6d 20 70 20 73 7d 20 20 20 20 20 20 20 20  i m p s}        
0370: 20 20 20 20 20 20 20 20 20 7b 6c 20 77 20 65 20           {l w e 
0380: 6a 20 74 20 6a 20 65 20 65 20 69 20 74 20 77 20  j t j e e i t w 
0390: 72 20 6f 20 70 20 6f 7d 0a 20 20 20 20 33 20 20  r o p o}.    3  
03a0: 20 7b 78 20 67 20 79 20 6d 20 79 20 6d 20 68 20   {x g y m y m h 
03b0: 70 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  p}              
03c0: 20 20 20 20 20 7b 6b 20 6a 20 6a 20 62 20 72 20       {k j j b r 
03d0: 65 20 79 20 79 20 61 20 6b 20 79 7d 0a 20 20 20  e y y a k y}.   
03e0: 20 34 20 20 20 7b 71 20 6d 20 61 20 69 20 79 20   4   {q m a i y 
03f0: 69 20 7a 7d 20 20 20 20 20 20 20 20 20 20 20 20  i z}            
0400: 20 20 20 20 20 20 20 20 20 7b 6f 20 77 20 61 20           {o w a 
0410: 67 20 6b 20 78 20 67 20 6a 20 6d 20 77 20 65 20  g k x g j m w e 
0420: 75 20 6b 7d 0a 20 20 20 20 35 20 20 20 7b 6b 20  u k}.    5   {k 
0430: 6f 20 61 20 77 20 79 20 62 20 73 20 7a 7d 20 20  o a w y b s z}  
0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0450: 20 7b 73 20 67 20 6c 20 6d 20 6d 20 6c 20 6d 20   {s g l m m l m 
0460: 67 20 70 7d 0a 20 20 20 20 36 20 20 20 7b 64 20  g p}.    6   {d 
0470: 61 20 71 20 69 20 7a 20 68 20 62 20 6c 20 63 20  a q i z h b l c 
0480: 70 20 6b 20 6a 20 67 20 6b 7d 20 20 20 20 20 20  p k j g k}      
0490: 20 7b 70 20 78 20 75 20 6a 20 78 20 74 20 76 20   {p x u j x t v 
04a0: 63 20 7a 7d 0a 20 20 20 20 37 20 20 20 7b 66 20  c z}.    7   {f 
04b0: 64 20 61 20 67 20 6f 20 63 20 74 20 69 7d 20 20  d a g o c t i}  
04c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04d0: 20 7b 77 20 66 20 63 20 78 20 6c 20 64 20 72 20   {w f c x l d r 
04e0: 6b 20 69 20 6a 7d 0a 20 20 20 20 38 20 20 20 7b  k i j}.    8   {
04f0: 79 20 67 20 77 20 75 20 62 20 71 20 70 20 6f 20  y g w u b q p o 
0500: 6d 20 6a 20 79 20 62 20 70 20 61 20 65 20 6b 7d  m j y b p a e k}
0510: 20 20 20 7b 72 20 69 20 64 20 6b 20 79 20 77 20     {r i d k y w 
0520: 6f 20 7a 20 71 20 6d 20 61 20 74 20 70 7d 0a 20  o z q m a t p}. 
0530: 20 20 20 39 20 20 20 7b 72 20 6b 20 6f 20 6d 20     9   {r k o m 
0540: 63 20 63 20 6a 20 73 20 78 20 6d 20 78 20 6d 20  c c j s x m x m 
0550: 78 20 6d 20 71 20 72 7d 20 20 20 7b 79 20 72 20  x m q r}   {y r 
0560: 63 20 61 20 71 20 64 20 7a 20 6b 20 6e 20 78 20  c a q d z k n x 
0570: 6e 7d 0a 20 20 20 20 31 30 20 20 7b 6b 20 6a 20  n}.    10  {k j 
0580: 71 20 6d 20 67 20 71 20 61 20 6a 20 64 7d 20 20  q m g q a j d}  
0590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
05a0: 64 20 64 20 65 20 7a 20 67 20 77 20 68 20 63 20  d d e z g w h c 
05b0: 64 20 6f 20 6f 20 67 20 78 20 64 7d 0a 20 20 20  d o o g x d}.   
05c0: 20 31 31 20 20 7b 6a 20 7a 20 75 20 6d 20 6f 20   11  {j z u m o 
05d0: 79 20 71 20 6a 20 66 20 77 20 65 20 65 20 77 20  y q j f w e e w 
05e0: 74 20 72 20 6a 20 77 7d 20 7b 67 20 6d 20 6f 20  t r j w} {g m o 
05f0: 72 20 78 20 6e 20 74 20 6e 20 77 20 69 20 66 20  r x n t n w i f 
0600: 67 20 6c 20 7a 20 66 7d 0a 20 20 20 20 31 32 20  g l z f}.    12 
0610: 20 7b 73 20 79 20 77 20 61 20 77 20 64 20 6f 20   {s y w a w d o 
0620: 68 20 78 20 6d 20 6b 7d 20 20 20 20 20 20 20 20  h x m k}        
0630: 20 20 20 20 20 7b 63 20 77 20 6b 20 7a 20 62 20       {c w k z b 
0640: 70 20 6f 20 72 20 61 7d 0a 20 20 20 20 31 33 20  p o r a}.    13 
0650: 20 7b 75 20 74 20 68 20 78 20 65 20 67 20 73 20   {u t h x e g s 
0660: 6b 20 6e 20 67 20 69 7d 20 20 20 20 20 20 20 20  k n g i}        
0670: 20 20 20 20 20 7b 66 20 6a 20 77 20 67 20 63 20       {f j w g c 
0680: 73 20 72 7d 0a 20 20 20 20 31 34 20 20 7b 62 20  s r}.    14  {b 
0690: 66 20 69 20 63 20 73 20 75 20 7a 20 74 20 6b 7d  f i c s u z t k}
06a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06b0: 20 7b 63 20 6b 20 71 20 73 20 6a 20 75 20 69 20   {c k q s j u i 
06c0: 7a 20 6f 7d 0a 20 20 20 20 31 35 20 20 7b 6e 20  z o}.    15  {n 
06d0: 61 20 66 20 6e 20 75 20 73 20 77 20 68 20 79 20  a f n u s w h y 
06e0: 6e 20 73 20 69 20 71 20 65 20 77 7d 20 20 20 20  n s i q e w}    
06f0: 20 7b 78 20 67 20 65 20 67 20 61 20 73 20 73 20   {x g e g a s s 
0700: 68 20 6e 7d 0a 20 20 20 20 31 36 20 20 7b 6b 20  h n}.    16  {k 
0710: 73 20 71 20 65 20 6a 20 6e 20 70 7d 20 20 20 20  s q e j n p}    
0720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0730: 20 7b 74 20 72 20 6a 20 66 20 74 20 6f 20 65 20   {t r j f t o e 
0740: 6b 20 6b 20 6c 20 6d 20 69 7d 0a 20 20 20 20 31  k k l m i}.    1
0750: 37 20 20 7b 67 20 64 20 74 20 75 20 77 20 72 20  7  {g d t u w r 
0760: 6f 20 70 20 6d 20 6e 20 6d 20 6e 20 70 20 68 20  o p m n m n p h 
0770: 62 20 6f 20 75 7d 20 7b 68 20 73 20 77 20 6f 20  b o u} {h s w o 
0780: 73 20 6c 20 6a 20 65 7d 0a 20 20 20 20 31 38 20  s l j e}.    18 
0790: 20 7b 66 20 6c 20 71 20 79 20 71 20 71 20 67 20   {f l q y q q g 
07a0: 65 20 65 20 78 20 6a 20 72 7d 20 20 20 20 20 20  e e x j r}      
07b0: 20 20 20 20 20 7b 6e 20 62 20 72 20 72 20 67 20       {n b r r g 
07c0: 65 20 69 20 72 20 74 20 78 20 71 20 6b 7d 0a 20  e i r t x q k}. 
07d0: 20 20 20 31 39 20 20 7b 66 20 69 20 72 20 67 20     19  {f i r g 
07e0: 6f 20 61 20 77 20 65 20 70 20 69 20 6c 20 6f 20  o a w e p i l o 
07f0: 61 20 77 7d 20 20 20 20 20 20 20 7b 65 20 6b 20  a w}       {e k 
0800: 72 20 7a 20 74 20 64 20 67 20 68 20 67 20 69 20  r z t d g h g i 
0810: 62 20 64 20 69 20 65 20 6d 7d 0a 20 20 20 20 32  b d i e m}.    2
0820: 30 20 20 7b 6c 20 64 20 75 20 75 20 66 20 70 20  0  {l d u u f p 
0830: 79 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y}              
0840: 20 20 20 20 20 20 20 7b 67 20 6f 20 6d 20 6d 20         {g o m m 
0850: 75 20 78 20 6d 20 67 20 6c 20 6a 20 74 20 74 20  u x m g l j t t 
0860: 78 20 78 20 75 7d 0a 20 20 20 20 32 31 20 20 7b  x x u}.    21  {
0870: 6d 20 63 20 64 20 6b 20 78 20 69 20 63 20 7a 20  m c d k x i c z 
0880: 6c 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  l}              
0890: 20 20 20 7b 6d 20 69 20 61 20 69 20 65 20 75 20     {m i a i e u 
08a0: 68 7d 0a 20 20 20 20 32 32 20 20 7b 77 20 62 20  h}.    22  {w b 
08b0: 66 20 6f 20 63 20 67 20 78 20 79 20 6a 7d 20 20  f o c g x y j}  
08c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
08d0: 7a 20 64 20 77 20 78 20 64 20 66 20 68 20 69 20  z d w x d f h i 
08e0: 70 7d 0a 20 20 20 20 32 33 20 20 7b 77 20 75 20  p}.    23  {w u 
08f0: 69 20 75 20 78 20 74 20 63 20 68 20 6b 20 69 20  i u x t c h k i 
0900: 62 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  b}             {
0910: 62 20 79 20 6b 20 68 20 62 20 76 20 72 20 74 20  b y k h b v r t 
0920: 67 20 6a 7d 0a 20 20 20 20 32 34 20 20 7b 68 20  g j}.    24  {h 
0930: 66 20 64 20 6a 20 73 20 77 20 73 20 62 20 61 20  f d j s w s b a 
0940: 70 20 6b 7d 20 20 20 20 20 20 20 20 20 20 20 20  p k}            
0950: 20 7b 61 20 71 20 79 20 75 20 7a 20 65 20 79 20   {a q y u z e y 
0960: 6d 20 6d 20 6a 20 71 20 72 7d 0a 20 20 20 20 32  m m j q r}.    2
0970: 35 20 20 7b 64 20 69 20 78 20 79 20 78 20 78 20  5  {d i x y x x 
0980: 6b 20 69 20 79 20 66 20 73 20 64 20 6a 20 68 20  k i y f s d j h 
0990: 7a 20 70 20 6e 7d 20 7b 6c 20 6c 20 71 20 6d 20  z p n} {l l q m 
09a0: 65 20 74 20 63 20 77 20 67 20 79 20 68 20 74 20  e t c w g y h t 
09b0: 73 20 76 20 67 7d 0a 20 20 20 20 32 36 20 20 7b  s v g}.    26  {
09c0: 67 20 73 20 71 20 77 20 74 20 64 20 6b 20 78 20  g s q w t d k x 
09d0: 67 20 66 20 6d 20 6a 20 70 20 6b 20 79 7d 20 20  g f m j p k y}  
09e0: 20 20 20 7b 72 20 6d 20 62 20 78 20 65 20 6c 20     {r m b x e l 
09f0: 74 20 64 7d 0a 20 20 20 20 32 37 20 20 7b 6a 20  t d}.    27  {j 
0a00: 6c 20 73 20 71 20 75 20 67 20 79 20 76 20 65 20  l s q u g y v e 
0a10: 63 20 6c 20 6f 7d 20 20 20 20 20 20 20 20 20 20  c l o}          
0a20: 20 7b 6d 20 66 20 6c 20 6d 20 6d 20 6d 20 68 20   {m f l m m m h 
0a30: 67 20 78 20 78 20 6c 20 6e 20 63 7d 0a 20 20 20  g x x l n c}.   
0a40: 20 32 38 20 20 7b 63 20 74 20 6a 20 67 20 76 20   28  {c t j g v 
0a50: 72 20 73 20 62 20 7a 20 6a 7d 20 20 20 20 20 20  r s b z j}      
0a60: 20 20 20 20 20 20 20 20 20 7b 6c 20 63 20 66 20           {l c f 
0a70: 79 20 64 20 74 20 71 20 6e 7d 0a 20 20 20 20 32  y d t q n}.    2
0a80: 39 20 20 7b 65 20 78 20 7a 20 79 20 77 20 69 20  9  {e x z y w i 
0a90: 68 20 6c 7d 20 20 20 20 20 20 20 20 20 20 20 20  h l}            
0aa0: 20 20 20 20 20 20 20 7b 62 20 6e 20 62 20 78 20         {b n b x 
0ab0: 65 20 79 20 71 20 65 20 6e 20 75 20 6d 7d 0a 20  e y q e n u m}. 
0ac0: 20 20 20 33 30 20 20 7b 67 20 79 20 79 20 68 20     30  {g y y h 
0ad0: 6a 20 62 20 77 20 72 7d 20 20 20 20 20 20 20 20  j b w r}        
0ae0: 20 20 20 20 20 20 20 20 20 20 20 7b 71 20 62 20             {q b 
0af0: 71 20 66 20 75 20 73 20 6b 20 63 20 6b 20 67 20  q f u s k c k g 
0b00: 72 7d 0a 20 20 20 20 33 31 20 20 7b 67 20 75 20  r}.    31  {g u 
0b10: 6c 20 78 20 6c 20 62 20 72 20 63 20 6d 20 7a 20  l x l b r c m z 
0b20: 62 20 75 20 63 7d 20 20 20 20 20 20 20 20 20 7b  b u c}         {
0b30: 6b 20 67 20 74 20 62 20 78 20 6b 20 78 20 6e 20  k g t b x k x n 
0b40: 74 20 65 20 7a 20 64 20 68 20 6f 7d 0a 20 20 20  t e z d h o}.   
0b50: 20 33 32 20 20 7b 77 20 67 20 76 20 6c 20 7a 20   32  {w g v l z 
0b60: 66 20 62 20 7a 20 68 20 70 20 73 20 63 20 76 20  f b z h p s c v 
0b70: 68 7d 20 20 20 20 20 20 20 7b 67 20 65 20 77 20  h}       {g e w 
0b80: 76 20 6d 20 68 20 6b 20 72 20 67 20 77 20 61 20  v m h k r g w a 
0b90: 72 20 66 20 71 7d 0a 20 20 20 20 33 33 20 20 7b  r f q}.    33  {
0ba0: 63 20 67 20 6e 20 66 20 75 20 64 20 6f 20 79 20  c g n f u d o y 
0bb0: 6f 20 62 7d 20 20 20 20 20 20 20 20 20 20 20 20  o b}            
0bc0: 20 20 20 7b 65 20 79 20 6f 20 68 20 78 20 78 20     {e y o h x x 
0bd0: 79 20 79 20 69 20 7a 20 73 20 62 20 68 20 61 20  y y i z s b h a 
0be0: 6a 7d 0a 20 20 20 20 33 34 20 20 7b 76 20 79 20  j}.    34  {v y 
0bf0: 68 20 63 20 71 20 75 20 75 20 73 20 71 20 79 20  h c q u u s q y 
0c00: 78 20 78 20 6b 20 73 20 71 7d 20 20 20 20 20 7b  x x k s q}     {
0c10: 64 20 6e 20 72 20 6d 20 79 20 6b 20 6e 20 74 20  d n r m y k n t 
0c20: 69 20 72 20 6e 20 77 20 65 7d 0a 20 20 20 20 33  i r n w e}.    3
0c30: 35 20 20 7b 6f 20 75 20 63 20 78 20 6c 20 65 20  5  {o u c x l e 
0c40: 62 20 74 20 61 7d 20 20 20 20 20 20 20 20 20 20  b t a}          
0c50: 20 20 20 20 20 20 20 7b 79 20 62 20 61 20 78 20         {y b a x 
0c60: 79 20 66 20 7a 20 78 20 72 7d 0a 20 20 20 20 33  y f z x r}.    3
0c70: 36 20 20 7b 78 20 70 20 68 20 6c 20 6a 20 61 20  6  {x p h l j a 
0c80: 61 20 75 20 75 20 6a 20 68 7d 20 20 20 20 20 20  a u u j h}      
0c90: 20 20 20 20 20 20 20 7b 78 20 6f 20 66 20 73 20         {x o f s 
0ca0: 7a 20 6d 20 62 20 63 20 71 20 70 7d 0a 20 20 20  z m b c q p}.   
0cb0: 20 33 37 20 20 7b 6b 20 71 20 74 20 69 20 63 20   37  {k q t i c 
0cc0: 61 20 71 20 6e 20 6d 20 76 20 76 7d 20 20 20 20  a q n m v v}    
0cd0: 20 20 20 20 20 20 20 20 20 7b 76 20 72 20 7a 20           {v r z 
0ce0: 65 20 66 20 6d 20 79 20 6f 7d 0a 20 20 20 20 33  e f m y o}.    3
0cf0: 38 20 20 7b 72 20 77 20 74 20 74 20 74 20 74 20  8  {r w t t t t 
0d00: 72 20 76 20 76 20 6f 20 65 20 70 20 67 20 68 7d  r v v o e p g h}
0d10: 20 20 20 20 20 20 20 7b 6c 20 77 20 78 20 61 20         {l w x a 
0d20: 67 20 61 20 75 20 68 20 79 7d 0a 20 20 20 20 33  g a u h y}.    3
0d30: 39 20 20 7b 6f 20 70 20 76 20 67 20 76 20 62 20  9  {o p v g v b 
0d40: 61 20 67 20 6f 7d 20 20 20 20 20 20 20 20 20 20  a g o}          
0d50: 20 20 20 20 20 20 20 7b 6a 20 74 20 71 20 63 20         {j t q c 
0d60: 72 20 62 20 62 20 67 20 79 20 7a 7d 0a 20 20 20  r b b g y z}.   
0d70: 20 34 30 20 20 7b 66 20 73 20 6f 20 72 20 6f 20   40  {f s o r o 
0d80: 64 20 74 20 68 20 71 20 66 20 78 20 6c 7d 20 20  d t h q f x l}  
0d90: 20 20 20 20 20 20 20 20 20 7b 72 20 64 20 62 20           {r d b 
0da0: 6d 20 6b 20 69 20 66 20 73 20 74 20 64 20 6c 20  m k i f s t d l 
0db0: 6d 20 79 20 78 20 6a 20 77 7d 0a 20 20 20 20 34  m y x j w}.    4
0dc0: 31 20 20 7b 74 20 6d 20 6f 20 74 20 6d 20 66 20  1  {t m o t m f 
0dd0: 6d 20 66 7d 20 20 20 20 20 20 20 20 20 20 20 20  m f}            
0de0: 20 20 20 20 20 20 20 7b 69 20 70 20 69 20 71 20         {i p i q 
0df0: 6a 20 76 20 6e 20 76 20 6d 20 62 20 71 7d 0a 20  j v n v m b q}. 
0e00: 20 20 20 34 32 20 20 7b 74 20 78 20 77 20 61 20     42  {t x w a 
0e10: 72 20 6c 20 77 20 64 20 74 20 62 20 63 20 6f 20  r l w d t b c o 
0e20: 64 20 6f 7d 20 20 20 20 20 20 20 7b 61 20 68 20  d o}       {a h 
0e30: 66 20 68 20 77 20 7a 20 64 20 6e 20 73 7d 0a 20  f h w z d n s}. 
0e40: 20 20 20 34 33 20 20 7b 74 20 75 20 71 20 63 20     43  {t u q c 
0e50: 64 20 67 20 70 20 71 20 78 20 6a 20 6f 20 6c 20  d g p q x j o l 
0e60: 63 20 78 20 63 7d 20 20 20 20 20 7b 6d 20 6e 20  c x c}     {m n 
0e70: 74 20 6f 20 7a 20 7a 20 6a 20 61 20 79 7d 0a 20  t o z z j a y}. 
0e80: 20 20 20 34 34 20 20 7b 76 20 64 20 69 20 69 20     44  {v d i i 
0e90: 6b 20 62 20 66 20 73 20 7a 20 72 20 76 20 72 20  k b f s z r v r 
0ea0: 7a 20 79 7d 20 20 20 20 20 20 20 7b 67 20 6e 20  z y}       {g n 
0eb0: 71 20 79 20 73 20 78 20 78 20 6d 20 62 20 78 20  q y s x x m b x 
0ec0: 63 20 6c 20 77 7d 0a 20 20 20 20 34 35 20 20 7b  c l w}.    45  {
0ed0: 70 20 76 20 76 20 61 20 63 20 73 20 7a 20 79 20  p v v a c s z y 
0ee0: 65 20 6f 20 6c 7d 20 20 20 20 20 20 20 20 20 20  e o l}          
0ef0: 20 20 20 7b 6d 20 76 20 74 20 75 20 64 20 6b 20     {m v t u d k 
0f00: 6d 20 6b 20 71 20 62 20 64 20 63 20 76 20 7a 20  m k q b d c v z 
0f10: 72 7d 0a 20 20 20 20 34 36 20 20 7b 66 20 79 20  r}.    46  {f y 
0f20: 6b 20 6c 20 64 20 72 20 71 20 77 20 72 20 73 20  k l d r q w r s 
0f30: 74 20 72 20 65 7d 20 20 20 20 20 20 20 20 20 7b  t r e}         {
0f40: 68 20 6d 20 76 20 72 20 72 20 6c 20 72 20 72 20  h m v r r l r r 
0f50: 74 20 66 20 71 20 65 20 78 20 79 7d 0a 20 20 20  t f q e x y}.   
0f60: 20 34 37 20 20 7b 77 20 6c 20 6e 20 6c 20 74 20   47  {w l n l t 
0f70: 79 20 78 7d 20 20 20 20 20 20 20 20 20 20 20 20  y x}            
0f80: 20 20 20 20 20 20 20 20 20 7b 6e 20 68 20 73 20           {n h s 
0f90: 6c 20 61 20 66 20 63 20 68 20 75 20 66 20 6c 20  l a f c h u f l 
0fa0: 78 20 78 20 6d 20 76 20 6e 20 6f 7d 0a 20 20 20  x x m v n o}.   
0fb0: 20 34 38 20 20 7b 74 20 6e 20 76 20 69 20 6b 20   48  {t n v i k 
0fc0: 65 20 62 20 70 20 7a 20 70 20 64 20 6a 20 6a 20  e b p z p d j j 
0fd0: 6c 20 69 20 6f 7d 20 20 20 7b 69 20 76 20 7a 20  l i o}   {i v z 
0fe0: 70 20 67 20 75 20 65 20 6a 20 73 20 69 20 6b 20  p g u e j s i k 
0ff0: 6e 20 68 20 77 20 64 20 63 7d 0a 20 20 20 20 34  n h w d c}.    4
1000: 39 20 20 7b 7a 20 76 20 78 20 70 20 6e 20 6c 20  9  {z v x p n l 
1010: 74 20 61 20 6a 20 63 7d 20 20 20 20 20 20 20 20  t a j c}        
1020: 20 20 20 20 20 20 20 7b 65 20 6a 20 6c 20 65 20         {e j l e 
1030: 6e 20 63 20 65 20 74 20 61 20 64 7d 0a 20 20 20  n c e t a d}.   
1040: 20 35 30 20 20 7b 77 20 75 20 62 20 78 20 75 20   50  {w u b x u 
1050: 69 20 76 20 68 20 61 20 69 20 79 20 6d 20 6d 20  i v h a i y m m 
1060: 72 20 70 20 6d 20 73 7d 20 7b 73 20 72 20 68 20  r p m s} {s r h 
1070: 64 20 6f 20 67 20 7a 20 79 20 66 20 66 20 78 20  d o g z y f f x 
1080: 65 7d 0a 20 20 20 20 35 31 20 20 7b 64 20 63 20  e}.    51  {d c 
1090: 63 20 78 20 62 20 63 20 61 20 78 20 67 7d 20 20  c x b c a x g}  
10a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10b0: 70 20 72 20 61 20 6a 20 76 20 75 20 79 7d 0a 20  p r a j v u y}. 
10c0: 20 20 20 35 32 20 20 7b 66 20 77 20 67 20 72 20     52  {f w g r 
10d0: 63 20 6f 20 64 20 6c 20 74 20 75 20 65 20 7a 20  c o d l t u e z 
10e0: 68 20 69 7d 20 20 20 20 20 20 20 7b 6a 20 6c 20  h i}       {j l 
10f0: 6c 20 73 20 73 20 62 20 6a 20 6d 7d 0a 20 20 20  l s s b j m}.   
1100: 20 35 33 20 20 7b 70 20 6d 20 74 20 66 20 6b 20   53  {p m t f k 
1110: 69 20 78 7d 20 20 20 20 20 20 20 20 20 20 20 20  i x}            
1120: 20 20 20 20 20 20 20 20 20 7b 75 20 76 20 79 20           {u v y 
1130: 61 20 7a 20 67 20 77 20 76 20 76 20 6d 20 78 20  a z g w v v m x 
1140: 68 20 69 7d 0a 20 20 20 20 35 34 20 20 7b 6c 20  h i}.    54  {l 
1150: 63 20 7a 20 67 20 6c 20 6f 20 6a 20 69 20 63 20  c z g l o j i c 
1160: 64 20 65 20 62 7d 20 20 20 20 20 20 20 20 20 20  d e b}          
1170: 20 7b 62 20 66 20 76 20 79 20 77 20 75 20 69 20   {b f v y w u i 
1180: 62 20 65 20 69 20 79 7d 0a 20 20 20 20 35 35 20  b e i y}.    55 
1190: 20 7b 72 20 68 20 63 20 78 20 66 20 78 20 61 20   {r h c x f x a 
11a0: 64 20 73 7d 20 20 20 20 20 20 20 20 20 20 20 20  d s}            
11b0: 20 20 20 20 20 7b 7a 20 78 20 79 20 6b 20 66 20       {z x y k f 
11c0: 6c 20 72 20 62 20 71 20 63 20 76 7d 0a 20 20 20  l r b q c v}.   
11d0: 20 35 36 20 20 7b 76 20 78 20 78 20 63 20 79 20   56  {v x x c y 
11e0: 68 20 7a 20 78 20 62 20 67 20 6d 20 6f 20 71 20  h z x b g m o q 
11f0: 6e 20 63 7d 20 20 20 20 20 7b 68 20 6e 20 62 20  n c}     {h n b 
1200: 69 20 74 20 67 20 68 20 61 20 71 20 62 20 63 20  i t g h a q b c 
1210: 6f 20 72 20 75 7d 0a 20 20 20 20 35 37 20 20 7b  o r u}.    57  {
1220: 64 20 67 20 6c 20 6f 20 68 20 74 20 62 20 73 20  d g l o h t b s 
1230: 62 20 72 7d 20 20 20 20 20 20 20 20 20 20 20 20  b r}            
1240: 20 20 20 7b 6e 20 75 20 65 20 70 20 74 20 69 20     {n u e p t i 
1250: 6d 20 75 7d 0a 20 20 20 20 35 38 20 20 7b 74 20  m u}.    58  {t 
1260: 64 20 79 20 65 20 74 20 64 20 63 20 77 20 75 20  d y e t d c w u 
1270: 6f 20 73 20 77 20 78 20 66 20 63 20 68 7d 20 20  o s w x f c h}  
1280: 20 7b 69 20 6f 20 73 20 76 20 79 20 62 20 72 20   {i o s v y b r 
1290: 64 20 72 7d 0a 20 20 20 20 35 39 20 20 7b 6c 20  d r}.    59  {l 
12a0: 62 20 61 20 70 20 71 20 6e 20 64 20 72 7d 20 20  b a p q n d r}  
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c0: 20 7b 6b 20 64 20 63 20 63 20 64 20 6e 20 79 20   {k d c c d n y 
12d0: 71 20 68 20 67 20 61 20 6f 20 70 20 65 20 78 7d  q h g a o p e x}
12e0: 0a 20 20 20 20 36 30 20 20 7b 66 20 72 20 7a 20  .    60  {f r z 
12f0: 76 20 6d 20 70 20 6b 20 72 7d 20 20 20 20 20 20  v m p k r}      
1300: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 78 20               {x 
1310: 78 20 72 20 69 20 73 20 62 20 61 20 67 20 66 20  x r i s b a g f 
1320: 63 7d 0a 20 20 20 20 36 31 20 20 7b 73 20 61 20  c}.    61  {s a 
1330: 7a 20 69 20 65 20 72 20 66 20 69 20 77 20 63 20  z i e r f i w c 
1340: 6e 20 79 20 76 20 7a 20 74 20 6b 20 73 7d 20 7b  n y v z t k s} {
1350: 79 20 79 20 69 20 72 20 79 20 6e 20 6c 20 73 20  y y i r y n l s 
1360: 62 20 77 20 69 20 65 20 6b 20 6e 7d 0a 20 20 20  b w i e k n}.   
1370: 20 36 32 20 20 7b 6e 20 78 20 70 20 72 20 65 20   62  {n x p r e 
1380: 78 20 71 20 72 20 6d 20 76 20 69 20 62 20 79 7d  x q r m v i b y}
1390: 20 20 20 20 20 20 20 20 20 7b 66 20 6f 20 6f 20           {f o o 
13a0: 7a 20 6e 20 62 20 73 20 72 20 71 20 6a 7d 0a 20  z n b s r q j}. 
13b0: 20 20 20 36 33 20 20 7b 79 20 6a 20 73 20 75 20     63  {y j s u 
13c0: 6a 20 78 20 6f 20 6e 20 72 20 71 20 74 20 66 7d  j x o n r q t f}
13d0: 20 20 20 20 20 20 20 20 20 20 20 7b 66 20 76 20             {f v 
13e0: 6b 20 6e 20 76 20 78 20 75 20 73 20 6f 20 61 20  k n v x u s o a 
13f0: 64 20 65 20 66 20 65 7d 0a 20 20 20 20 36 34 20  d e f e}.    64 
1400: 20 7b 75 20 73 20 69 20 6c 20 79 20 63 20 78 20   {u s i l y c x 
1410: 71 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  q}              
1420: 20 20 20 20 20 7b 72 20 6b 20 63 20 68 20 70 20       {r k c h p 
1430: 63 20 68 20 62 20 6f 20 73 20 73 20 75 20 73 20  c h b o s s u s 
1440: 70 20 62 7d 0a 20 20 20 20 36 35 20 20 7b 6d 20  p b}.    65  {m 
1450: 70 20 69 20 6f 20 73 20 68 20 6f 7d 20 20 20 20  p i o s h o}    
1460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1470: 20 7b 73 20 77 20 68 20 75 20 6e 20 64 20 6d 20   {s w h u n d m 
1480: 6e 20 71 20 74 20 79 20 6b 20 62 20 77 20 63 7d  n q t y k b w c}
1490: 0a 20 20 20 20 36 36 20 20 7b 6c 20 64 20 66 20  .    66  {l d f 
14a0: 67 20 6d 20 78 20 78 20 78 20 6f 7d 20 20 20 20  g m x x x o}    
14b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 73 20               {s 
14c0: 77 20 64 20 64 20 66 20 62 20 79 20 6a 20 6a 20  w d d f b y j j 
14d0: 68 20 68 20 74 20 69 20 79 20 70 20 6a 20 6f 7d  h h t i y p j o}
14e0: 0a 20 20 20 20 36 37 20 20 7b 63 20 62 20 6d 20  .    67  {c b m 
14f0: 68 20 66 20 6e 20 76 20 77 20 6e 20 68 7d 20 20  h f n v w n h}  
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 69 20               {i 
1510: 72 20 77 20 69 20 65 20 78 20 72 20 77 20 6c 20  r w i e x r w l 
1520: 7a 20 70 20 78 20 75 20 67 20 75 20 6c 20 73 7d  z p x u g u l s}
1530: 0a 20 20 20 20 36 38 20 20 7b 79 20 61 20 68 20  .    68  {y a h 
1540: 75 20 68 20 69 20 6d 20 61 20 79 20 71 7d 20 20  u h i m a y q}  
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 64 20               {d 
1560: 64 20 72 20 78 20 68 20 65 20 76 20 71 20 6e 20  d r x h e v q n 
1570: 7a 20 79 20 63 20 6a 7d 0a 20 20 20 20 36 39 20  z y c j}.    69 
1580: 20 7b 63 20 78 20 66 20 64 20 78 20 6f 20 6e 20   {c x f d x o n 
1590: 70 20 6f 20 62 20 72 20 74 20 62 20 6c 20 70 20  p o b r t b l p 
15a0: 6c 7d 20 20 20 7b 6d 20 69 20 74 20 6b 20 62 20  l}   {m i t k b 
15b0: 78 20 76 20 66 20 70 20 74 20 6d 20 6c 20 6c 20  x v f p t m l l 
15c0: 79 20 72 20 6f 7d 0a 20 20 20 20 37 30 20 20 7b  y r o}.    70  {
15d0: 75 20 74 20 6c 20 77 20 77 20 6d 20 73 7d 20 20  u t l w w m s}  
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f0: 20 20 20 7b 6d 20 66 20 6d 20 6f 20 6c 20 74 20     {m f m o l t 
1600: 6b 20 6f 20 70 20 65 7d 0a 20 20 20 20 37 31 20  k o p e}.    71 
1610: 20 7b 66 20 67 20 71 20 65 20 6c 20 6e 20 64 20   {f g q e l n d 
1620: 6d 20 7a 20 78 20 71 7d 20 20 20 20 20 20 20 20  m z x q}        
1630: 20 20 20 20 20 7b 7a 20 73 20 69 20 69 20 69 20       {z s i i i 
1640: 6d 20 66 20 77 20 77 20 66 20 6e 20 67 20 70 20  m f w w f n g p 
1650: 65 20 71 7d 0a 20 20 20 20 37 32 20 20 7b 6e 20  e q}.    72  {n 
1660: 6c 20 68 20 61 20 76 20 75 20 6f 20 64 20 66 20  l h a v u o d f 
1670: 6a 20 64 20 65 20 78 7d 20 20 20 20 20 20 20 20  j d e x}        
1680: 20 7b 76 20 76 20 73 20 6c 20 66 20 67 20 64 20   {v v s l f g d 
1690: 67 20 72 20 61 20 6a 20 78 20 69 20 66 20 7a 20  g r a j x i f z 
16a0: 78 7d 0a 20 20 20 20 37 33 20 20 7b 78 20 76 20  x}.    73  {x v 
16b0: 6d 20 76 20 66 20 69 20 67 20 71 20 65 20 77 7d  m v f i g q e w}
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
16d0: 72 20 79 20 73 20 6a 20 69 20 6b 20 6d 20 6a 20  r y s j i k m j 
16e0: 6a 20 65 20 64 20 67 20 72 20 6e 20 6f 20 69 20  j e d g r n o i 
16f0: 66 7d 0a 20 20 20 20 37 34 20 20 7b 67 20 64 20  f}.    74  {g d 
1700: 79 20 6e 20 6f 20 68 20 70 20 73 20 79 20 71 20  y n o h p s y q 
1710: 7a 20 6a 20 64 20 77 20 6e 20 68 20 77 7d 20 7b  z j d w n h w} {
1720: 78 20 6f 20 64 20 6c 20 74 20 6a 20 69 20 62 20  x o d l t j i b 
1730: 72 20 64 20 6f 20 72 20 79 7d 0a 20 20 20 20 37  r d o r y}.    7
1740: 35 20 20 7b 70 20 67 20 62 20 69 20 75 20 72 20  5  {p g b i u r 
1750: 62 20 65 20 71 20 64 20 76 20 6f 20 61 20 67 20  b e q d v o a g 
1760: 77 20 6d 20 6b 7d 20 7b 71 20 79 20 7a 20 73 20  w m k} {q y z s 
1770: 66 20 71 20 6f 20 68 7d 0a 20 20 20 20 37 36 20  f q o h}.    76 
1780: 20 7b 75 20 7a 20 61 20 71 20 75 20 66 20 69 20   {u z a q u f i 
1790: 66 20 66 20 62 7d 20 20 20 20 20 20 20 20 20 20  f f b}          
17a0: 20 20 20 20 20 7b 62 20 73 20 70 20 62 20 61 20       {b s p b a 
17b0: 61 20 64 20 78 20 72 20 72 20 69 20 71 20 66 7d  a d x r r i q f}
17c0: 0a 20 20 20 20 37 37 20 20 7b 77 20 68 20 68 20  .    77  {w h h 
17d0: 7a 20 74 20 68 20 70 20 6f 20 61 20 68 20 68 20  z t h p o a h h 
17e0: 65 20 65 7d 20 20 20 20 20 20 20 20 20 7b 68 20  e e}         {h 
17f0: 77 20 72 20 70 20 68 20 6b 20 7a 20 76 20 79 20  w r p h k z v y 
1800: 66 20 72 20 78 7d 0a 20 20 20 20 37 38 20 20 7b  f r x}.    78  {
1810: 63 20 61 20 72 20 6b 20 69 20 61 20 70 20 75 20  c a r k i a p u 
1820: 78 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  x}              
1830: 20 20 20 7b 66 20 77 20 6c 20 70 20 74 20 65 20     {f w l p t e 
1840: 6d 20 6c 7d 0a 20 20 20 20 37 39 20 20 7b 71 20  m l}.    79  {q 
1850: 71 20 75 20 6b 20 6f 20 74 20 72 20 6b 20 7a 7d  q u k o t r k z}
1860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1870: 20 7b 66 20 62 20 6d 20 63 20 77 20 70 20 73 20   {f b m c w p s 
1880: 73 20 6f 20 7a 7d 0a 20 20 20 20 38 30 20 20 7b  s o z}.    80  {
1890: 74 20 69 20 67 20 76 20 79 20 71 20 73 20 72 20  t i g v y q s r 
18a0: 78 20 6d 20 72 20 78 20 7a 20 65 20 66 7d 20 20  x m r x z e f}  
18b0: 20 20 20 7b 78 20 6f 20 6a 20 77 20 61 20 75 20     {x o j w a u 
18c0: 65 20 79 20 73 20 6a 20 63 20 62 20 75 20 70 20  e y s j c b u p 
18d0: 70 20 72 20 6f 7d 0a 20 20 20 20 38 31 20 20 7b  p r o}.    81  {
18e0: 6e 20 6a 20 6e 20 68 20 72 20 6c 20 61 20 72 20  n j n h r l a r 
18f0: 65 20 6f 20 7a 20 77 20 65 7d 20 20 20 20 20 20  e o z w e}      
1900: 20 20 20 7b 76 20 6f 20 72 20 72 20 6a 20 61 20     {v o r r j a 
1910: 76 20 62 7d 0a 20 20 20 20 38 32 20 20 7b 69 20  v b}.    82  {i 
1920: 66 20 69 20 64 20 6b 20 77 20 64 20 6e 20 68 7d  f i d k w d n h}
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1940: 20 7b 6f 20 69 20 64 20 7a 20 69 20 7a 20 6c 20   {o i d z i z l 
1950: 6d 20 77 20 73 20 62 20 71 20 76 20 75 7d 0a 20  m w s b q v u}. 
1960: 20 20 20 38 33 20 20 7b 6d 20 64 20 67 20 71 20     83  {m d g q 
1970: 71 20 62 20 6b 20 62 20 77 20 66 20 71 20 71 20  q b k b w f q q 
1980: 70 20 70 7d 20 20 20 20 20 20 20 7b 6a 20 6d 20  p p}       {j m 
1990: 71 20 66 20 62 20 79 20 63 20 69 20 7a 20 6b 20  q f b y c i z k 
19a0: 79 20 71 20 70 20 6c 20 65 20 61 7d 0a 20 20 20  y q p l e a}.   
19b0: 20 38 34 20 20 7b 6d 20 78 20 6f 20 6e 20 79 20   84  {m x o n y 
19c0: 66 20 67 7d 20 20 20 20 20 20 20 20 20 20 20 20  f g}            
19d0: 20 20 20 20 20 20 20 20 20 7b 79 20 63 20 6e 20           {y c n 
19e0: 78 20 6e 20 71 20 6a 20 69 20 79 20 63 20 6c 20  x n q j i y c l 
19f0: 68 20 62 20 72 20 71 20 7a 7d 0a 20 20 20 20 38  h b r q z}.    8
1a00: 35 20 20 7b 76 20 6f 20 7a 20 6c 20 6e 20 70 20  5  {v o z l n p 
1a10: 63 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  c}              
1a20: 20 20 20 20 20 20 20 7b 67 20 6e 20 6a 20 6e 20         {g n j n 
1a30: 74 20 62 20 62 20 78 20 6e 20 63 20 6c 20 64 20  t b b x n c l d 
1a40: 61 20 67 20 6a 20 76 7d 0a 20 20 20 20 38 36 20  a g j v}.    86 
1a50: 20 7b 7a 20 6e 20 61 20 79 20 66 20 62 20 74 20   {z n a y f b t 
1a60: 6b 20 6b 20 74 20 64 20 62 20 7a 20 61 20 76 7d  k k t d b z a v}
1a70: 20 20 20 20 20 7b 72 20 70 20 63 20 6e 20 72 20       {r p c n r 
1a80: 75 20 6b 20 75 7d 0a 20 20 20 20 38 37 20 20 7b  u k u}.    87  {
1a90: 62 20 71 20 74 20 78 20 7a 20 65 20 63 20 77 7d  b q t x z e c w}
1aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ab0: 20 20 20 7b 71 20 61 20 6f 20 61 20 6c 20 6f 20     {q a o a l o 
1ac0: 61 20 68 20 69 20 6d 20 6a 20 72 7d 0a 20 20 20  a h i m j r}.   
1ad0: 20 38 38 20 20 7b 6a 20 66 20 68 20 6f 20 78 20   88  {j f h o x 
1ae0: 78 20 61 20 7a 20 67 20 62 20 61 20 66 20 61 20  x a z g b a f a 
1af0: 6d 20 69 20 62 7d 20 20 20 7b 6a 20 7a 20 63 20  m i b}   {j z c 
1b00: 7a 20 79 20 78 20 65 20 78 20 77 20 74 7d 0a 20  z y x e x w t}. 
1b10: 20 20 20 38 39 20 20 7b 74 20 63 20 74 20 70 20     89  {t c t p 
1b20: 72 20 73 20 75 20 63 20 71 20 6e 7d 20 20 20 20  r s u c q n}    
1b30: 20 20 20 20 20 20 20 20 20 20 20 7b 7a 20 78 20             {z x 
1b40: 6c 20 69 20 6b 20 6e 20 66 20 71 20 6c 20 6e 20  l i k n f q l n 
1b50: 74 7d 0a 20 20 20 20 39 30 20 20 7b 77 20 74 20  t}.    90  {w t 
1b60: 64 20 71 20 6a 20 67 20 6d 20 72 20 66 20 6b 20  d q j g m r f k 
1b70: 6e 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  n}             {
1b80: 6c 20 65 20 77 20 66 20 77 20 77 20 61 20 6c 20  l e w f w w a l 
1b90: 79 20 71 20 6b 20 69 20 71 20 74 20 70 20 63 20  y q k i q t p c 
1ba0: 74 7d 0a 20 20 20 20 39 31 20 20 7b 63 20 62 20  t}.    91  {c b 
1bb0: 6f 20 6b 20 6c 20 69 20 63 20 62 20 73 20 6a 20  o k l i c b s j 
1bc0: 6e 20 6d 20 62 20 6c 7d 20 20 20 20 20 20 20 7b  n m b l}       {
1bd0: 79 20 66 20 70 20 71 20 6f 20 77 20 67 7d 0a 20  y f p q o w g}. 
1be0: 20 20 20 39 32 20 20 7b 66 20 79 20 64 20 6a 20     92  {f y d j 
1bf0: 6f 20 71 20 74 20 63 20 63 20 71 20 6d 20 66 20  o q t c c q m f 
1c00: 6a 20 73 20 74 7d 20 20 20 20 20 7b 66 20 68 20  j s t}     {f h 
1c10: 65 20 64 20 79 20 6d 20 6f 20 6b 7d 0a 20 20 20  e d y m o k}.   
1c20: 20 39 33 20 20 7b 6b 20 78 20 6a 20 72 20 6d 20   93  {k x j r m 
1c30: 61 20 64 20 6f 20 69 20 7a 20 6a 7d 20 20 20 20  a d o i z j}    
1c40: 20 20 20 20 20 20 20 20 20 7b 72 20 74 20 74 20           {r t t 
1c50: 74 20 66 20 65 20 62 20 72 20 78 20 69 20 76 20  t f e b r x i v 
1c60: 6a 20 76 20 67 20 6f 7d 0a 20 20 20 20 39 34 20  j v g o}.    94 
1c70: 20 7b 73 20 66 20 65 20 61 20 65 20 74 20 69 20   {s f e a e t i 
1c80: 68 20 68 20 64 20 71 20 70 20 7a 20 74 20 71 7d  h h d q p z t q}
1c90: 20 20 20 20 20 7b 62 20 6b 20 6d 20 6b 20 77 20       {b k m k w 
1ca0: 68 20 63 7d 0a 20 20 20 20 39 35 20 20 7b 68 20  h c}.    95  {h 
1cb0: 62 20 6e 20 6a 20 74 20 6b 20 69 20 68 20 6f 20  b n j t k i h o 
1cc0: 71 20 75 7d 20 20 20 20 20 20 20 20 20 20 20 20  q u}            
1cd0: 20 7b 77 20 6e 20 67 20 69 20 74 20 6f 20 6b 20   {w n g i t o k 
1ce0: 63 20 61 20 6d 20 79 20 70 20 66 20 6c 20 78 20  c a m y p f l x 
1cf0: 63 20 70 7d 0a 20 20 20 20 39 36 20 20 7b 66 20  c p}.    96  {f 
1d00: 63 20 78 20 70 20 79 20 72 20 62 20 6d 20 6f 20  c x p y r b m o 
1d10: 6c 20 6d 20 6f 20 61 7d 20 20 20 20 20 20 20 20  l m o a}        
1d20: 20 7b 70 20 63 20 61 20 71 20 73 20 75 20 6e 20   {p c a q s u n 
1d30: 6e 20 78 20 64 20 63 20 66 20 61 20 6f 7d 0a 20  n x d c f a o}. 
1d40: 20 20 20 39 37 20 20 7b 75 20 68 20 68 20 6b 20     97  {u h h k 
1d50: 6d 20 6e 20 6b 7d 20 20 20 20 20 20 20 20 20 20  m n k}          
1d60: 20 20 20 20 20 20 20 20 20 20 20 7b 75 20 62 20             {u b 
1d70: 76 20 6e 20 75 20 61 20 6f 20 63 7d 0a 20 20 20  v n u a o c}.   
1d80: 20 39 38 20 20 7b 73 20 70 20 65 20 74 20 63 20   98  {s p e t c 
1d90: 7a 20 64 20 66 20 6e 20 77 20 66 7d 20 20 20 20  z d f n w f}    
1da0: 20 20 20 20 20 20 20 20 20 7b 6c 20 73 20 66 20           {l s f 
1db0: 6a 20 62 20 6c 20 63 20 65 20 73 20 68 7d 0a 20  j b l c e s h}. 
1dc0: 20 20 20 39 39 20 20 7b 72 20 63 20 76 20 77 20     99  {r c v w 
1dd0: 69 20 76 20 68 20 61 20 74 20 61 20 63 20 76 20  i v h a t a c v 
1de0: 63 20 72 20 65 7d 20 20 20 20 20 7b 68 20 68 20  c r e}     {h h 
1df0: 75 20 6d 20 67 20 6f 20 66 20 62 20 61 20 65 20  u m g o f b a e 
1e00: 6f 7d 0a 7d 0a 0a 66 6f 72 65 61 63 68 20 7b 74  o}.}..foreach {t
1e10: 6e 32 20 73 71 6c 7d 20 7b 0a 20 20 31 20 20 7b  n2 sql} {.  1  {
1e20: 7d 0a 20 20 32 20 20 7b 42 45 47 49 4e 7d 0a 7d  }.  2  {BEGIN}.}
1e30: 20 7b 0a 20 20 72 65 73 65 74 5f 64 62 0a 20 20   {.  reset_db.  
1e40: 66 74 73 35 5f 61 75 78 5f 74 65 73 74 5f 66 75  fts5_aux_test_fu
1e50: 6e 63 74 69 6f 6e 73 20 64 62 0a 0a 20 20 64 6f  nctions db..  do
1e60: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e  _execsql_test 1.
1e70: 24 74 6e 32 2e 30 20 7b 0a 20 20 20 20 43 52 45  $tn2.0 {.    CRE
1e80: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
1e90: 45 20 78 78 20 55 53 49 4e 47 20 66 74 73 35 28  E xx USING fts5(
1ea0: 78 2c 79 2c 20 64 65 74 61 69 6c 3d 25 44 45 54  x,y, detail=%DET
1eb0: 41 49 4c 25 29 3b 0a 20 20 20 20 49 4e 53 45 52  AIL%);.    INSER
1ec0: 54 20 49 4e 54 4f 20 78 78 28 78 78 2c 20 72 61  T INTO xx(xx, ra
1ed0: 6e 6b 29 20 56 41 4c 55 45 53 28 27 70 67 73 7a  nk) VALUES('pgsz
1ee0: 27 2c 20 33 32 29 3b 0a 20 20 7d 0a 0a 20 20 65  ', 32);.  }..  e
1ef0: 78 65 63 73 71 6c 20 24 73 71 6c 0a 0a 20 20 64  xecsql $sql..  d
1f00: 6f 5f 74 65 73 74 20 31 2e 24 74 6e 32 2e 31 2e  o_test 1.$tn2.1.
1f10: 31 20 7b 0a 20 20 20 20 66 6f 72 65 61 63 68 20  1 {.    foreach 
1f20: 7b 69 64 20 78 20 79 7d 20 24 64 61 74 61 20 7b  {id x y} $data {
1f30: 0a 20 20 20 20 20 20 65 78 65 63 73 71 6c 20 7b  .      execsql {
1f40: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 78 28   INSERT INTO xx(
1f50: 72 6f 77 69 64 2c 20 78 2c 20 79 29 20 56 41 4c  rowid, x, y) VAL
1f60: 55 45 53 28 24 69 64 2c 20 24 78 2c 20 24 79 29  UES($id, $x, $y)
1f70: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 65 78 65   }.    }.    exe
1f80: 63 73 71 6c 20 7b 20 49 4e 53 45 52 54 20 49 4e  csql { INSERT IN
1f90: 54 4f 20 78 78 28 78 78 29 20 56 41 4c 55 45 53  TO xx(xx) VALUES
1fa0: 28 27 69 6e 74 65 67 72 69 74 79 2d 63 68 65 63  ('integrity-chec
1fb0: 6b 27 29 20 7d 0a 20 20 7d 20 7b 7d 0a 0a 0a 20  k') }.  } {}... 
1fc0: 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   #--------------
1fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 23 0a  -----------.  #.
2010: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
2020: 74 20 31 2e 24 74 6e 32 2e 69 6e 74 65 67 72 69  t 1.$tn2.integri
2030: 74 79 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20  ty {.    INSERT 
2040: 49 4e 54 4f 20 78 78 28 78 78 29 20 56 41 4c 55  INTO xx(xx) VALU
2050: 45 53 28 27 69 6e 74 65 67 72 69 74 79 2d 63 68  ES('integrity-ch
2060: 65 63 6b 27 29 3b 0a 20 20 7d 0a 0a 20 20 23 2d  eck');.  }..  #-
2070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
20a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
20b0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 23 0a 20 20 66  --------.  #.  f
20c0: 6f 72 65 61 63 68 20 7b 74 6e 20 65 78 70 72 7d  oreach {tn expr}
20d0: 20 7b 0a 20 20 20 20 31 2e 31 20 22 61 20 20 20   {.    1.1 "a   
20e0: 41 4e 44 20 62 22 0a 20 20 20 20 31 2e 32 20 22  AND b".    1.2 "
20f0: 61 20 20 20 4f 52 20 62 22 0a 20 20 20 20 31 2e  a   OR b".    1.
2100: 33 20 22 6f 22 0a 20 20 20 20 31 2e 34 20 22 62  3 "o".    1.4 "b
2110: 20 71 22 0a 20 20 20 20 31 2e 35 20 22 65 20 61   q".    1.5 "e a
2120: 20 65 22 0a 20 20 20 20 31 2e 36 20 22 6d 20 64   e".    1.6 "m d
2130: 20 67 20 71 20 71 20 62 20 6b 20 62 20 77 20 66   g q q b k b w f
2140: 20 71 20 71 20 70 20 70 22 0a 20 20 20 20 31 2e   q q p p".    1.
2150: 37 20 22 6c 20 6f 20 6f 20 6c 20 76 20 76 20 6b  7 "l o o l v v k
2160: 22 0a 20 20 20 20 31 2e 38 20 22 61 22 0a 20 20  ".    1.8 "a".  
2170: 20 20 31 2e 39 20 22 62 22 0a 20 20 20 20 31 2e    1.9 "b".    1.
2180: 31 30 20 22 63 22 0a 20 20 20 20 31 2e 31 31 20  10 "c".    1.11 
2190: 22 6e 6f 22 0a 20 20 20 20 31 2e 31 32 20 22 4c  "no".    1.12 "L
21a0: 20 4f 20 4f 20 4c 20 56 20 56 20 4b 22 0a 20 20   O O L V V K".  
21b0: 20 20 31 2e 31 33 20 22 61 20 41 4e 44 20 62 20    1.13 "a AND b 
21c0: 41 4e 44 20 63 22 0a 20 20 20 20 31 2e 31 34 20  AND c".    1.14 
21d0: 22 78 3a 61 22 0a 0a 20 20 20 20 32 2e 31 20 22  "x:a"..    2.1 "
21e0: 78 3a 61 22 0a 20 20 20 20 32 2e 32 20 22 79 3a  x:a".    2.2 "y:
21f0: 61 22 0a 20 20 20 20 32 2e 33 20 22 78 3a 62 22  a".    2.3 "x:b"
2200: 0a 20 20 20 20 32 2e 34 20 22 79 3a 62 22 0a 0a  .    2.4 "y:b"..
2210: 20 20 20 20 33 2e 31 20 22 7b 78 7d 3a 61 22 0a      3.1 "{x}:a".
2220: 20 20 20 20 33 2e 32 20 22 7b 79 7d 3a 61 22 0a      3.2 "{y}:a".
2230: 20 20 20 20 33 2e 33 20 22 7b 78 7d 3a 62 22 0a      3.3 "{x}:b".
2240: 20 20 20 20 33 2e 34 20 22 7b 79 7d 3a 62 22 0a      3.4 "{y}:b".
2250: 0a 20 20 20 20 34 2e 31 20 22 7b 78 20 79 7d 3a  .    4.1 "{x y}:
2260: 61 22 0a 20 20 20 20 34 2e 32 20 22 7b 79 20 78  a".    4.2 "{y x
2270: 7d 3a 61 22 0a 20 20 20 20 34 2e 33 20 22 7b 78  }:a".    4.3 "{x
2280: 20 78 7d 3a 62 22 0a 20 20 20 20 34 2e 34 20 22   x}:b".    4.4 "
2290: 7b 79 20 79 7d 3a 62 22 0a 0a 20 20 20 20 35 2e  {y y}:b"..    5.
22a0: 31 20 7b 7b 22 78 22 20 22 79 22 7d 3a 61 7d 0a  1 {{"x" "y"}:a}.
22b0: 20 20 20 20 35 2e 32 20 7b 7b 22 79 22 20 78 7d      5.2 {{"y" x}
22c0: 3a 61 7d 0a 20 20 20 20 35 2e 33 20 7b 7b 78 20  :a}.    5.3 {{x 
22d0: 22 78 22 7d 3a 62 7d 0a 20 20 20 20 35 2e 34 20  "x"}:b}.    5.4 
22e0: 7b 7b 22 79 22 20 79 7d 3a 62 7d 0a 0a 20 20 20  {{"y" y}:b}..   
22f0: 20 36 2e 31 20 22 62 20 2b 20 71 22 0a 20 20 20   6.1 "b + q".   
2300: 20 36 2e 32 20 22 65 20 2b 20 61 20 2b 20 65 22   6.2 "e + a + e"
2310: 0a 20 20 20 20 36 2e 33 20 22 6d 20 2b 20 64 20  .    6.3 "m + d 
2320: 2b 20 67 20 2b 20 71 20 2b 20 71 20 2b 20 62 20  + g + q + q + b 
2330: 2b 20 6b 20 2b 20 62 20 2b 20 77 20 2b 20 66 20  + k + b + w + f 
2340: 2b 20 71 20 2b 20 71 20 2b 20 70 20 2b 20 70 22  + q + q + p + p"
2350: 0a 20 20 20 20 36 2e 34 20 22 6c 20 2b 20 6f 20  .    6.4 "l + o 
2360: 2b 20 6f 20 2b 20 6c 20 2b 20 76 20 2b 20 76 20  + o + l + v + v 
2370: 2b 20 6b 22 0a 20 20 20 20 36 2e 35 20 22 4c 20  + k".    6.5 "L 
2380: 2b 20 4f 20 2b 20 4f 20 2b 20 4c 20 2b 20 56 20  + O + O + L + V 
2390: 2b 20 56 20 2b 20 4b 22 0a 0a 20 20 20 20 37 2e  + V + K"..    7.
23a0: 31 20 22 61 2b 62 20 41 4e 44 20 63 22 0a 20 20  1 "a+b AND c".  
23b0: 20 20 37 2e 32 20 22 64 2b 63 20 41 4e 44 20 75    7.2 "d+c AND u
23c0: 22 0a 20 20 20 20 37 2e 33 20 22 64 2b 63 20 41  ".    7.3 "d+c A
23d0: 4e 44 20 75 2b 64 22 0a 20 20 20 20 37 2e 34 20  ND u+d".    7.4 
23e0: 22 61 2b 62 20 4f 52 20 63 22 0a 20 20 20 20 37  "a+b OR c".    7
23f0: 2e 35 20 22 64 2b 63 20 4f 52 20 75 22 0a 20 20  .5 "d+c OR u".  
2400: 20 20 37 2e 36 20 22 64 2b 63 20 4f 52 20 75 2b    7.6 "d+c OR u+
2410: 64 22 0a 0a 20 20 20 20 38 2e 31 20 22 4e 45 41  d"..    8.1 "NEA
2420: 52 28 61 20 62 29 22 0a 20 20 20 20 38 2e 32 20  R(a b)".    8.2 
2430: 22 4e 45 41 52 28 72 20 63 29 22 0a 20 20 20 20  "NEAR(r c)".    
2440: 38 2e 32 20 7b 20 4e 45 41 52 28 72 20 63 2c 20  8.2 { NEAR(r c, 
2450: 35 29 20 7d 0a 20 20 20 20 38 2e 33 20 7b 20 4e  5) }.    8.3 { N
2460: 45 41 52 28 72 20 63 2c 20 33 29 20 7d 0a 20 20  EAR(r c, 3) }.  
2470: 20 20 38 2e 34 20 7b 20 4e 45 41 52 28 72 20 63    8.4 { NEAR(r c
2480: 2c 20 32 29 20 7d 0a 20 20 20 20 38 2e 35 20 7b  , 2) }.    8.5 {
2490: 20 4e 45 41 52 28 72 20 63 2c 20 30 29 20 7d 0a   NEAR(r c, 0) }.
24a0: 20 20 20 20 38 2e 36 20 7b 20 4e 45 41 52 28 61      8.6 { NEAR(a
24b0: 20 62 20 63 29 20 7d 0a 20 20 20 20 38 2e 37 20   b c) }.    8.7 
24c0: 7b 20 4e 45 41 52 28 61 20 62 20 63 2c 20 38 29  { NEAR(a b c, 8)
24d0: 20 7d 0a 20 20 20 20 38 2e 38 20 20 7b 20 78 20   }.    8.8  { x 
24e0: 3a 20 4e 45 41 52 28 72 20 63 29 20 7d 0a 20 20  : NEAR(r c) }.  
24f0: 20 20 38 2e 39 20 20 7b 20 79 20 3a 20 4e 45 41    8.9  { y : NEA
2500: 52 28 72 20 63 29 20 7d 0a 0a 20 20 20 20 39 2e  R(r c) }..    9.
2510: 31 20 7b 20 4e 45 41 52 28 72 20 63 29 20 7d 0a  1 { NEAR(r c) }.
2520: 20 20 20 20 39 2e 32 20 7b 20 4e 45 41 52 28 72      9.2 { NEAR(r
2530: 20 63 2c 20 35 29 20 7d 0a 20 20 20 20 39 2e 33   c, 5) }.    9.3
2540: 20 7b 20 4e 45 41 52 28 72 20 63 2c 20 33 29 20   { NEAR(r c, 3) 
2550: 7d 0a 20 20 20 20 39 2e 34 20 7b 20 4e 45 41 52  }.    9.4 { NEAR
2560: 28 72 20 63 2c 20 32 29 20 7d 0a 20 20 20 20 39  (r c, 2) }.    9
2570: 2e 35 20 7b 20 4e 45 41 52 28 72 20 63 2c 20 30  .5 { NEAR(r c, 0
2580: 29 20 7d 0a 20 20 20 20 39 2e 36 20 7b 20 4e 45  ) }.    9.6 { NE
2590: 41 52 28 61 20 62 20 63 29 20 7d 0a 20 20 20 20  AR(a b c) }.    
25a0: 39 2e 37 20 7b 20 4e 45 41 52 28 61 20 62 20 63  9.7 { NEAR(a b c
25b0: 2c 20 38 29 20 7d 0a 20 20 20 20 39 2e 38 20 20  , 8) }.    9.8  
25c0: 7b 20 78 20 3a 20 4e 45 41 52 28 72 20 63 29 20  { x : NEAR(r c) 
25d0: 7d 0a 20 20 20 20 39 2e 39 20 20 7b 20 79 20 3a  }.    9.9  { y :
25e0: 20 4e 45 41 52 28 72 20 63 29 20 7d 0a 20 20 20   NEAR(r c) }.   
25f0: 20 39 2e 31 30 20 7b 20 78 20 3a 20 22 72 20 63   9.10 { x : "r c
2600: 22 20 7d 0a 20 20 20 20 39 2e 31 31 20 7b 20 79  " }.    9.11 { y
2610: 20 3a 20 22 72 20 63 22 20 7d 0a 20 20 20 20 39   : "r c" }.    9
2620: 2e 31 32 20 7b 20 61 20 41 4e 44 20 62 20 7d 0a  .12 { a AND b }.
2630: 20 20 20 20 39 2e 31 33 20 7b 20 61 20 41 4e 44      9.13 { a AND
2640: 20 62 20 41 4e 44 20 63 20 7d 0a 20 20 20 20 39   b AND c }.    9
2650: 2e 31 34 61 20 7b 20 61 20 7d 0a 20 20 20 20 39  .14a { a }.    9
2660: 2e 31 34 62 20 7b 20 61 20 4f 52 20 62 20 7d 0a  .14b { a OR b }.
2670: 20 20 20 20 39 2e 31 35 20 7b 20 61 20 4f 52 20      9.15 { a OR 
2680: 62 20 41 4e 44 20 63 20 7d 0a 20 20 20 20 39 2e  b AND c }.    9.
2690: 31 36 20 7b 20 63 20 41 4e 44 20 62 20 4f 52 20  16 { c AND b OR 
26a0: 61 20 7d 0a 20 20 20 20 39 2e 31 37 20 7b 20 63  a }.    9.17 { c
26b0: 20 41 4e 44 20 28 62 20 4f 52 20 61 29 20 7d 0a   AND (b OR a) }.
26c0: 20 20 20 20 39 2e 31 38 20 7b 20 63 20 4e 4f 54      9.18 { c NOT
26d0: 20 28 62 20 4f 52 20 61 29 20 7d 0a 20 20 20 20   (b OR a) }.    
26e0: 39 2e 31 39 20 7b 20 28 63 20 4e 4f 54 20 62 29  9.19 { (c NOT b)
26f0: 20 4f 52 20 28 61 20 41 4e 44 20 64 29 20 7d 0a   OR (a AND d) }.
2700: 20 20 7d 20 7b 0a 0a 20 20 20 20 69 66 20 7b 5b    } {..    if {[
2710: 66 74 73 35 5f 65 78 70 72 5f 6f 6b 20 24 65 78  fts5_expr_ok $ex
2720: 70 72 20 78 78 5d 3d 3d 30 7d 20 7b 0a 20 20 20  pr xx]==0} {.   
2730: 20 20 20 64 6f 5f 74 65 73 74 20 31 2e 24 74 6e     do_test 1.$tn
2740: 32 2e 24 74 6e 2e 4f 4d 49 54 54 45 44 20 7b 20  2.$tn.OMITTED { 
2750: 6c 69 73 74 20 7d 20 5b 6c 69 73 74 5d 0a 20 20  list } [list].  
2760: 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a 20 20 20      continue.   
2770: 20 7d 0a 0a 20 20 20 20 73 65 74 20 72 65 73 20   }..    set res 
2780: 5b 66 74 73 35 5f 71 75 65 72 79 5f 64 61 74 61  [fts5_query_data
2790: 20 24 65 78 70 72 20 78 78 5d 0a 20 20 20 20 64   $expr xx].    d
27a0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31  o_execsql_test 1
27b0: 2e 24 74 6e 32 2e 24 74 6e 2e 5b 6c 6c 65 6e 67  .$tn2.$tn.[lleng
27c0: 74 68 20 24 72 65 73 5d 2e 61 73 63 20 7b 0a 20  th $res].asc {. 
27d0: 20 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69       SELECT rowi
27e0: 64 2c 20 66 74 73 35 5f 74 65 73 74 5f 70 6f 73  d, fts5_test_pos
27f0: 6c 69 73 74 28 78 78 29 2c 20 66 74 73 35 5f 74  list(xx), fts5_t
2800: 65 73 74 5f 63 6f 6c 6c 69 73 74 28 78 78 29 20  est_collist(xx) 
2810: 0a 20 20 20 20 20 20 46 52 4f 4d 20 78 78 20 57  .      FROM xx W
2820: 48 45 52 45 20 78 78 20 6d 61 74 63 68 20 24 65  HERE xx match $e
2830: 78 70 72 0a 20 20 20 20 7d 20 24 72 65 73 0a 0a  xpr.    } $res..
2840: 20 20 20 20 73 65 74 20 72 65 73 20 5b 66 74 73      set res [fts
2850: 35 5f 71 75 65 72 79 5f 64 61 74 61 20 24 65 78  5_query_data $ex
2860: 70 72 20 78 78 20 44 45 53 43 5d 0a 20 20 20 20  pr xx DESC].    
2870: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
2880: 31 2e 24 74 6e 32 2e 24 74 6e 2e 5b 6c 6c 65 6e  1.$tn2.$tn.[llen
2890: 67 74 68 20 24 72 65 73 5d 2e 64 65 73 63 20 7b  gth $res].desc {
28a0: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 72 6f  .      SELECT ro
28b0: 77 69 64 2c 20 66 74 73 35 5f 74 65 73 74 5f 70  wid, fts5_test_p
28c0: 6f 73 6c 69 73 74 28 78 78 29 2c 20 66 74 73 35  oslist(xx), fts5
28d0: 5f 74 65 73 74 5f 63 6f 6c 6c 69 73 74 28 78 78  _test_collist(xx
28e0: 29 20 0a 20 20 20 20 20 20 46 52 4f 4d 20 78 78  ) .      FROM xx
28f0: 20 57 48 45 52 45 20 78 78 20 6d 61 74 63 68 20   WHERE xx match 
2900: 24 65 78 70 72 20 4f 52 44 45 52 20 42 59 20 31  $expr ORDER BY 1
2910: 20 44 45 53 43 0a 20 20 20 20 7d 20 24 72 65 73   DESC.    } $res
2920: 0a 20 20 7d 0a 7d 0a 0a 7d 0a 0a 64 6f 5f 65 78  .  }.}..}..do_ex
2930: 65 63 73 71 6c 5f 74 65 73 74 20 32 2e 31 20 7b  ecsql_test 2.1 {
2940: 0a 20 20 53 45 4c 45 43 54 20 66 74 73 35 5f 65  .  SELECT fts5_e
2950: 78 70 72 5f 74 63 6c 28 27 61 20 41 4e 44 20 62  xpr_tcl('a AND b
2960: 27 29 3b 0a 7d 20 7b 7b 41 4e 44 20 5b 6e 65 61  ');.} {{AND [nea
2970: 72 73 65 74 20 2d 2d 20 7b 61 7d 5d 20 5b 6e 65  rset -- {a}] [ne
2980: 61 72 73 65 74 20 2d 2d 20 7b 62 7d 5d 7d 7d 0a  arset -- {b}]}}.
2990: 0a 64 6f 5f 74 65 73 74 20 32 2e 32 2e 31 20 20  .do_test 2.2.1  
29a0: 7b 20 6e 65 61 72 73 65 74 20 7b 7b 61 20 62 20  { nearset {{a b 
29b0: 63 7d 7d 20 2d 2d 20 61 20 7d 20 7b 30 2e 30 2e  c}} -- a } {0.0.
29c0: 30 7d 0a 64 6f 5f 74 65 73 74 20 32 2e 32 2e 32  0}.do_test 2.2.2
29d0: 20 20 7b 20 6e 65 61 72 73 65 74 20 7b 7b 61 20    { nearset {{a 
29e0: 62 20 63 7d 7d 20 2d 2d 20 63 20 7d 20 7b 30 2e  b c}} -- c } {0.
29f0: 30 2e 32 7d 0a 0a 66 6f 72 65 61 63 68 20 7b 74  0.2}..foreach {t
2a00: 6e 20 65 78 70 72 20 74 63 6c 65 78 70 72 7d 20  n expr tclexpr} 
2a10: 7b 0a 20 20 31 20 7b 61 20 62 7d 20 7b 41 4e 44  {.  1 {a b} {AND
2a20: 20 5b 4e 20 24 78 20 2d 2d 20 7b 61 7d 5d 20 5b   [N $x -- {a}] [
2a30: 4e 20 24 78 20 2d 2d 20 7b 62 7d 5d 7d 0a 7d 20  N $x -- {b}]}.} 
2a40: 7b 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  {.  do_execsql_t
2a50: 65 73 74 20 32 2e 33 2e 24 74 6e 20 7b 0a 20 20  est 2.3.$tn {.  
2a60: 20 20 53 45 4c 45 43 54 20 66 74 73 35 5f 65 78    SELECT fts5_ex
2a70: 70 72 5f 74 63 6c 28 24 65 78 70 72 2c 20 27 4e  pr_tcl($expr, 'N
2a80: 20 24 78 27 29 0a 20 20 7d 20 5b 6c 69 73 74 20   $x').  } [list 
2a90: 24 74 63 6c 65 78 70 72 5d 0a 7d 0a 0a 66 69 6e  $tclexpr].}..fin
2aa0: 69 73 68 5f 74 65 73 74 0a                       ish_test.