/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 416eb7e1e81142703520d284b768ca2751d40e31fa912cae24ba74860532bf0f:


0000: 2f 2a 0a 2a 2a 20 32 30 31 32 2d 30 35 2d 32 35  /*.** 2012-05-25
0010: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  .**.** The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67  lace of.** a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a  is a blessing:.*
0080: 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20  *.**    May you 
0090: 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20  do good and not 
00a0: 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  evil..**    May 
00b0: 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65  you find forgive
00c0: 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c  ness for yoursel
00d0: 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74  f and forgive ot
00e0: 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  hers..**    May 
00f0: 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79  you share freely
0100: 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d  , never taking m
0110: 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76  ore than you giv
0120: 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e..**.**********
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 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 44  ****.*/../*.** D
0180: 4f 20 4e 4f 54 20 45 44 49 54 20 54 48 49 53 20  O NOT EDIT THIS 
0190: 4d 41 43 48 49 4e 45 20 47 45 4e 45 52 41 54 45  MACHINE GENERATE
01a0: 44 20 46 49 4c 45 2e 0a 2a 2f 0a 0a 23 69 66 6e  D FILE..*/..#ifn
01b0: 64 65 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42  def SQLITE_DISAB
01c0: 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45 0a  LE_FTS3_UNICODE.
01d0: 23 69 66 20 64 65 66 69 6e 65 64 28 53 51 4c 49  #if defined(SQLI
01e0: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 29 20  TE_ENABLE_FTS3) 
01f0: 7c 7c 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54  || defined(SQLIT
0200: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 29 0a 0a  E_ENABLE_FTS4)..
0210: 23 69 6e 63 6c 75 64 65 20 3c 61 73 73 65 72 74  #include <assert
0220: 2e 68 3e 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72  .h>../*.** Retur
0230: 6e 20 74 72 75 65 20 69 66 20 74 68 65 20 61 72  n true if the ar
0240: 67 75 6d 65 6e 74 20 63 6f 72 72 65 73 70 6f 6e  gument correspon
0250: 64 73 20 74 6f 20 61 20 75 6e 69 63 6f 64 65 20  ds to a unicode 
0260: 63 6f 64 65 70 6f 69 6e 74 0a 2a 2a 20 63 6c 61  codepoint.** cla
0270: 73 73 69 66 69 65 64 20 61 73 20 65 69 74 68 65  ssified as eithe
0280: 72 20 61 20 6c 65 74 74 65 72 20 6f 72 20 61 20  r a letter or a 
0290: 6e 75 6d 62 65 72 2e 20 4f 74 68 65 72 77 69 73  number. Otherwis
02a0: 65 20 66 61 6c 73 65 2e 0a 2a 2a 0a 2a 2a 20 54  e false..**.** T
02b0: 68 65 20 72 65 73 75 6c 74 73 20 61 72 65 20 75  he results are u
02c0: 6e 64 65 66 69 6e 65 64 20 69 66 20 74 68 65 20  ndefined if the 
02d0: 76 61 6c 75 65 20 70 61 73 73 65 64 20 74 6f 20  value passed to 
02e0: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a  this function.**
02f0: 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 7a 65   is less than ze
0300: 72 6f 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  ro..*/.int sqlit
0310: 65 33 46 74 73 55 6e 69 63 6f 64 65 49 73 61 6c  e3FtsUnicodeIsal
0320: 6e 75 6d 28 69 6e 74 20 63 29 7b 0a 20 20 2f 2a  num(int c){.  /*
0330: 20 45 61 63 68 20 75 6e 73 69 67 6e 65 64 20 69   Each unsigned i
0340: 6e 74 65 67 65 72 20 69 6e 20 74 68 65 20 66 6f  nteger in the fo
0350: 6c 6c 6f 77 69 6e 67 20 61 72 72 61 79 20 63 6f  llowing array co
0360: 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 61 20 63  rresponds to a c
0370: 6f 6e 74 69 67 75 6f 75 73 0a 20 20 2a 2a 20 72  ontiguous.  ** r
0380: 61 6e 67 65 20 6f 66 20 75 6e 69 63 6f 64 65 20  ange of unicode 
0390: 63 6f 64 65 70 6f 69 6e 74 73 20 74 68 61 74 20  codepoints that 
03a0: 61 72 65 20 6e 6f 74 20 65 69 74 68 65 72 20 6c  are not either l
03b0: 65 74 74 65 72 73 20 6f 72 20 6e 75 6d 62 65 72  etters or number
03c0: 73 20 28 69 2e 65 2e 0a 20 20 2a 2a 20 63 6f 64  s (i.e..  ** cod
03d0: 65 70 6f 69 6e 74 73 20 66 6f 72 20 77 68 69 63  epoints for whic
03e0: 68 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  h this function 
03f0: 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 30 29  should return 0)
0400: 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65 20  ..  **.  ** The 
0410: 6d 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74  most significant
0420: 20 32 32 20 62 69 74 73 20 69 6e 20 65 61 63 68   22 bits in each
0430: 20 33 32 2d 62 69 74 20 76 61 6c 75 65 20 63 6f   32-bit value co
0440: 6e 74 61 69 6e 20 74 68 65 20 66 69 72 73 74 20  ntain the first 
0450: 0a 20 20 2a 2a 20 63 6f 64 65 70 6f 69 6e 74 20  .  ** codepoint 
0460: 69 6e 20 74 68 65 20 72 61 6e 67 65 2e 20 54 68  in the range. Th
0470: 65 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69 63  e least signific
0480: 61 6e 74 20 31 30 20 62 69 74 73 20 61 72 65 20  ant 10 bits are 
0490: 75 73 65 64 20 74 6f 20 73 74 6f 72 65 0a 20 20  used to store.  
04a0: 2a 2a 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  ** the size of t
04b0: 68 65 20 72 61 6e 67 65 20 28 61 6c 77 61 79 73  he range (always
04c0: 20 61 74 20 6c 65 61 73 74 20 31 29 2e 20 49 6e   at least 1). In
04d0: 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68   other words, th
04e0: 65 20 76 61 6c 75 65 20 0a 20 20 2a 2a 20 28 28  e value .  ** ((
04f0: 43 3c 3c 32 32 29 20 2b 20 4e 29 20 72 65 70 72  C<<22) + N) repr
0500: 65 73 65 6e 74 73 20 61 20 72 61 6e 67 65 20 6f  esents a range o
0510: 66 20 4e 20 63 6f 64 65 70 6f 69 6e 74 73 20 73  f N codepoints s
0520: 74 61 72 74 69 6e 67 20 77 69 74 68 20 63 6f 64  tarting with cod
0530: 65 70 6f 69 6e 74 20 0a 20 20 2a 2a 20 43 2e 20  epoint .  ** C. 
0540: 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62  It is not possib
0550: 6c 65 20 74 6f 20 72 65 70 72 65 73 65 6e 74 20  le to represent 
0560: 61 20 72 61 6e 67 65 20 6c 61 72 67 65 72 20 74  a range larger t
0570: 68 61 6e 20 31 30 32 33 20 63 6f 64 65 70 6f 69  han 1023 codepoi
0580: 6e 74 73 20 0a 20 20 2a 2a 20 75 73 69 6e 67 20  nts .  ** using 
0590: 74 68 69 73 20 66 6f 72 6d 61 74 2e 0a 20 20 2a  this format..  *
05a0: 2f 0a 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74  /.  static const
05b0: 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 61 45   unsigned int aE
05c0: 6e 74 72 79 5b 5d 20 3d 20 7b 0a 20 20 20 20 30  ntry[] = {.    0
05d0: 78 30 30 30 30 30 30 33 30 2c 20 30 78 30 30 30  x00000030, 0x000
05e0: 30 45 38 30 37 2c 20 30 78 30 30 30 31 36 43 30  0E807, 0x00016C0
05f0: 36 2c 20 30 78 30 30 30 31 45 43 32 46 2c 20 30  6, 0x0001EC2F, 0
0600: 78 30 30 30 32 41 43 30 37 2c 0a 20 20 20 20 30  x0002AC07,.    0
0610: 78 30 30 30 32 44 30 30 31 2c 20 30 78 30 30 30  x0002D001, 0x000
0620: 32 44 38 30 33 2c 20 30 78 30 30 30 32 45 43 30  2D803, 0x0002EC0
0630: 31 2c 20 30 78 30 30 30 32 46 43 30 31 2c 20 30  1, 0x0002FC01, 0
0640: 78 30 30 30 33 35 43 30 31 2c 0a 20 20 20 20 30  x00035C01,.    0
0650: 78 30 30 30 33 44 43 30 31 2c 20 30 78 30 30 30  x0003DC01, 0x000
0660: 42 30 38 30 34 2c 20 30 78 30 30 30 42 34 38 30  B0804, 0x000B480
0670: 45 2c 20 30 78 30 30 30 42 39 34 30 37 2c 20 30  E, 0x000B9407, 0
0680: 78 30 30 30 42 42 34 30 31 2c 0a 20 20 20 20 30  x000BB401,.    0
0690: 78 30 30 30 42 42 43 38 31 2c 20 30 78 30 30 30  x000BBC81, 0x000
06a0: 44 44 34 30 31 2c 20 30 78 30 30 30 44 46 38 30  DD401, 0x000DF80
06b0: 31 2c 20 30 78 30 30 30 45 31 30 30 32 2c 20 30  1, 0x000E1002, 0
06c0: 78 30 30 30 45 31 43 30 31 2c 0a 20 20 20 20 30  x000E1C01,.    0
06d0: 78 30 30 30 46 44 38 30 31 2c 20 30 78 30 30 31  x000FD801, 0x001
06e0: 32 30 38 30 38 2c 20 30 78 30 30 31 35 36 38 30  20808, 0x0015680
06f0: 36 2c 20 30 78 30 30 31 36 32 34 30 32 2c 20 30  6, 0x00162402, 0
0700: 78 30 30 31 36 33 43 30 31 2c 0a 20 20 20 20 30  x00163C01,.    0
0710: 78 30 30 31 36 34 34 33 37 2c 20 30 78 30 30 31  x00164437, 0x001
0720: 37 43 43 30 32 2c 20 30 78 30 30 31 38 30 30 30  7CC02, 0x0018000
0730: 35 2c 20 30 78 30 30 31 38 31 38 31 36 2c 20 30  5, 0x00181816, 0
0740: 78 30 30 31 38 37 38 30 32 2c 0a 20 20 20 20 30  x00187802,.    0
0750: 78 30 30 31 39 32 43 31 35 2c 20 30 78 30 30 31  x00192C15, 0x001
0760: 39 41 38 30 34 2c 20 30 78 30 30 31 39 43 30 30  9A804, 0x0019C00
0770: 31 2c 20 30 78 30 30 31 42 35 30 30 31 2c 20 30  1, 0x001B5001, 0
0780: 78 30 30 31 42 35 38 30 46 2c 0a 20 20 20 20 30  x001B580F,.    0
0790: 78 30 30 31 42 39 43 30 37 2c 20 30 78 30 30 31  x001B9C07, 0x001
07a0: 42 46 34 30 32 2c 20 30 78 30 30 31 43 30 30 30  BF402, 0x001C000
07b0: 45 2c 20 30 78 30 30 31 43 33 43 30 31 2c 20 30  E, 0x001C3C01, 0
07c0: 78 30 30 31 43 34 34 30 31 2c 0a 20 20 20 20 30  x001C4401,.    0
07d0: 78 30 30 31 43 43 30 31 42 2c 20 30 78 30 30 31  x001CC01B, 0x001
07e0: 45 39 38 30 42 2c 20 30 78 30 30 31 46 41 43 30  E980B, 0x001FAC0
07f0: 39 2c 20 30 78 30 30 31 46 44 38 30 34 2c 20 30  9, 0x001FD804, 0
0800: 78 30 30 32 30 35 38 30 34 2c 0a 20 20 20 20 30  x00205804,.    0
0810: 78 30 30 32 30 36 43 30 39 2c 20 30 78 30 30 32  x00206C09, 0x002
0820: 30 39 34 30 33 2c 20 30 78 30 30 32 30 41 34 30  09403, 0x0020A40
0830: 35 2c 20 30 78 30 30 32 30 43 30 30 46 2c 20 30  5, 0x0020C00F, 0
0840: 78 30 30 32 31 36 34 30 33 2c 0a 20 20 20 20 30  x00216403,.    0
0850: 78 30 30 32 31 37 38 30 31 2c 20 30 78 30 30 32  x00217801, 0x002
0860: 33 39 30 31 42 2c 20 30 78 30 30 32 34 30 30 30  3901B, 0x0024000
0870: 34 2c 20 30 78 30 30 32 34 45 38 30 33 2c 20 30  4, 0x0024E803, 0
0880: 78 30 30 32 34 46 38 31 32 2c 0a 20 20 20 20 30  x0024F812,.    0
0890: 78 30 30 32 35 34 34 30 37 2c 20 30 78 30 30 32  x00254407, 0x002
08a0: 35 38 38 30 34 2c 20 30 78 30 30 32 35 43 30 30  58804, 0x0025C00
08b0: 31 2c 20 30 78 30 30 32 36 30 34 30 33 2c 20 30  1, 0x00260403, 0
08c0: 78 30 30 32 36 46 30 30 31 2c 0a 20 20 20 20 30  x0026F001,.    0
08d0: 78 30 30 32 36 46 38 30 37 2c 20 30 78 30 30 32  x0026F807, 0x002
08e0: 37 31 43 30 32 2c 20 30 78 30 30 32 37 32 43 30  71C02, 0x00272C0
08f0: 33 2c 20 30 78 30 30 32 37 35 43 30 31 2c 20 30  3, 0x00275C01, 0
0900: 78 30 30 32 37 38 38 30 32 2c 0a 20 20 20 20 30  x00278802,.    0
0910: 78 30 30 32 37 43 38 30 32 2c 20 30 78 30 30 32  x0027C802, 0x002
0920: 37 45 38 30 32 2c 20 30 78 30 30 32 38 30 34 30  7E802, 0x0028040
0930: 33 2c 20 30 78 30 30 32 38 46 30 30 31 2c 20 30  3, 0x0028F001, 0
0940: 78 30 30 32 38 46 38 30 35 2c 0a 20 20 20 20 30  x0028F805,.    0
0950: 78 30 30 32 39 31 43 30 32 2c 20 30 78 30 30 32  x00291C02, 0x002
0960: 39 32 43 30 33 2c 20 30 78 30 30 32 39 34 34 30  92C03, 0x0029440
0970: 31 2c 20 30 78 30 30 32 39 43 30 30 32 2c 20 30  1, 0x0029C002, 0
0980: 78 30 30 32 39 44 34 30 31 2c 0a 20 20 20 20 30  x0029D401,.    0
0990: 78 30 30 32 41 30 34 30 33 2c 20 30 78 30 30 32  x002A0403, 0x002
09a0: 41 46 30 30 31 2c 20 30 78 30 30 32 41 46 38 30  AF001, 0x002AF80
09b0: 38 2c 20 30 78 30 30 32 42 31 43 30 33 2c 20 30  8, 0x002B1C03, 0
09c0: 78 30 30 32 42 32 43 30 33 2c 0a 20 20 20 20 30  x002B2C03,.    0
09d0: 78 30 30 32 42 38 38 30 32 2c 20 30 78 30 30 32  x002B8802, 0x002
09e0: 42 43 30 30 32 2c 20 30 78 30 30 32 43 30 34 30  BC002, 0x002C040
09f0: 33 2c 20 30 78 30 30 32 43 46 30 30 31 2c 20 30  3, 0x002CF001, 0
0a00: 78 30 30 32 43 46 38 30 37 2c 0a 20 20 20 20 30  x002CF807,.    0
0a10: 78 30 30 32 44 31 43 30 32 2c 20 30 78 30 30 32  x002D1C02, 0x002
0a20: 44 32 43 30 33 2c 20 30 78 30 30 32 44 35 38 30  D2C03, 0x002D580
0a30: 32 2c 20 30 78 30 30 32 44 38 38 30 32 2c 20 30  2, 0x002D8802, 0
0a40: 78 30 30 32 44 43 30 30 31 2c 0a 20 20 20 20 30  x002DC001,.    0
0a50: 78 30 30 32 45 30 38 30 31 2c 20 30 78 30 30 32  x002E0801, 0x002
0a60: 45 46 38 30 35 2c 20 30 78 30 30 32 46 31 38 30  EF805, 0x002F180
0a70: 33 2c 20 30 78 30 30 32 46 32 38 30 34 2c 20 30  3, 0x002F2804, 0
0a80: 78 30 30 32 46 35 43 30 31 2c 0a 20 20 20 20 30  x002F5C01,.    0
0a90: 78 30 30 32 46 43 43 30 38 2c 20 30 78 30 30 33  x002FCC08, 0x003
0aa0: 30 30 34 30 33 2c 20 30 78 30 30 33 30 46 38 30  00403, 0x0030F80
0ab0: 37 2c 20 30 78 30 30 33 31 31 38 30 33 2c 20 30  7, 0x00311803, 0
0ac0: 78 30 30 33 31 32 38 30 34 2c 0a 20 20 20 20 30  x00312804,.    0
0ad0: 78 30 30 33 31 35 34 30 32 2c 20 30 78 30 30 33  x00315402, 0x003
0ae0: 31 38 38 30 32 2c 20 30 78 30 30 33 31 46 43 30  18802, 0x0031FC0
0af0: 31 2c 20 30 78 30 30 33 32 30 38 30 32 2c 20 30  1, 0x00320802, 0
0b00: 78 30 30 33 32 46 30 30 31 2c 0a 20 20 20 20 30  x0032F001,.    0
0b10: 78 30 30 33 32 46 38 30 37 2c 20 30 78 30 30 33  x0032F807, 0x003
0b20: 33 31 38 30 33 2c 20 30 78 30 30 33 33 32 38 30  31803, 0x0033280
0b30: 34 2c 20 30 78 30 30 33 33 35 34 30 32 2c 20 30  4, 0x00335402, 0
0b40: 78 30 30 33 33 38 38 30 32 2c 0a 20 20 20 20 30  x00338802,.    0
0b50: 78 30 30 33 34 30 38 30 32 2c 20 30 78 30 30 33  x00340802, 0x003
0b60: 34 46 38 30 37 2c 20 30 78 30 30 33 35 31 38 30  4F807, 0x0035180
0b70: 33 2c 20 30 78 30 30 33 35 32 38 30 34 2c 20 30  3, 0x00352804, 0
0b80: 78 30 30 33 35 35 43 30 31 2c 0a 20 20 20 20 30  x00355C01,.    0
0b90: 78 30 30 33 35 38 38 30 32 2c 20 30 78 30 30 33  x00358802, 0x003
0ba0: 35 45 34 30 31 2c 20 30 78 30 30 33 36 30 38 30  5E401, 0x0036080
0bb0: 32 2c 20 30 78 30 30 33 37 32 38 30 31 2c 20 30  2, 0x00372801, 0
0bc0: 78 30 30 33 37 33 43 30 36 2c 0a 20 20 20 20 30  x00373C06,.    0
0bd0: 78 30 30 33 37 35 38 30 31 2c 20 30 78 30 30 33  x00375801, 0x003
0be0: 37 36 30 30 38 2c 20 30 78 30 30 33 37 43 38 30  76008, 0x0037C80
0bf0: 33 2c 20 30 78 30 30 33 38 43 34 30 31 2c 20 30  3, 0x0038C401, 0
0c00: 78 30 30 33 38 44 30 30 37 2c 0a 20 20 20 20 30  x0038D007,.    0
0c10: 78 30 30 33 38 46 43 30 31 2c 20 30 78 30 30 33  x0038FC01, 0x003
0c20: 39 31 43 30 39 2c 20 30 78 30 30 33 39 36 38 30  91C09, 0x0039680
0c30: 32 2c 20 30 78 30 30 33 41 43 34 30 31 2c 20 30  2, 0x003AC401, 0
0c40: 78 30 30 33 41 44 30 30 36 2c 0a 20 20 20 20 30  x003AD006,.    0
0c50: 78 30 30 33 41 45 43 30 32 2c 20 30 78 30 30 33  x003AEC02, 0x003
0c60: 42 32 30 30 36 2c 20 30 78 30 30 33 43 30 34 31  B2006, 0x003C041
0c70: 46 2c 20 30 78 30 30 33 43 44 30 30 43 2c 20 30  F, 0x003CD00C, 0
0c80: 78 30 30 33 44 43 34 31 37 2c 0a 20 20 20 20 30  x003DC417,.    0
0c90: 78 30 30 33 45 33 34 30 42 2c 20 30 78 30 30 33  x003E340B, 0x003
0ca0: 45 36 34 32 34 2c 20 30 78 30 30 33 45 46 38 30  E6424, 0x003EF80
0cb0: 46 2c 20 30 78 30 30 33 46 33 38 30 44 2c 20 30  F, 0x003F380D, 0
0cc0: 78 30 30 34 30 41 43 31 34 2c 0a 20 20 20 20 30  x0040AC14,.    0
0cd0: 78 30 30 34 31 32 38 30 36 2c 20 30 78 30 30 34  x00412806, 0x004
0ce0: 31 35 38 30 34 2c 20 30 78 30 30 34 31 37 38 30  15804, 0x0041780
0cf0: 33 2c 20 30 78 30 30 34 31 38 38 30 33 2c 20 30  3, 0x00418803, 0
0d00: 78 30 30 34 31 39 43 30 37 2c 0a 20 20 20 20 30  x00419C07,.    0
0d10: 78 30 30 34 31 43 34 30 34 2c 20 30 78 30 30 34  x0041C404, 0x004
0d20: 32 30 38 30 43 2c 20 30 78 30 30 34 32 33 43 30  2080C, 0x00423C0
0d30: 31 2c 20 30 78 30 30 34 32 36 38 30 36 2c 20 30  1, 0x00426806, 0
0d40: 78 30 30 34 33 45 43 30 31 2c 0a 20 20 20 20 30  x0043EC01,.    0
0d50: 78 30 30 34 44 37 34 30 43 2c 20 30 78 30 30 34  x004D740C, 0x004
0d60: 45 34 30 30 41 2c 20 30 78 30 30 35 30 30 30 30  E400A, 0x0050000
0d70: 31 2c 20 30 78 30 30 35 39 42 34 30 32 2c 20 30  1, 0x0059B402, 0
0d80: 78 30 30 35 41 30 30 30 31 2c 0a 20 20 20 20 30  x005A0001,.    0
0d90: 78 30 30 35 41 36 43 30 32 2c 20 30 78 30 30 35  x005A6C02, 0x005
0da0: 42 41 43 30 33 2c 20 30 78 30 30 35 43 34 38 30  BAC03, 0x005C480
0db0: 33 2c 20 30 78 30 30 35 43 43 38 30 35 2c 20 30  3, 0x005CC805, 0
0dc0: 78 30 30 35 44 34 38 30 32 2c 0a 20 20 20 20 30  x005D4802,.    0
0dd0: 78 30 30 35 44 43 38 30 32 2c 20 30 78 30 30 35  x005DC802, 0x005
0de0: 45 44 30 32 33 2c 20 30 78 30 30 35 46 36 30 30  ED023, 0x005F600
0df0: 34 2c 20 30 78 30 30 35 46 37 34 30 31 2c 20 30  4, 0x005F7401, 0
0e00: 78 30 30 36 30 30 30 30 46 2c 0a 20 20 20 20 30  x0060000F,.    0
0e10: 78 30 30 36 32 41 34 30 31 2c 20 30 78 30 30 36  x0062A401, 0x006
0e20: 34 38 30 30 43 2c 20 30 78 30 30 36 34 43 30 30  4800C, 0x0064C00
0e30: 43 2c 20 30 78 30 30 36 35 30 30 30 31 2c 20 30  C, 0x00650001, 0
0e40: 78 30 30 36 35 31 30 30 32 2c 0a 20 20 20 20 30  x00651002,.    0
0e50: 78 30 30 36 36 43 30 31 31 2c 20 30 78 30 30 36  x0066C011, 0x006
0e60: 37 32 30 30 32 2c 20 30 78 30 30 36 37 37 38 32  72002, 0x0067782
0e70: 32 2c 20 30 78 30 30 36 38 35 43 30 35 2c 20 30  2, 0x00685C05, 0
0e80: 78 30 30 36 38 37 38 30 32 2c 0a 20 20 20 20 30  x00687802,.    0
0e90: 78 30 30 36 39 35 34 30 41 2c 20 30 78 30 30 36  x0069540A, 0x006
0ea0: 39 38 30 31 44 2c 20 30 78 30 30 36 39 46 43 30  9801D, 0x0069FC0
0eb0: 31 2c 20 30 78 30 30 36 41 38 30 30 37 2c 20 30  1, 0x006A8007, 0
0ec0: 78 30 30 36 41 41 30 30 36 2c 0a 20 20 20 20 30  x006AA006,.    0
0ed0: 78 30 30 36 43 30 30 30 35 2c 20 30 78 30 30 36  x006C0005, 0x006
0ee0: 43 44 30 31 31 2c 20 30 78 30 30 36 44 36 38 32  CD011, 0x006D682
0ef0: 33 2c 20 30 78 30 30 36 45 30 30 30 33 2c 20 30  3, 0x006E0003, 0
0f00: 78 30 30 36 45 38 34 30 44 2c 0a 20 20 20 20 30  x006E840D,.    0
0f10: 78 30 30 36 46 39 38 30 45 2c 20 30 78 30 30 36  x006F980E, 0x006
0f20: 46 46 30 30 34 2c 20 30 78 30 30 37 30 39 30 31  FF004, 0x0070901
0f30: 34 2c 20 30 78 30 30 37 30 45 43 30 35 2c 20 30  4, 0x0070EC05, 0
0f40: 78 30 30 37 31 46 38 30 32 2c 0a 20 20 20 20 30  x0071F802,.    0
0f50: 78 30 30 37 33 30 30 30 38 2c 20 30 78 30 30 37  x00730008, 0x007
0f60: 33 34 30 31 39 2c 20 30 78 30 30 37 33 42 34 30  34019, 0x0073B40
0f70: 31 2c 20 30 78 30 30 37 33 43 38 30 33 2c 20 30  1, 0x0073C803, 0
0f80: 78 30 30 37 37 30 30 32 37 2c 0a 20 20 20 20 30  x00770027,.    0
0f90: 78 30 30 37 37 46 30 30 34 2c 20 30 78 30 30 37  x0077F004, 0x007
0fa0: 45 46 34 30 31 2c 20 30 78 30 30 37 45 46 43 30  EF401, 0x007EFC0
0fb0: 33 2c 20 30 78 30 30 37 46 33 34 30 33 2c 20 30  3, 0x007F3403, 0
0fc0: 78 30 30 37 46 37 34 30 33 2c 0a 20 20 20 20 30  x007F7403,.    0
0fd0: 78 30 30 37 46 42 34 30 33 2c 20 30 78 30 30 37  x007FB403, 0x007
0fe0: 46 46 34 30 32 2c 20 30 78 30 30 38 30 30 30 36  FF402, 0x0080006
0ff0: 35 2c 20 30 78 30 30 38 31 41 38 30 36 2c 20 30  5, 0x0081A806, 0
1000: 78 30 30 38 31 45 38 30 35 2c 0a 20 20 20 20 30  x0081E805,.    0
1010: 78 30 30 38 32 32 38 30 35 2c 20 30 78 30 30 38  x00822805, 0x008
1020: 32 38 30 31 41 2c 20 30 78 30 30 38 33 34 30 32  2801A, 0x0083402
1030: 31 2c 20 30 78 30 30 38 34 30 30 30 32 2c 20 30  1, 0x00840002, 0
1040: 78 30 30 38 34 30 43 30 34 2c 0a 20 20 20 20 30  x00840C04,.    0
1050: 78 30 30 38 34 32 30 30 32 2c 20 30 78 30 30 38  x00842002, 0x008
1060: 34 35 30 30 31 2c 20 30 78 30 30 38 34 35 38 30  45001, 0x0084580
1070: 33 2c 20 30 78 30 30 38 34 37 38 30 36 2c 20 30  3, 0x00847806, 0
1080: 78 30 30 38 34 39 34 30 31 2c 0a 20 20 20 20 30  x00849401,.    0
1090: 78 30 30 38 34 39 43 30 31 2c 20 30 78 30 30 38  x00849C01, 0x008
10a0: 34 41 34 30 31 2c 20 30 78 30 30 38 34 42 38 30  4A401, 0x0084B80
10b0: 31 2c 20 30 78 30 30 38 34 45 38 30 32 2c 20 30  1, 0x0084E802, 0
10c0: 78 30 30 38 35 30 30 30 35 2c 0a 20 20 20 20 30  x00850005,.    0
10d0: 78 30 30 38 35 32 38 30 34 2c 20 30 78 30 30 38  x00852804, 0x008
10e0: 35 33 43 30 31 2c 20 30 78 30 30 38 36 34 32 36  53C01, 0x0086426
10f0: 34 2c 20 30 78 30 30 39 30 30 30 32 37 2c 20 30  4, 0x00900027, 0
1100: 78 30 30 39 31 30 30 30 42 2c 0a 20 20 20 20 30  x0091000B,.    0
1110: 78 30 30 39 32 37 30 34 45 2c 20 30 78 30 30 39  x0092704E, 0x009
1120: 34 30 32 30 30 2c 20 30 78 30 30 39 43 30 34 37  40200, 0x009C047
1130: 35 2c 20 30 78 30 30 39 45 35 33 42 39 2c 20 30  5, 0x009E53B9, 0
1140: 78 30 30 41 44 34 30 30 41 2c 0a 20 20 20 20 30  x00AD400A,.    0
1150: 78 30 30 42 33 39 34 30 36 2c 20 30 78 30 30 42  x00B39406, 0x00B
1160: 33 42 43 30 33 2c 20 30 78 30 30 42 33 45 34 30  3BC03, 0x00B3E40
1170: 34 2c 20 30 78 30 30 42 33 46 38 30 32 2c 20 30  4, 0x00B3F802, 0
1180: 78 30 30 42 35 43 30 30 31 2c 0a 20 20 20 20 30  x00B5C001,.    0
1190: 78 30 30 42 35 46 43 30 31 2c 20 30 78 30 30 42  x00B5FC01, 0x00B
11a0: 37 38 30 34 46 2c 20 30 78 30 30 42 38 43 30 30  7804F, 0x00B8C00
11b0: 43 2c 20 30 78 30 30 42 41 30 30 31 41 2c 20 30  C, 0x00BA001A, 0
11c0: 78 30 30 42 41 36 43 35 39 2c 0a 20 20 20 20 30  x00BA6C59,.    0
11d0: 78 30 30 42 43 30 30 44 36 2c 20 30 78 30 30 42  x00BC00D6, 0x00B
11e0: 46 43 30 30 43 2c 20 30 78 30 30 43 30 30 30 30  FC00C, 0x00C0000
11f0: 35 2c 20 30 78 30 30 43 30 32 30 31 39 2c 20 30  5, 0x00C02019, 0
1200: 78 30 30 43 30 41 38 30 37 2c 0a 20 20 20 20 30  x00C0A807,.    0
1210: 78 30 30 43 30 44 38 30 32 2c 20 30 78 30 30 43  x00C0D802, 0x00C
1220: 30 46 34 30 33 2c 20 30 78 30 30 43 32 36 34 30  0F403, 0x00C2640
1230: 34 2c 20 30 78 30 30 43 32 38 30 30 31 2c 20 30  4, 0x00C28001, 0
1240: 78 30 30 43 33 45 43 30 31 2c 0a 20 20 20 20 30  x00C3EC01,.    0
1250: 78 30 30 43 36 34 30 30 32 2c 20 30 78 30 30 43  x00C64002, 0x00C
1260: 36 35 38 30 41 2c 20 30 78 30 30 43 37 30 30 32  6580A, 0x00C7002
1270: 34 2c 20 30 78 30 30 43 38 30 30 31 46 2c 20 30  4, 0x00C8001F, 0
1280: 78 30 30 43 38 41 38 31 45 2c 0a 20 20 20 20 30  x00C8A81E,.    0
1290: 78 30 30 43 39 34 30 30 31 2c 20 30 78 30 30 43  x00C94001, 0x00C
12a0: 39 38 30 32 30 2c 20 30 78 30 30 43 41 32 38 32  98020, 0x00CA282
12b0: 37 2c 20 30 78 30 30 43 42 30 30 33 46 2c 20 30  7, 0x00CB003F, 0
12c0: 78 30 30 43 43 30 31 30 30 2c 0a 20 20 20 20 30  x00CC0100,.    0
12d0: 78 30 31 33 37 30 30 34 30 2c 20 30 78 30 32 39  x01370040, 0x029
12e0: 32 34 30 33 37 2c 20 30 78 30 32 39 33 46 38 30  24037, 0x0293F80
12f0: 32 2c 20 30 78 30 32 39 38 33 34 30 33 2c 20 30  2, 0x02983403, 0
1300: 78 30 32 39 39 42 43 31 30 2c 0a 20 20 20 20 30  x0299BC10,.    0
1310: 78 30 32 39 41 37 43 30 31 2c 20 30 78 30 32 39  x029A7C01, 0x029
1320: 42 43 30 30 38 2c 20 30 78 30 32 39 43 30 30 31  BC008, 0x029C001
1330: 37 2c 20 30 78 30 32 39 43 38 30 30 32 2c 20 30  7, 0x029C8002, 0
1340: 78 30 32 39 45 32 34 30 32 2c 0a 20 20 20 20 30  x029E2402,.    0
1350: 78 30 32 41 30 30 38 30 31 2c 20 30 78 30 32 41  x02A00801, 0x02A
1360: 30 31 38 30 31 2c 20 30 78 30 32 41 30 32 43 30  01801, 0x02A02C0
1370: 31 2c 20 30 78 30 32 41 30 38 43 30 39 2c 20 30  1, 0x02A08C09, 0
1380: 78 30 32 41 30 44 38 30 34 2c 0a 20 20 20 20 30  x02A0D804,.    0
1390: 78 30 32 41 31 44 30 30 34 2c 20 30 78 30 32 41  x02A1D004, 0x02A
13a0: 32 30 30 30 32 2c 20 30 78 30 32 41 32 44 30 31  20002, 0x02A2D01
13b0: 31 2c 20 30 78 30 32 41 33 33 38 30 32 2c 20 30  1, 0x02A33802, 0
13c0: 78 30 32 41 33 38 30 31 32 2c 0a 20 20 20 20 30  x02A38012,.    0
13d0: 78 30 32 41 33 45 30 30 33 2c 20 30 78 30 32 41  x02A3E003, 0x02A
13e0: 34 39 38 30 41 2c 20 30 78 30 32 41 35 31 43 30  4980A, 0x02A51C0
13f0: 44 2c 20 30 78 30 32 41 35 37 43 30 31 2c 20 30  D, 0x02A57C01, 0
1400: 78 30 32 41 36 30 30 30 34 2c 0a 20 20 20 20 30  x02A60004,.    0
1410: 78 30 32 41 36 43 43 31 42 2c 20 30 78 30 32 41  x02A6CC1B, 0x02A
1420: 37 37 38 30 32 2c 20 30 78 30 32 41 38 41 34 30  77802, 0x02A8A40
1430: 45 2c 20 30 78 30 32 41 39 30 43 30 31 2c 20 30  E, 0x02A90C01, 0
1440: 78 30 32 41 39 33 30 30 32 2c 0a 20 20 20 20 30  x02A93002,.    0
1450: 78 30 32 41 39 37 30 30 34 2c 20 30 78 30 32 41  x02A97004, 0x02A
1460: 39 44 43 30 33 2c 20 30 78 30 32 41 39 45 43 30  9DC03, 0x02A9EC0
1470: 31 2c 20 30 78 30 32 41 41 43 30 30 31 2c 20 30  1, 0x02AAC001, 0
1480: 78 30 32 41 41 43 38 30 33 2c 0a 20 20 20 20 30  x02AAC803,.    0
1490: 78 30 32 41 41 44 43 30 32 2c 20 30 78 30 32 41  x02AADC02, 0x02A
14a0: 41 46 38 30 32 2c 20 30 78 30 32 41 42 30 34 30  AF802, 0x02AB040
14b0: 31 2c 20 30 78 30 32 41 42 37 38 30 32 2c 20 30  1, 0x02AB7802, 0
14c0: 78 30 32 41 42 41 43 30 37 2c 0a 20 20 20 20 30  x02ABAC07,.    0
14d0: 78 30 32 41 42 44 34 30 32 2c 20 30 78 30 32 41  x02ABD402, 0x02A
14e0: 46 38 43 30 42 2c 20 30 78 30 33 36 30 30 30 30  F8C0B, 0x0360000
14f0: 31 2c 20 30 78 30 33 36 44 46 43 30 32 2c 20 30  1, 0x036DFC02, 0
1500: 78 30 33 36 46 46 43 30 32 2c 0a 20 20 20 20 30  x036FFC02,.    0
1510: 78 30 33 37 46 46 43 30 31 2c 20 30 78 30 33 45  x037FFC01, 0x03E
1520: 43 37 38 30 31 2c 20 30 78 30 33 45 43 41 34 30  C7801, 0x03ECA40
1530: 31 2c 20 30 78 30 33 45 45 43 38 31 30 2c 20 30  1, 0x03EEC810, 0
1540: 78 30 33 46 34 46 38 30 32 2c 0a 20 20 20 20 30  x03F4F802,.    0
1550: 78 30 33 46 37 46 30 30 32 2c 20 30 78 30 33 46  x03F7F002, 0x03F
1560: 38 30 30 31 41 2c 20 30 78 30 33 46 38 38 30 30  8001A, 0x03F8800
1570: 37 2c 20 30 78 30 33 46 38 43 30 32 33 2c 20 30  7, 0x03F8C023, 0
1580: 78 30 33 46 39 35 30 31 33 2c 0a 20 20 20 20 30  x03F95013,.    0
1590: 78 30 33 46 39 41 30 30 34 2c 20 30 78 30 33 46  x03F9A004, 0x03F
15a0: 42 46 43 30 31 2c 20 30 78 30 33 46 43 30 34 30  BFC01, 0x03FC040
15b0: 46 2c 20 30 78 30 33 46 43 36 38 30 37 2c 20 30  F, 0x03FC6807, 0
15c0: 78 30 33 46 43 45 43 30 36 2c 0a 20 20 20 20 30  x03FCEC06,.    0
15d0: 78 30 33 46 44 36 43 30 42 2c 20 30 78 30 33 46  x03FD6C0B, 0x03F
15e0: 46 38 30 30 37 2c 20 30 78 30 33 46 46 41 30 30  F8007, 0x03FFA00
15f0: 37 2c 20 30 78 30 33 46 46 45 34 30 35 2c 20 30  7, 0x03FFE405, 0
1600: 78 30 34 30 34 30 30 30 33 2c 0a 20 20 20 20 30  x04040003,.    0
1610: 78 30 34 30 34 44 43 30 39 2c 20 30 78 30 34 30  x0404DC09, 0x040
1620: 35 45 34 31 31 2c 20 30 78 30 34 30 36 34 30 30  5E411, 0x0406400
1630: 43 2c 20 30 78 30 34 30 37 34 30 32 45 2c 20 30  C, 0x0407402E, 0
1640: 78 30 34 30 45 37 43 30 31 2c 0a 20 20 20 20 30  x040E7C01,.    0
1650: 78 30 34 30 46 34 30 30 31 2c 20 30 78 30 34 32  x040F4001, 0x042
1660: 31 35 43 30 31 2c 20 30 78 30 34 32 34 37 43 30  15C01, 0x04247C0
1670: 31 2c 20 30 78 30 34 32 34 46 43 30 31 2c 20 30  1, 0x0424FC01, 0
1680: 78 30 34 32 38 30 34 30 33 2c 0a 20 20 20 20 30  x04280403,.    0
1690: 78 30 34 32 38 31 34 30 32 2c 20 30 78 30 34 32  x04281402, 0x042
16a0: 38 33 30 30 34 2c 20 30 78 30 34 32 38 45 30 30  83004, 0x0428E00
16b0: 33 2c 20 30 78 30 34 32 38 46 43 30 31 2c 20 30  3, 0x0428FC01, 0
16c0: 78 30 34 32 39 34 30 30 39 2c 0a 20 20 20 20 30  x04294009,.    0
16d0: 78 30 34 32 39 46 43 30 31 2c 20 30 78 30 34 32  x0429FC01, 0x042
16e0: 43 45 34 30 37 2c 20 30 78 30 34 34 30 30 30 30  CE407, 0x0440000
16f0: 33 2c 20 30 78 30 34 34 30 45 30 31 36 2c 20 30  3, 0x0440E016, 0
1700: 78 30 34 34 32 30 30 30 33 2c 0a 20 20 20 20 30  x04420003,.    0
1710: 78 30 34 34 32 43 30 31 32 2c 20 30 78 30 34 34  x0442C012, 0x044
1720: 34 30 30 30 33 2c 20 30 78 30 34 34 34 39 43 30  40003, 0x04449C0
1730: 45 2c 20 30 78 30 34 34 35 30 30 30 34 2c 20 30  E, 0x04450004, 0
1740: 78 30 34 34 36 30 30 30 33 2c 0a 20 20 20 20 30  x04460003,.    0
1750: 78 30 34 34 36 43 43 30 45 2c 20 30 78 30 34 34  x0446CC0E, 0x044
1760: 37 31 34 30 34 2c 20 30 78 30 34 35 41 41 43 30  71404, 0x045AAC0
1770: 44 2c 20 30 78 30 34 39 31 43 30 30 34 2c 20 30  D, 0x0491C004, 0
1780: 78 30 35 42 44 34 34 32 45 2c 0a 20 20 20 20 30  x05BD442E,.    0
1790: 78 30 35 42 45 33 43 30 34 2c 20 30 78 30 37 34  x05BE3C04, 0x074
17a0: 30 30 30 46 36 2c 20 30 78 30 37 34 34 30 30 32  000F6, 0x0744002
17b0: 37 2c 20 30 78 30 37 34 34 41 34 42 35 2c 20 30  7, 0x0744A4B5, 0
17c0: 78 30 37 34 38 30 30 34 36 2c 0a 20 20 20 20 30  x07480046,.    0
17d0: 78 30 37 34 43 30 30 35 37 2c 20 30 78 30 37 35  x074C0057, 0x075
17e0: 42 30 34 30 31 2c 20 30 78 30 37 35 42 36 43 30  B0401, 0x075B6C0
17f0: 31 2c 20 30 78 30 37 35 42 45 43 30 31 2c 20 30  1, 0x075BEC01, 0
1800: 78 30 37 35 43 35 34 30 31 2c 0a 20 20 20 20 30  x075C5401,.    0
1810: 78 30 37 35 43 44 34 30 31 2c 20 30 78 30 37 35  x075CD401, 0x075
1820: 44 33 43 30 31 2c 20 30 78 30 37 35 44 42 43 30  D3C01, 0x075DBC0
1830: 31 2c 20 30 78 30 37 35 45 32 34 30 31 2c 20 30  1, 0x075E2401, 0
1840: 78 30 37 35 45 41 34 30 31 2c 0a 20 20 20 20 30  x075EA401,.    0
1850: 78 30 37 35 46 30 43 30 31 2c 20 30 78 30 37 42  x075F0C01, 0x07B
1860: 42 43 30 30 32 2c 20 30 78 30 37 43 30 30 30 32  BC002, 0x07C0002
1870: 43 2c 20 30 78 30 37 43 30 43 30 36 34 2c 20 30  C, 0x07C0C064, 0
1880: 78 30 37 43 32 38 30 30 46 2c 0a 20 20 20 20 30  x07C2800F,.    0
1890: 78 30 37 43 32 43 34 30 45 2c 20 30 78 30 37 43  x07C2C40E, 0x07C
18a0: 33 30 34 30 46 2c 20 30 78 30 37 43 33 34 34 30  3040F, 0x07C3440
18b0: 46 2c 20 30 78 30 37 43 34 34 30 31 46 2c 20 30  F, 0x07C4401F, 0
18c0: 78 30 37 43 34 43 30 33 43 2c 0a 20 20 20 20 30  x07C4C03C,.    0
18d0: 78 30 37 43 35 43 30 32 42 2c 20 30 78 30 37 43  x07C5C02B, 0x07C
18e0: 37 39 38 31 44 2c 20 30 78 30 37 43 38 34 30 32  7981D, 0x07C8402
18f0: 42 2c 20 30 78 30 37 43 39 30 30 30 39 2c 20 30  B, 0x07C90009, 0
1900: 78 30 37 43 39 34 30 30 32 2c 0a 20 20 20 20 30  x07C94002,.    0
1910: 78 30 37 43 43 30 30 32 31 2c 20 30 78 30 37 43  x07CC0021, 0x07C
1920: 43 43 30 30 36 2c 20 30 78 30 37 43 43 44 43 34  CC006, 0x07CCDC4
1930: 36 2c 20 30 78 30 37 43 45 30 30 31 34 2c 20 30  6, 0x07CE0014, 0
1940: 78 30 37 43 45 38 30 32 35 2c 0a 20 20 20 20 30  x07CE8025,.    0
1950: 78 30 37 43 46 31 38 30 35 2c 20 30 78 30 37 43  x07CF1805, 0x07C
1960: 46 38 30 31 31 2c 20 30 78 30 37 44 30 30 30 33  F8011, 0x07D0003
1970: 46 2c 20 30 78 30 37 44 31 30 30 30 31 2c 20 30  F, 0x07D10001, 0
1980: 78 30 37 44 31 30 38 42 36 2c 0a 20 20 20 20 30  x07D108B6,.    0
1990: 78 30 37 44 33 45 34 30 34 2c 20 30 78 30 37 44  x07D3E404, 0x07D
19a0: 34 30 30 33 45 2c 20 30 78 30 37 44 35 30 30 30  4003E, 0x07D5000
19b0: 34 2c 20 30 78 30 37 44 35 34 30 31 38 2c 20 30  4, 0x07D54018, 0
19c0: 78 30 37 44 37 45 43 34 36 2c 0a 20 20 20 20 30  x07D7EC46,.    0
19d0: 78 30 37 44 39 31 34 30 42 2c 20 30 78 30 37 44  x07D9140B, 0x07D
19e0: 41 30 30 34 36 2c 20 30 78 30 37 44 43 30 30 37  A0046, 0x07DC007
19f0: 34 2c 20 30 78 33 38 30 30 30 34 30 31 2c 20 30  4, 0x38000401, 0
1a00: 78 33 38 30 30 38 30 36 30 2c 0a 20 20 20 20 30  x38008060,.    0
1a10: 78 33 38 30 34 30 30 46 30 2c 0a 20 20 7d 3b 0a  x380400F0,.  };.
1a20: 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 75    static const u
1a30: 6e 73 69 67 6e 65 64 20 69 6e 74 20 61 41 73 63  nsigned int aAsc
1a40: 69 69 5b 34 5d 20 3d 20 7b 0a 20 20 20 20 30 78  ii[4] = {.    0x
1a50: 46 46 46 46 46 46 46 46 2c 20 30 78 46 43 30 30  FFFFFFFF, 0xFC00
1a60: 46 46 46 46 2c 20 30 78 46 38 30 30 30 30 30 31  FFFF, 0xF8000001
1a70: 2c 20 30 78 46 38 30 30 30 30 30 31 2c 0a 20 20  , 0xF8000001,.  
1a80: 7d 3b 0a 0a 20 20 69 66 28 20 28 75 6e 73 69 67  };..  if( (unsig
1a90: 6e 65 64 20 69 6e 74 29 63 3c 31 32 38 20 29 7b  ned int)c<128 ){
1aa0: 0a 20 20 20 20 72 65 74 75 72 6e 20 28 20 28 61  .    return ( (a
1ab0: 41 73 63 69 69 5b 63 20 3e 3e 20 35 5d 20 26 20  Ascii[c >> 5] & 
1ac0: 28 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 31  ((unsigned int)1
1ad0: 20 3c 3c 20 28 63 20 26 20 30 78 30 30 31 46 29   << (c & 0x001F)
1ae0: 29 29 3d 3d 30 20 29 3b 0a 20 20 7d 65 6c 73 65  ))==0 );.  }else
1af0: 20 69 66 28 20 28 75 6e 73 69 67 6e 65 64 20 69   if( (unsigned i
1b00: 6e 74 29 63 3c 28 31 3c 3c 32 32 29 20 29 7b 0a  nt)c<(1<<22) ){.
1b10: 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74      unsigned int
1b20: 20 6b 65 79 20 3d 20 28 28 28 75 6e 73 69 67 6e   key = (((unsign
1b30: 65 64 20 69 6e 74 29 63 29 3c 3c 31 30 29 20 7c  ed int)c)<<10) |
1b40: 20 30 78 30 30 30 30 30 33 46 46 3b 0a 20 20 20   0x000003FF;.   
1b50: 20 69 6e 74 20 69 52 65 73 20 3d 20 30 3b 0a 20   int iRes = 0;. 
1b60: 20 20 20 69 6e 74 20 69 48 69 20 3d 20 73 69 7a     int iHi = siz
1b70: 65 6f 66 28 61 45 6e 74 72 79 29 2f 73 69 7a 65  eof(aEntry)/size
1b80: 6f 66 28 61 45 6e 74 72 79 5b 30 5d 29 20 2d 20  of(aEntry[0]) - 
1b90: 31 3b 0a 20 20 20 20 69 6e 74 20 69 4c 6f 20 3d  1;.    int iLo =
1ba0: 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 28 20 69   0;.    while( i
1bb0: 48 69 3e 3d 69 4c 6f 20 29 7b 0a 20 20 20 20 20  Hi>=iLo ){.     
1bc0: 20 69 6e 74 20 69 54 65 73 74 20 3d 20 28 69 48   int iTest = (iH
1bd0: 69 20 2b 20 69 4c 6f 29 20 2f 20 32 3b 0a 20 20  i + iLo) / 2;.  
1be0: 20 20 20 20 69 66 28 20 6b 65 79 20 3e 3d 20 61      if( key >= a
1bf0: 45 6e 74 72 79 5b 69 54 65 73 74 5d 20 29 7b 0a  Entry[iTest] ){.
1c00: 20 20 20 20 20 20 20 20 69 52 65 73 20 3d 20 69          iRes = i
1c10: 54 65 73 74 3b 0a 20 20 20 20 20 20 20 20 69 4c  Test;.        iL
1c20: 6f 20 3d 20 69 54 65 73 74 2b 31 3b 0a 20 20 20  o = iTest+1;.   
1c30: 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20     }else{.      
1c40: 20 20 69 48 69 20 3d 20 69 54 65 73 74 2d 31 3b    iHi = iTest-1;
1c50: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20  .      }.    }. 
1c60: 20 20 20 61 73 73 65 72 74 28 20 61 45 6e 74 72     assert( aEntr
1c70: 79 5b 30 5d 3c 6b 65 79 20 29 3b 0a 20 20 20 20  y[0]<key );.    
1c80: 61 73 73 65 72 74 28 20 6b 65 79 3e 3d 61 45 6e  assert( key>=aEn
1c90: 74 72 79 5b 69 52 65 73 5d 20 29 3b 0a 20 20 20  try[iRes] );.   
1ca0: 20 72 65 74 75 72 6e 20 28 28 28 75 6e 73 69 67   return (((unsig
1cb0: 6e 65 64 20 69 6e 74 29 63 29 20 3e 3d 20 28 28  ned int)c) >= ((
1cc0: 61 45 6e 74 72 79 5b 69 52 65 73 5d 3e 3e 31 30  aEntry[iRes]>>10
1cd0: 29 20 2b 20 28 61 45 6e 74 72 79 5b 69 52 65 73  ) + (aEntry[iRes
1ce0: 5d 26 30 78 33 46 46 29 29 29 3b 0a 20 20 7d 0a  ]&0x3FF)));.  }.
1cf0: 20 20 72 65 74 75 72 6e 20 31 3b 0a 7d 0a 0a 0a    return 1;.}...
1d00: 2f 2a 0a 2a 2a 20 49 66 20 74 68 65 20 61 72 67  /*.** If the arg
1d10: 75 6d 65 6e 74 20 69 73 20 61 20 63 6f 64 65 70  ument is a codep
1d20: 6f 69 6e 74 20 63 6f 72 72 65 73 70 6f 6e 64 69  oint correspondi
1d30: 6e 67 20 74 6f 20 61 20 6c 6f 77 65 72 63 61 73  ng to a lowercas
1d40: 65 20 6c 65 74 74 65 72 0a 2a 2a 20 69 6e 20 74  e letter.** in t
1d50: 68 65 20 41 53 43 49 49 20 72 61 6e 67 65 20 77  he ASCII range w
1d60: 69 74 68 20 61 20 64 69 61 63 72 69 74 69 63 20  ith a diacritic 
1d70: 61 64 64 65 64 2c 20 72 65 74 75 72 6e 20 74 68  added, return th
1d80: 65 20 63 6f 64 65 70 6f 69 6e 74 0a 2a 2a 20 6f  e codepoint.** o
1d90: 66 20 74 68 65 20 41 53 43 49 49 20 6c 65 74 74  f the ASCII lett
1da0: 65 72 20 6f 6e 6c 79 2e 20 46 6f 72 20 65 78 61  er only. For exa
1db0: 6d 70 6c 65 2c 20 69 66 20 70 61 73 73 65 64 20  mple, if passed 
1dc0: 32 33 35 20 2d 20 22 4c 41 54 49 4e 0a 2a 2a 20  235 - "LATIN.** 
1dd0: 53 4d 41 4c 4c 20 4c 45 54 54 45 52 20 45 20 57  SMALL LETTER E W
1de0: 49 54 48 20 44 49 41 45 52 45 53 49 53 22 20 2d  ITH DIAERESIS" -
1df0: 20 72 65 74 75 72 6e 20 36 35 20 28 22 4c 41 54   return 65 ("LAT
1e00: 49 4e 20 53 4d 41 4c 4c 20 4c 45 54 54 45 52 0a  IN SMALL LETTER.
1e10: 2a 2a 20 45 22 29 2e 20 54 68 65 20 72 65 73 75  ** E"). The resu
1e20: 6c 73 20 6f 66 20 70 61 73 73 69 6e 67 20 61 20  ls of passing a 
1e30: 63 6f 64 65 70 6f 69 6e 74 20 74 68 61 74 20 63  codepoint that c
1e40: 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 61 6e  orresponds to an
1e50: 0a 2a 2a 20 75 70 70 65 72 63 61 73 65 20 6c 65  .** uppercase le
1e60: 74 74 65 72 20 61 72 65 20 75 6e 64 65 66 69 6e  tter are undefin
1e70: 65 64 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 69 6e  ed..*/.static in
1e80: 74 20 72 65 6d 6f 76 65 5f 64 69 61 63 72 69 74  t remove_diacrit
1e90: 69 63 28 69 6e 74 20 63 2c 20 69 6e 74 20 62 43  ic(int c, int bC
1ea0: 6f 6d 70 6c 65 78 29 7b 0a 20 20 75 6e 73 69 67  omplex){.  unsig
1eb0: 6e 65 64 20 73 68 6f 72 74 20 61 44 69 61 5b 5d  ned short aDia[]
1ec0: 20 3d 20 7b 0a 20 20 20 20 20 20 20 20 30 2c 20   = {.        0, 
1ed0: 20 31 37 39 37 2c 20 20 31 38 34 38 2c 20 20 31   1797,  1848,  1
1ee0: 38 35 39 2c 20 20 31 38 39 31 2c 20 20 31 39 32  859,  1891,  192
1ef0: 38 2c 20 20 31 39 34 30 2c 20 20 31 39 39 35 2c  8,  1940,  1995,
1f00: 20 0a 20 20 20 20 20 32 30 32 34 2c 20 20 32 30   .     2024,  20
1f10: 34 30 2c 20 20 32 30 36 30 2c 20 20 32 31 31 30  40,  2060,  2110
1f20: 2c 20 20 32 31 36 38 2c 20 20 32 32 30 36 2c 20  ,  2168,  2206, 
1f30: 20 32 32 36 34 2c 20 20 32 32 38 36 2c 20 0a 20   2264,  2286, . 
1f40: 20 20 20 20 32 33 34 34 2c 20 20 32 33 38 33 2c      2344,  2383,
1f50: 20 20 32 34 37 32 2c 20 20 32 34 38 38 2c 20 20    2472,  2488,  
1f60: 32 35 31 36 2c 20 20 32 35 39 36 2c 20 20 32 36  2516,  2596,  26
1f70: 36 38 2c 20 20 32 37 33 32 2c 20 0a 20 20 20 20  68,  2732, .    
1f80: 20 32 37 38 32 2c 20 20 32 38 34 32 2c 20 20 32   2782,  2842,  2
1f90: 38 39 34 2c 20 20 32 39 35 34 2c 20 20 32 39 38  894,  2954,  298
1fa0: 34 2c 20 20 33 30 30 30 2c 20 20 33 30 32 38 2c  4,  3000,  3028,
1fb0: 20 20 33 33 33 36 2c 20 0a 20 20 20 20 20 33 34    3336, .     34
1fc0: 35 36 2c 20 20 33 36 39 36 2c 20 20 33 37 31 32  56,  3696,  3712
1fd0: 2c 20 20 33 37 32 38 2c 20 20 33 37 34 34 2c 20  ,  3728,  3744, 
1fe0: 20 33 37 36 36 2c 20 20 33 38 33 32 2c 20 20 33   3766,  3832,  3
1ff0: 38 39 36 2c 20 0a 20 20 20 20 20 33 39 31 32 2c  896, .     3912,
2000: 20 20 33 39 32 38 2c 20 20 33 39 34 34 2c 20 20    3928,  3944,  
2010: 33 39 36 38 2c 20 20 34 30 30 38 2c 20 20 34 30  3968,  4008,  40
2020: 34 30 2c 20 20 34 30 35 36 2c 20 20 34 31 30 36  40,  4056,  4106
2030: 2c 20 0a 20 20 20 20 20 34 31 33 38 2c 20 20 34  , .     4138,  4
2040: 31 37 30 2c 20 20 34 32 30 32 2c 20 20 34 32 33  170,  4202,  423
2050: 34 2c 20 20 34 32 36 36 2c 20 20 34 32 39 36 2c  4,  4266,  4296,
2060: 20 20 34 33 31 32 2c 20 20 34 33 34 34 2c 20 0a    4312,  4344, .
2070: 20 20 20 20 20 34 34 30 38 2c 20 20 34 34 32 34       4408,  4424
2080: 2c 20 20 34 34 34 32 2c 20 20 34 34 37 32 2c 20  ,  4442,  4472, 
2090: 20 34 34 38 38 2c 20 20 34 35 30 34 2c 20 20 36   4488,  4504,  6
20a0: 31 34 38 2c 20 20 36 31 39 38 2c 20 0a 20 20 20  148,  6198, .   
20b0: 20 20 36 32 36 34 2c 20 20 36 32 38 30 2c 20 20    6264,  6280,  
20c0: 36 33 36 30 2c 20 20 36 34 32 39 2c 20 20 36 35  6360,  6429,  65
20d0: 30 35 2c 20 20 36 35 32 39 2c 20 36 31 34 34 38  05,  6529, 61448
20e0: 2c 20 36 31 34 36 38 2c 20 0a 20 20 20 20 36 31  , 61468, .    61
20f0: 35 31 32 2c 20 36 31 35 33 34 2c 20 36 31 35 39  512, 61534, 6159
2100: 32 2c 20 36 31 36 31 30 2c 20 36 31 36 34 32 2c  2, 61610, 61642,
2110: 20 36 31 36 37 32 2c 20 36 31 36 38 38 2c 20 36   61672, 61688, 6
2120: 31 37 30 34 2c 20 0a 20 20 20 20 36 31 37 32 36  1704, .    61726
2130: 2c 20 36 31 37 38 34 2c 20 36 31 38 30 30 2c 20  , 61784, 61800, 
2140: 36 31 38 31 36 2c 20 36 31 38 33 36 2c 20 36 31  61816, 61836, 61
2150: 38 38 30 2c 20 36 31 38 39 36 2c 20 36 31 39 31  880, 61896, 6191
2160: 34 2c 20 0a 20 20 20 20 36 31 39 34 38 2c 20 36  4, .    61948, 6
2170: 31 39 39 38 2c 20 36 32 30 36 32 2c 20 36 32 31  1998, 62062, 621
2180: 32 32 2c 20 36 32 31 35 34 2c 20 36 32 31 38 34  22, 62154, 62184
2190: 2c 20 36 32 32 30 30 2c 20 36 32 32 31 38 2c 20  , 62200, 62218, 
21a0: 0a 20 20 20 20 36 32 32 35 32 2c 20 36 32 33 30  .    62252, 6230
21b0: 32 2c 20 36 32 33 36 34 2c 20 36 32 34 31 30 2c  2, 62364, 62410,
21c0: 20 36 32 34 34 32 2c 20 36 32 34 37 38 2c 20 36   62442, 62478, 6
21d0: 32 35 33 36 2c 20 36 32 35 35 34 2c 20 0a 20 20  2536, 62554, .  
21e0: 20 20 36 32 35 38 34 2c 20 36 32 36 30 34 2c 20    62584, 62604, 
21f0: 36 32 36 34 30 2c 20 36 32 36 34 38 2c 20 36 32  62640, 62648, 62
2200: 36 35 36 2c 20 36 32 36 36 34 2c 20 36 32 37 33  656, 62664, 6273
2210: 30 2c 20 36 32 37 36 36 2c 20 0a 20 20 20 20 36  0, 62766, .    6
2220: 32 38 33 30 2c 20 36 32 38 39 30 2c 20 36 32 39  2830, 62890, 629
2230: 32 34 2c 20 36 32 39 37 34 2c 20 36 33 30 33 32  24, 62974, 63032
2240: 2c 20 36 33 30 35 30 2c 20 36 33 30 38 32 2c 20  , 63050, 63082, 
2250: 36 33 31 31 38 2c 20 0a 20 20 20 20 36 33 31 38  63118, .    6318
2260: 32 2c 20 36 33 32 34 32 2c 20 36 33 32 37 34 2c  2, 63242, 63274,
2270: 20 36 33 33 31 30 2c 20 36 33 33 36 38 2c 20 36   63310, 63368, 6
2280: 33 33 39 30 2c 20 0a 20 20 7d 3b 0a 23 64 65 66  3390, .  };.#def
2290: 69 6e 65 20 48 49 42 49 54 20 28 28 75 6e 73 69  ine HIBIT ((unsi
22a0: 67 6e 65 64 20 63 68 61 72 29 30 78 38 30 29 0a  gned char)0x80).
22b0: 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20    unsigned char 
22c0: 61 43 68 61 72 5b 5d 20 3d 20 7b 0a 20 20 20 20  aChar[] = {.    
22d0: 27 5c 30 27 2c 20 20 20 20 20 20 27 61 27 2c 20  '\0',      'a', 
22e0: 20 20 20 20 20 20 27 63 27 2c 20 20 20 20 20 20        'c',      
22f0: 20 27 65 27 2c 20 20 20 20 20 20 20 27 69 27 2c   'e',       'i',
2300: 20 20 20 20 20 20 20 27 6e 27 2c 20 20 20 20 20         'n',     
2310: 20 20 0a 20 20 20 20 27 6f 27 2c 20 20 20 20 20    .    'o',     
2320: 20 20 27 75 27 2c 20 20 20 20 20 20 20 27 79 27    'u',       'y'
2330: 2c 20 20 20 20 20 20 20 27 79 27 2c 20 20 20 20  ,       'y',    
2340: 20 20 20 27 61 27 2c 20 20 20 20 20 20 20 27 63     'a',       'c
2350: 27 2c 20 20 20 20 20 20 20 0a 20 20 20 20 27 64  ',       .    'd
2360: 27 2c 20 20 20 20 20 20 20 27 65 27 2c 20 20 20  ',       'e',   
2370: 20 20 20 20 27 65 27 2c 20 20 20 20 20 20 20 27      'e',       '
2380: 67 27 2c 20 20 20 20 20 20 20 27 68 27 2c 20 20  g',       'h',  
2390: 20 20 20 20 20 27 69 27 2c 20 20 20 20 20 20 20       'i',       
23a0: 0a 20 20 20 20 27 6a 27 2c 20 20 20 20 20 20 20  .    'j',       
23b0: 27 6b 27 2c 20 20 20 20 20 20 20 27 6c 27 2c 20  'k',       'l', 
23c0: 20 20 20 20 20 20 27 6e 27 2c 20 20 20 20 20 20        'n',      
23d0: 20 27 6f 27 2c 20 20 20 20 20 20 20 27 72 27 2c   'o',       'r',
23e0: 20 20 20 20 20 20 20 0a 20 20 20 20 27 73 27 2c         .    's',
23f0: 20 20 20 20 20 20 20 27 74 27 2c 20 20 20 20 20         't',     
2400: 20 20 27 75 27 2c 20 20 20 20 20 20 20 27 75 27    'u',       'u'
2410: 2c 20 20 20 20 20 20 20 27 77 27 2c 20 20 20 20  ,       'w',    
2420: 20 20 20 27 79 27 2c 20 20 20 20 20 20 20 0a 20     'y',       . 
2430: 20 20 20 27 7a 27 2c 20 20 20 20 20 20 20 27 6f     'z',       'o
2440: 27 2c 20 20 20 20 20 20 20 27 75 27 2c 20 20 20  ',       'u',   
2450: 20 20 20 20 27 61 27 2c 20 20 20 20 20 20 20 27      'a',       '
2460: 69 27 2c 20 20 20 20 20 20 20 27 6f 27 2c 20 20  i',       'o',  
2470: 20 20 20 20 20 0a 20 20 20 20 27 75 27 2c 20 20       .    'u',  
2480: 20 20 20 20 20 27 75 27 7c 48 49 42 49 54 2c 20       'u'|HIBIT, 
2490: 27 61 27 7c 48 49 42 49 54 2c 20 27 67 27 2c 20  'a'|HIBIT, 'g', 
24a0: 20 20 20 20 20 20 27 6b 27 2c 20 20 20 20 20 20        'k',      
24b0: 20 27 6f 27 2c 20 20 20 20 20 20 20 0a 20 20 20   'o',       .   
24c0: 20 27 6f 27 7c 48 49 42 49 54 2c 20 27 6a 27 2c   'o'|HIBIT, 'j',
24d0: 20 20 20 20 20 20 20 27 67 27 2c 20 20 20 20 20         'g',     
24e0: 20 20 27 6e 27 2c 20 20 20 20 20 20 20 27 61 27    'n',       'a'
24f0: 7c 48 49 42 49 54 2c 20 27 61 27 2c 20 20 20 20  |HIBIT, 'a',    
2500: 20 20 20 0a 20 20 20 20 27 65 27 2c 20 20 20 20     .    'e',    
2510: 20 20 20 27 69 27 2c 20 20 20 20 20 20 20 27 6f     'i',       'o
2520: 27 2c 20 20 20 20 20 20 20 27 72 27 2c 20 20 20  ',       'r',   
2530: 20 20 20 20 27 75 27 2c 20 20 20 20 20 20 20 27      'u',       '
2540: 73 27 2c 20 20 20 20 20 20 20 0a 20 20 20 20 27  s',       .    '
2550: 74 27 2c 20 20 20 20 20 20 20 27 68 27 2c 20 20  t',       'h',  
2560: 20 20 20 20 20 27 61 27 2c 20 20 20 20 20 20 20       'a',       
2570: 27 65 27 2c 20 20 20 20 20 20 20 27 6f 27 7c 48  'e',       'o'|H
2580: 49 42 49 54 2c 20 27 6f 27 2c 20 20 20 20 20 20  IBIT, 'o',      
2590: 20 0a 20 20 20 20 27 6f 27 7c 48 49 42 49 54 2c   .    'o'|HIBIT,
25a0: 20 27 79 27 2c 20 20 20 20 20 20 20 27 5c 30 27   'y',       '\0'
25b0: 2c 20 20 20 20 20 20 27 5c 30 27 2c 20 20 20 20  ,      '\0',    
25c0: 20 20 27 5c 30 27 2c 20 20 20 20 20 20 27 5c 30    '\0',      '\0
25d0: 27 2c 20 20 20 20 20 20 0a 20 20 20 20 27 5c 30  ',      .    '\0
25e0: 27 2c 20 20 20 20 20 20 27 5c 30 27 2c 20 20 20  ',      '\0',   
25f0: 20 20 20 27 5c 30 27 2c 20 20 20 20 20 20 27 5c     '\0',      '\
2600: 30 27 2c 20 20 20 20 20 20 27 61 27 2c 20 20 20  0',      'a',   
2610: 20 20 20 20 27 62 27 2c 20 20 20 20 20 20 20 0a      'b',       .
2620: 20 20 20 20 27 63 27 7c 48 49 42 49 54 2c 20 27      'c'|HIBIT, '
2630: 64 27 2c 20 20 20 20 20 20 20 27 64 27 2c 20 20  d',       'd',  
2640: 20 20 20 20 20 27 65 27 7c 48 49 42 49 54 2c 20       'e'|HIBIT, 
2650: 27 65 27 2c 20 20 20 20 20 20 20 27 65 27 7c 48  'e',       'e'|H
2660: 49 42 49 54 2c 20 0a 20 20 20 20 27 66 27 2c 20  IBIT, .    'f', 
2670: 20 20 20 20 20 20 27 67 27 2c 20 20 20 20 20 20        'g',      
2680: 20 27 68 27 2c 20 20 20 20 20 20 20 27 68 27 2c   'h',       'h',
2690: 20 20 20 20 20 20 20 27 69 27 2c 20 20 20 20 20         'i',     
26a0: 20 20 27 69 27 7c 48 49 42 49 54 2c 20 0a 20 20    'i'|HIBIT, .  
26b0: 20 20 27 6b 27 2c 20 20 20 20 20 20 20 27 6c 27    'k',       'l'
26c0: 2c 20 20 20 20 20 20 20 27 6c 27 7c 48 49 42 49  ,       'l'|HIBI
26d0: 54 2c 20 27 6c 27 2c 20 20 20 20 20 20 20 27 6d  T, 'l',       'm
26e0: 27 2c 20 20 20 20 20 20 20 27 6e 27 2c 20 20 20  ',       'n',   
26f0: 20 20 20 20 0a 20 20 20 20 27 6f 27 7c 48 49 42      .    'o'|HIB
2700: 49 54 2c 20 27 70 27 2c 20 20 20 20 20 20 20 27  IT, 'p',       '
2710: 72 27 2c 20 20 20 20 20 20 20 27 72 27 7c 48 49  r',       'r'|HI
2720: 42 49 54 2c 20 27 72 27 2c 20 20 20 20 20 20 20  BIT, 'r',       
2730: 27 73 27 2c 20 20 20 20 20 20 20 0a 20 20 20 20  's',       .    
2740: 27 73 27 7c 48 49 42 49 54 2c 20 27 74 27 2c 20  's'|HIBIT, 't', 
2750: 20 20 20 20 20 20 27 75 27 2c 20 20 20 20 20 20        'u',      
2760: 20 27 75 27 7c 48 49 42 49 54 2c 20 27 76 27 2c   'u'|HIBIT, 'v',
2770: 20 20 20 20 20 20 20 27 77 27 2c 20 20 20 20 20         'w',     
2780: 20 20 0a 20 20 20 20 27 77 27 2c 20 20 20 20 20    .    'w',     
2790: 20 20 27 78 27 2c 20 20 20 20 20 20 20 27 79 27    'x',       'y'
27a0: 2c 20 20 20 20 20 20 20 27 7a 27 2c 20 20 20 20  ,       'z',    
27b0: 20 20 20 27 68 27 2c 20 20 20 20 20 20 20 27 74     'h',       't
27c0: 27 2c 20 20 20 20 20 20 20 0a 20 20 20 20 27 77  ',       .    'w
27d0: 27 2c 20 20 20 20 20 20 20 27 79 27 2c 20 20 20  ',       'y',   
27e0: 20 20 20 20 27 61 27 2c 20 20 20 20 20 20 20 27      'a',       '
27f0: 61 27 7c 48 49 42 49 54 2c 20 27 61 27 7c 48 49  a'|HIBIT, 'a'|HI
2800: 42 49 54 2c 20 27 61 27 7c 48 49 42 49 54 2c 20  BIT, 'a'|HIBIT, 
2810: 0a 20 20 20 20 27 65 27 2c 20 20 20 20 20 20 20  .    'e',       
2820: 27 65 27 7c 48 49 42 49 54 2c 20 27 65 27 7c 48  'e'|HIBIT, 'e'|H
2830: 49 42 49 54 2c 20 27 69 27 2c 20 20 20 20 20 20  IBIT, 'i',      
2840: 20 27 6f 27 2c 20 20 20 20 20 20 20 27 6f 27 7c   'o',       'o'|
2850: 48 49 42 49 54 2c 20 0a 20 20 20 20 27 6f 27 7c  HIBIT, .    'o'|
2860: 48 49 42 49 54 2c 20 27 6f 27 7c 48 49 42 49 54  HIBIT, 'o'|HIBIT
2870: 2c 20 27 75 27 2c 20 20 20 20 20 20 20 27 75 27  , 'u',       'u'
2880: 7c 48 49 42 49 54 2c 20 27 75 27 7c 48 49 42 49  |HIBIT, 'u'|HIBI
2890: 54 2c 20 27 79 27 2c 20 20 20 20 20 20 20 0a 20  T, 'y',       . 
28a0: 20 7d 3b 0a 0a 20 20 75 6e 73 69 67 6e 65 64 20   };..  unsigned 
28b0: 69 6e 74 20 6b 65 79 20 3d 20 28 28 28 75 6e 73  int key = (((uns
28c0: 69 67 6e 65 64 20 69 6e 74 29 63 29 3c 3c 33 29  igned int)c)<<3)
28d0: 20 7c 20 30 78 30 30 30 30 30 30 30 37 3b 0a 20   | 0x00000007;. 
28e0: 20 69 6e 74 20 69 52 65 73 20 3d 20 30 3b 0a 20   int iRes = 0;. 
28f0: 20 69 6e 74 20 69 48 69 20 3d 20 73 69 7a 65 6f   int iHi = sizeo
2900: 66 28 61 44 69 61 29 2f 73 69 7a 65 6f 66 28 61  f(aDia)/sizeof(a
2910: 44 69 61 5b 30 5d 29 20 2d 20 31 3b 0a 20 20 69  Dia[0]) - 1;.  i
2920: 6e 74 20 69 4c 6f 20 3d 20 30 3b 0a 20 20 77 68  nt iLo = 0;.  wh
2930: 69 6c 65 28 20 69 48 69 3e 3d 69 4c 6f 20 29 7b  ile( iHi>=iLo ){
2940: 0a 20 20 20 20 69 6e 74 20 69 54 65 73 74 20 3d  .    int iTest =
2950: 20 28 69 48 69 20 2b 20 69 4c 6f 29 20 2f 20 32   (iHi + iLo) / 2
2960: 3b 0a 20 20 20 20 69 66 28 20 6b 65 79 20 3e 3d  ;.    if( key >=
2970: 20 61 44 69 61 5b 69 54 65 73 74 5d 20 29 7b 0a   aDia[iTest] ){.
2980: 20 20 20 20 20 20 69 52 65 73 20 3d 20 69 54 65        iRes = iTe
2990: 73 74 3b 0a 20 20 20 20 20 20 69 4c 6f 20 3d 20  st;.      iLo = 
29a0: 69 54 65 73 74 2b 31 3b 0a 20 20 20 20 7d 65 6c  iTest+1;.    }el
29b0: 73 65 7b 0a 20 20 20 20 20 20 69 48 69 20 3d 20  se{.      iHi = 
29c0: 69 54 65 73 74 2d 31 3b 0a 20 20 20 20 7d 0a 20  iTest-1;.    }. 
29d0: 20 7d 0a 20 20 61 73 73 65 72 74 28 20 6b 65 79   }.  assert( key
29e0: 3e 3d 61 44 69 61 5b 69 52 65 73 5d 20 29 3b 0a  >=aDia[iRes] );.
29f0: 20 20 69 66 28 20 62 43 6f 6d 70 6c 65 78 3d 3d    if( bComplex==
2a00: 30 20 26 26 20 28 61 43 68 61 72 5b 69 52 65 73  0 && (aChar[iRes
2a10: 5d 20 26 20 30 78 38 30 29 20 29 20 72 65 74 75  ] & 0x80) ) retu
2a20: 72 6e 20 63 3b 0a 20 20 72 65 74 75 72 6e 20 28  rn c;.  return (
2a30: 63 20 3e 20 28 61 44 69 61 5b 69 52 65 73 5d 3e  c > (aDia[iRes]>
2a40: 3e 33 29 20 2b 20 28 61 44 69 61 5b 69 52 65 73  >3) + (aDia[iRes
2a50: 5d 26 30 78 30 37 29 29 20 3f 20 63 20 3a 20 28  ]&0x07)) ? c : (
2a60: 28 69 6e 74 29 61 43 68 61 72 5b 69 52 65 73 5d  (int)aChar[iRes]
2a70: 20 26 20 30 78 37 46 29 3b 0a 7d 0a 0a 0a 2f 2a   & 0x7F);.}.../*
2a80: 0a 2a 2a 20 52 65 74 75 72 6e 20 74 72 75 65 20  .** Return true 
2a90: 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  if the argument 
2aa0: 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61  interpreted as a
2ab0: 20 75 6e 69 63 6f 64 65 20 63 6f 64 65 70 6f 69   unicode codepoi
2ac0: 6e 74 0a 2a 2a 20 69 73 20 61 20 64 69 61 63 72  nt.** is a diacr
2ad0: 69 74 69 63 61 6c 20 6d 6f 64 69 66 69 65 72 20  itical modifier 
2ae0: 63 68 61 72 61 63 74 65 72 2e 0a 2a 2f 0a 69 6e  character..*/.in
2af0: 74 20 73 71 6c 69 74 65 33 46 74 73 55 6e 69 63  t sqlite3FtsUnic
2b00: 6f 64 65 49 73 64 69 61 63 72 69 74 69 63 28 69  odeIsdiacritic(i
2b10: 6e 74 20 63 29 7b 0a 20 20 75 6e 73 69 67 6e 65  nt c){.  unsigne
2b20: 64 20 69 6e 74 20 6d 61 73 6b 30 20 3d 20 30 78  d int mask0 = 0x
2b30: 30 38 30 32 39 46 44 46 3b 0a 20 20 75 6e 73 69  08029FDF;.  unsi
2b40: 67 6e 65 64 20 69 6e 74 20 6d 61 73 6b 31 20 3d  gned int mask1 =
2b50: 20 30 78 30 30 30 33 36 31 46 38 3b 0a 20 20 69   0x000361F8;.  i
2b60: 66 28 20 63 3c 37 36 38 20 7c 7c 20 63 3e 38 31  f( c<768 || c>81
2b70: 37 20 29 20 72 65 74 75 72 6e 20 30 3b 0a 20 20  7 ) return 0;.  
2b80: 72 65 74 75 72 6e 20 28 63 20 3c 20 37 36 38 2b  return (c < 768+
2b90: 33 32 29 20 3f 0a 20 20 20 20 20 20 28 6d 61 73  32) ?.      (mas
2ba0: 6b 30 20 26 20 28 28 75 6e 73 69 67 6e 65 64 20  k0 & ((unsigned 
2bb0: 69 6e 74 29 31 20 3c 3c 20 28 63 2d 37 36 38 29  int)1 << (c-768)
2bc0: 29 29 20 3a 0a 20 20 20 20 20 20 28 6d 61 73 6b  )) :.      (mask
2bd0: 31 20 26 20 28 28 75 6e 73 69 67 6e 65 64 20 69  1 & ((unsigned i
2be0: 6e 74 29 31 20 3c 3c 20 28 63 2d 37 36 38 2d 33  nt)1 << (c-768-3
2bf0: 32 29 29 29 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20  2)));.}.../*.** 
2c00: 49 6e 74 65 72 70 72 65 74 20 74 68 65 20 61 72  Interpret the ar
2c10: 67 75 6d 65 6e 74 20 61 73 20 61 20 75 6e 69 63  gument as a unic
2c20: 6f 64 65 20 63 6f 64 65 70 6f 69 6e 74 2e 20 49  ode codepoint. I
2c30: 66 20 74 68 65 20 63 6f 64 65 70 6f 69 6e 74 0a  f the codepoint.
2c40: 2a 2a 20 69 73 20 61 6e 20 75 70 70 65 72 20 63  ** is an upper c
2c50: 61 73 65 20 63 68 61 72 61 63 74 65 72 20 74 68  ase character th
2c60: 61 74 20 68 61 73 20 61 20 6c 6f 77 65 72 20 63  at has a lower c
2c70: 61 73 65 20 65 71 75 69 76 61 6c 65 6e 74 2c 0a  ase equivalent,.
2c80: 2a 2a 20 72 65 74 75 72 6e 20 74 68 65 20 63 6f  ** return the co
2c90: 64 65 70 6f 69 6e 74 20 63 6f 72 72 65 73 70 6f  depoint correspo
2ca0: 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6c 6f 77  nding to the low
2cb0: 65 72 20 63 61 73 65 20 76 65 72 73 69 6f 6e 2e  er case version.
2cc0: 0a 2a 2a 20 4f 74 68 65 72 77 69 73 65 2c 20 72  .** Otherwise, r
2cd0: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
2ce0: 74 68 65 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a  the argument..**
2cf0: 0a 2a 2a 20 54 68 65 20 72 65 73 75 6c 74 73 20  .** The results 
2d00: 61 72 65 20 75 6e 64 65 66 69 6e 65 64 20 69 66  are undefined if
2d10: 20 74 68 65 20 76 61 6c 75 65 20 70 61 73 73 65   the value passe
2d20: 64 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69  d to this functi
2d30: 6f 6e 0a 2a 2a 20 69 73 20 6c 65 73 73 20 74 68  on.** is less th
2d40: 61 6e 20 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e 74 20  an zero..*/.int 
2d50: 73 71 6c 69 74 65 33 46 74 73 55 6e 69 63 6f 64  sqlite3FtsUnicod
2d60: 65 46 6f 6c 64 28 69 6e 74 20 63 2c 20 69 6e 74  eFold(int c, int
2d70: 20 65 52 65 6d 6f 76 65 44 69 61 63 72 69 74 69   eRemoveDiacriti
2d80: 63 29 7b 0a 20 20 2f 2a 20 45 61 63 68 20 65 6e  c){.  /* Each en
2d90: 74 72 79 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f  try in the follo
2da0: 77 69 6e 67 20 61 72 72 61 79 20 64 65 66 69 6e  wing array defin
2db0: 65 73 20 61 20 72 75 6c 65 20 66 6f 72 20 66 6f  es a rule for fo
2dc0: 6c 64 69 6e 67 20 61 20 72 61 6e 67 65 0a 20 20  lding a range.  
2dd0: 2a 2a 20 6f 66 20 63 6f 64 65 70 6f 69 6e 74 73  ** of codepoints
2de0: 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20   to lower case. 
2df0: 54 68 65 20 72 75 6c 65 20 61 70 70 6c 69 65 73  The rule applies
2e00: 20 74 6f 20 61 20 72 61 6e 67 65 20 6f 66 20 6e   to a range of n
2e10: 52 61 6e 67 65 0a 20 20 2a 2a 20 63 6f 64 65 70  Range.  ** codep
2e20: 6f 69 6e 74 73 20 73 74 61 72 74 69 6e 67 20 61  oints starting a
2e30: 74 20 63 6f 64 65 70 6f 69 6e 74 20 69 43 6f 64  t codepoint iCod
2e40: 65 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 49 66 20  e..  **.  ** If 
2e50: 74 68 65 20 6c 65 61 73 74 20 73 69 67 6e 69 66  the least signif
2e60: 69 63 61 6e 74 20 62 69 74 20 69 6e 20 66 6c 61  icant bit in fla
2e70: 67 73 20 69 73 20 63 6c 65 61 72 2c 20 74 68 65  gs is clear, the
2e80: 6e 20 74 68 65 20 72 75 6c 65 20 61 70 70 6c 69  n the rule appli
2e90: 65 73 0a 20 20 2a 2a 20 74 6f 20 61 6c 6c 20 6e  es.  ** to all n
2ea0: 52 61 6e 67 65 20 63 6f 64 65 70 6f 69 6e 74 73  Range codepoints
2eb0: 20 28 69 2e 65 2e 20 61 6c 6c 20 6e 52 61 6e 67   (i.e. all nRang
2ec0: 65 20 63 6f 64 65 70 6f 69 6e 74 73 20 61 72 65  e codepoints are
2ed0: 20 75 70 70 65 72 20 63 61 73 65 20 61 6e 64 0a   upper case and.
2ee0: 20 20 2a 2a 20 6e 65 65 64 20 74 6f 20 62 65 20    ** need to be 
2ef0: 66 6f 6c 64 65 64 29 2e 20 4f 72 2c 20 69 66 20  folded). Or, if 
2f00: 69 74 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20  it is set, then 
2f10: 74 68 65 20 72 75 6c 65 20 6f 6e 6c 79 20 61 70  the rule only ap
2f20: 70 6c 69 65 73 20 74 6f 0a 20 20 2a 2a 20 65 76  plies to.  ** ev
2f30: 65 72 79 20 73 65 63 6f 6e 64 20 63 6f 64 65 70  ery second codep
2f40: 6f 69 6e 74 20 69 6e 20 74 68 65 20 72 61 6e 67  oint in the rang
2f50: 65 2c 20 73 74 61 72 74 69 6e 67 20 77 69 74 68  e, starting with
2f60: 20 63 6f 64 65 70 6f 69 6e 74 20 43 2e 0a 20 20   codepoint C..  
2f70: 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 37 20 6d 6f  **.  ** The 7 mo
2f80: 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62  st significant b
2f90: 69 74 73 20 69 6e 20 66 6c 61 67 73 20 61 72 65  its in flags are
2fa0: 20 61 6e 20 69 6e 64 65 78 20 69 6e 74 6f 20 74   an index into t
2fb0: 68 65 20 61 69 4f 66 66 5b 5d 0a 20 20 2a 2a 20  he aiOff[].  ** 
2fc0: 61 72 72 61 79 2e 20 49 66 20 61 20 73 70 65 63  array. If a spec
2fd0: 69 66 69 63 20 63 6f 64 65 70 6f 69 6e 74 20 43  ific codepoint C
2fe0: 20 64 6f 65 73 20 72 65 71 75 69 72 65 20 66 6f   does require fo
2ff0: 6c 64 69 6e 67 2c 20 74 68 65 6e 20 69 74 73 20  lding, then its 
3000: 6c 6f 77 65 72 0a 20 20 2a 2a 20 63 61 73 65 20  lower.  ** case 
3010: 65 71 75 69 76 61 6c 65 6e 74 20 69 73 20 28 28  equivalent is ((
3020: 43 20 2b 20 61 69 4f 66 66 5b 66 6c 61 67 73 3e  C + aiOff[flags>
3030: 3e 31 5d 29 20 26 20 30 78 46 46 46 46 29 2e 0a  >1]) & 0xFFFF)..
3040: 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 63 6f    **.  ** The co
3050: 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 73 20 61  ntents of this a
3060: 72 72 61 79 20 61 72 65 20 67 65 6e 65 72 61 74  rray are generat
3070: 65 64 20 62 79 20 70 61 72 73 69 6e 67 20 74 68  ed by parsing th
3080: 65 20 43 61 73 65 46 6f 6c 64 69 6e 67 2e 74 78  e CaseFolding.tx
3090: 74 0a 20 20 2a 2a 20 66 69 6c 65 20 64 69 73 74  t.  ** file dist
30a0: 72 69 62 75 74 65 64 20 61 73 20 70 61 72 74 20  ributed as part 
30b0: 6f 66 20 74 68 65 20 22 55 6e 69 63 6f 64 65 20  of the "Unicode 
30c0: 43 68 61 72 61 63 74 65 72 20 44 61 74 61 62 61  Character Databa
30d0: 73 65 22 2e 20 53 65 65 0a 20 20 2a 2a 20 68 74  se". See.  ** ht
30e0: 74 70 3a 2f 2f 77 77 77 2e 75 6e 69 63 6f 64 65  tp://www.unicode
30f0: 2e 6f 72 67 20 66 6f 72 20 64 65 74 61 69 6c 73  .org for details
3100: 2e 0a 20 20 2a 2f 0a 20 20 73 74 61 74 69 63 20  ..  */.  static 
3110: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 54 61 62  const struct Tab
3120: 6c 65 45 6e 74 72 79 20 7b 0a 20 20 20 20 75 6e  leEntry {.    un
3130: 73 69 67 6e 65 64 20 73 68 6f 72 74 20 69 43 6f  signed short iCo
3140: 64 65 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64  de;.    unsigned
3150: 20 63 68 61 72 20 66 6c 61 67 73 3b 0a 20 20 20   char flags;.   
3160: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6e   unsigned char n
3170: 52 61 6e 67 65 3b 0a 20 20 7d 20 61 45 6e 74 72  Range;.  } aEntr
3180: 79 5b 5d 20 3d 20 7b 0a 20 20 20 20 7b 36 35 2c  y[] = {.    {65,
3190: 20 31 34 2c 20 32 36 7d 2c 20 20 20 20 20 20 20   14, 26},       
31a0: 20 20 20 7b 31 38 31 2c 20 36 34 2c 20 31 7d 2c     {181, 64, 1},
31b0: 20 20 20 20 20 20 20 20 20 20 7b 31 39 32 2c 20            {192, 
31c0: 31 34 2c 20 32 33 7d 2c 0a 20 20 20 20 7b 32 31  14, 23},.    {21
31d0: 36 2c 20 31 34 2c 20 37 7d 2c 20 20 20 20 20 20  6, 14, 7},      
31e0: 20 20 20 20 7b 32 35 36 2c 20 31 2c 20 34 38 7d      {256, 1, 48}
31f0: 2c 20 20 20 20 20 20 20 20 20 20 7b 33 30 36 2c  ,          {306,
3200: 20 31 2c 20 36 7d 2c 0a 20 20 20 20 7b 33 31 33   1, 6},.    {313
3210: 2c 20 31 2c 20 31 36 7d 2c 20 20 20 20 20 20 20  , 1, 16},       
3220: 20 20 20 7b 33 33 30 2c 20 31 2c 20 34 36 7d 2c     {330, 1, 46},
3230: 20 20 20 20 20 20 20 20 20 20 7b 33 37 36 2c 20            {376, 
3240: 31 31 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 37  116, 1},.    {37
3250: 37 2c 20 31 2c 20 36 7d 2c 20 20 20 20 20 20 20  7, 1, 6},       
3260: 20 20 20 20 7b 33 38 33 2c 20 31 30 34 2c 20 31      {383, 104, 1
3270: 7d 2c 20 20 20 20 20 20 20 20 20 7b 33 38 35 2c  },         {385,
3280: 20 35 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 38   50, 1},.    {38
3290: 36 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20 20 20  6, 1, 4},       
32a0: 20 20 20 20 7b 33 39 30 2c 20 34 34 2c 20 31 7d      {390, 44, 1}
32b0: 2c 20 20 20 20 20 20 20 20 20 20 7b 33 39 31 2c  ,          {391,
32c0: 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 39 33   0, 1},.    {393
32d0: 2c 20 34 32 2c 20 32 7d 2c 20 20 20 20 20 20 20  , 42, 2},       
32e0: 20 20 20 7b 33 39 35 2c 20 30 2c 20 31 7d 2c 20     {395, 0, 1}, 
32f0: 20 20 20 20 20 20 20 20 20 20 7b 33 39 38 2c 20            {398, 
3300: 33 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 33 39 39  32, 1},.    {399
3310: 2c 20 33 38 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 38, 1},       
3320: 20 20 20 7b 34 30 30 2c 20 34 30 2c 20 31 7d 2c     {400, 40, 1},
3330: 20 20 20 20 20 20 20 20 20 20 7b 34 30 31 2c 20            {401, 
3340: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 30 33 2c  0, 1},.    {403,
3350: 20 34 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   42, 1},        
3360: 20 20 7b 34 30 34 2c 20 34 36 2c 20 31 7d 2c 20    {404, 46, 1}, 
3370: 20 20 20 20 20 20 20 20 20 7b 34 30 36 2c 20 35           {406, 5
3380: 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 30 37 2c  2, 1},.    {407,
3390: 20 34 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   48, 1},        
33a0: 20 20 7b 34 30 38 2c 20 30 2c 20 31 7d 2c 20 20    {408, 0, 1},  
33b0: 20 20 20 20 20 20 20 20 20 7b 34 31 32 2c 20 35           {412, 5
33c0: 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 31 33 2c  2, 1},.    {413,
33d0: 20 35 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   54, 1},        
33e0: 20 20 7b 34 31 35 2c 20 35 36 2c 20 31 7d 2c 20    {415, 56, 1}, 
33f0: 20 20 20 20 20 20 20 20 20 7b 34 31 36 2c 20 31           {416, 1
3400: 2c 20 36 7d 2c 0a 20 20 20 20 7b 34 32 32 2c 20  , 6},.    {422, 
3410: 36 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  60, 1},         
3420: 20 7b 34 32 33 2c 20 30 2c 20 31 7d 2c 20 20 20   {423, 0, 1},   
3430: 20 20 20 20 20 20 20 20 7b 34 32 35 2c 20 36 30          {425, 60
3440: 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 32 38 2c 20  , 1},.    {428, 
3450: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  0, 1},          
3460: 20 7b 34 33 30 2c 20 36 30 2c 20 31 7d 2c 20 20   {430, 60, 1},  
3470: 20 20 20 20 20 20 20 20 7b 34 33 31 2c 20 30 2c          {431, 0,
3480: 20 31 7d 2c 0a 20 20 20 20 7b 34 33 33 2c 20 35   1},.    {433, 5
3490: 38 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 20 20  8, 2},          
34a0: 7b 34 33 35 2c 20 31 2c 20 34 7d 2c 20 20 20 20  {435, 1, 4},    
34b0: 20 20 20 20 20 20 20 7b 34 33 39 2c 20 36 32 2c         {439, 62,
34c0: 20 31 7d 2c 0a 20 20 20 20 7b 34 34 30 2c 20 30   1},.    {440, 0
34d0: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20  , 1},           
34e0: 7b 34 34 34 2c 20 30 2c 20 31 7d 2c 20 20 20 20  {444, 0, 1},    
34f0: 20 20 20 20 20 20 20 7b 34 35 32 2c 20 32 2c 20         {452, 2, 
3500: 31 7d 2c 0a 20 20 20 20 7b 34 35 33 2c 20 30 2c  1},.    {453, 0,
3510: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b   1},           {
3520: 34 35 35 2c 20 32 2c 20 31 7d 2c 20 20 20 20 20  455, 2, 1},     
3530: 20 20 20 20 20 20 7b 34 35 36 2c 20 30 2c 20 31        {456, 0, 1
3540: 7d 2c 0a 20 20 20 20 7b 34 35 38 2c 20 32 2c 20  },.    {458, 2, 
3550: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  1},           {4
3560: 35 39 2c 20 31 2c 20 31 38 7d 2c 20 20 20 20 20  59, 1, 18},     
3570: 20 20 20 20 20 7b 34 37 38 2c 20 31 2c 20 31 38       {478, 1, 18
3580: 7d 2c 0a 20 20 20 20 7b 34 39 37 2c 20 32 2c 20  },.    {497, 2, 
3590: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  1},           {4
35a0: 39 38 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20 20  98, 1, 4},      
35b0: 20 20 20 20 20 7b 35 30 32 2c 20 31 32 32 2c 20       {502, 122, 
35c0: 31 7d 2c 0a 20 20 20 20 7b 35 30 33 2c 20 31 33  1},.    {503, 13
35d0: 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  4, 1},         {
35e0: 35 30 34 2c 20 31 2c 20 34 30 7d 2c 20 20 20 20  504, 1, 40},    
35f0: 20 20 20 20 20 20 7b 35 34 34 2c 20 31 31 30 2c        {544, 110,
3600: 20 31 7d 2c 0a 20 20 20 20 7b 35 34 36 2c 20 31   1},.    {546, 1
3610: 2c 20 31 38 7d 2c 20 20 20 20 20 20 20 20 20 20  , 18},          
3620: 7b 35 37 30 2c 20 37 30 2c 20 31 7d 2c 20 20 20  {570, 70, 1},   
3630: 20 20 20 20 20 20 20 7b 35 37 31 2c 20 30 2c 20         {571, 0, 
3640: 31 7d 2c 0a 20 20 20 20 7b 35 37 33 2c 20 31 30  1},.    {573, 10
3650: 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  8, 1},         {
3660: 35 37 34 2c 20 36 38 2c 20 31 7d 2c 20 20 20 20  574, 68, 1},    
3670: 20 20 20 20 20 20 7b 35 37 37 2c 20 30 2c 20 31        {577, 0, 1
3680: 7d 2c 0a 20 20 20 20 7b 35 37 39 2c 20 31 30 36  },.    {579, 106
3690: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 35  , 1},         {5
36a0: 38 30 2c 20 32 38 2c 20 31 7d 2c 20 20 20 20 20  80, 28, 1},     
36b0: 20 20 20 20 20 7b 35 38 31 2c 20 33 30 2c 20 31       {581, 30, 1
36c0: 7d 2c 0a 20 20 20 20 7b 35 38 32 2c 20 31 2c 20  },.    {582, 1, 
36d0: 31 30 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 38  10},          {8
36e0: 33 37 2c 20 33 36 2c 20 31 7d 2c 20 20 20 20 20  37, 36, 1},     
36f0: 20 20 20 20 20 7b 38 38 30 2c 20 31 2c 20 34 7d       {880, 1, 4}
3700: 2c 0a 20 20 20 20 7b 38 38 36 2c 20 30 2c 20 31  ,.    {886, 0, 1
3710: 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 39 30  },           {90
3720: 32 2c 20 31 38 2c 20 31 7d 2c 20 20 20 20 20 20  2, 18, 1},      
3730: 20 20 20 20 7b 39 30 34 2c 20 31 36 2c 20 33 7d      {904, 16, 3}
3740: 2c 0a 20 20 20 20 7b 39 30 38 2c 20 32 36 2c 20  ,.    {908, 26, 
3750: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39 31  1},          {91
3760: 30 2c 20 32 34 2c 20 32 7d 2c 20 20 20 20 20 20  0, 24, 2},      
3770: 20 20 20 20 7b 39 31 33 2c 20 31 34 2c 20 31 37      {913, 14, 17
3780: 7d 2c 0a 20 20 20 20 7b 39 33 31 2c 20 31 34 2c  },.    {931, 14,
3790: 20 39 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39   9},          {9
37a0: 36 32 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20  62, 0, 1},      
37b0: 20 20 20 20 20 7b 39 37 35 2c 20 34 2c 20 31 7d       {975, 4, 1}
37c0: 2c 0a 20 20 20 20 7b 39 37 36 2c 20 31 34 30 2c  ,.    {976, 140,
37d0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 39 37   1},         {97
37e0: 37 2c 20 31 34 32 2c 20 31 7d 2c 20 20 20 20 20  7, 142, 1},     
37f0: 20 20 20 20 7b 39 38 31 2c 20 31 34 36 2c 20 31      {981, 146, 1
3800: 7d 2c 0a 20 20 20 20 7b 39 38 32 2c 20 31 34 34  },.    {982, 144
3810: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 39  , 1},         {9
3820: 38 34 2c 20 31 2c 20 32 34 7d 2c 20 20 20 20 20  84, 1, 24},     
3830: 20 20 20 20 20 7b 31 30 30 38 2c 20 31 33 36 2c       {1008, 136,
3840: 20 31 7d 2c 0a 20 20 20 20 7b 31 30 30 39 2c 20   1},.    {1009, 
3850: 31 33 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  138, 1},        
3860: 7b 31 30 31 32 2c 20 31 33 30 2c 20 31 7d 2c 20  {1012, 130, 1}, 
3870: 20 20 20 20 20 20 20 7b 31 30 31 33 2c 20 31 32         {1013, 12
3880: 38 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 30 31 35  8, 1},.    {1015
3890: 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  , 0, 1},        
38a0: 20 20 7b 31 30 31 37 2c 20 31 35 32 2c 20 31 7d    {1017, 152, 1}
38b0: 2c 20 20 20 20 20 20 20 20 7b 31 30 31 38 2c 20  ,        {1018, 
38c0: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 30 32 31  0, 1},.    {1021
38d0: 2c 20 31 31 30 2c 20 33 7d 2c 20 20 20 20 20 20  , 110, 3},      
38e0: 20 20 7b 31 30 32 34 2c 20 33 34 2c 20 31 36 7d    {1024, 34, 16}
38f0: 2c 20 20 20 20 20 20 20 20 7b 31 30 34 30 2c 20  ,        {1040, 
3900: 31 34 2c 20 33 32 7d 2c 0a 20 20 20 20 7b 31 31  14, 32},.    {11
3910: 32 30 2c 20 31 2c 20 33 34 7d 2c 20 20 20 20 20  20, 1, 34},     
3920: 20 20 20 20 7b 31 31 36 32 2c 20 31 2c 20 35 34      {1162, 1, 54
3930: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 32 31 36  },         {1216
3940: 2c 20 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 32  , 6, 1},.    {12
3950: 31 37 2c 20 31 2c 20 31 34 7d 2c 20 20 20 20 20  17, 1, 14},     
3960: 20 20 20 20 7b 31 32 33 32 2c 20 31 2c 20 38 38      {1232, 1, 88
3970: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 33 32 39  },         {1329
3980: 2c 20 32 32 2c 20 33 38 7d 2c 0a 20 20 20 20 7b  , 22, 38},.    {
3990: 34 32 35 36 2c 20 36 36 2c 20 33 38 7d 2c 20 20  4256, 66, 38},  
39a0: 20 20 20 20 20 20 7b 34 32 39 35 2c 20 36 36 2c        {4295, 66,
39b0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 34 33   1},         {43
39c0: 30 31 2c 20 36 36 2c 20 31 7d 2c 0a 20 20 20 20  01, 66, 1},.    
39d0: 7b 37 36 38 30 2c 20 31 2c 20 31 35 30 7d 2c 20  {7680, 1, 150}, 
39e0: 20 20 20 20 20 20 20 7b 37 38 33 35 2c 20 31 33         {7835, 13
39f0: 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 37  2, 1},        {7
3a00: 38 33 38 2c 20 39 36 2c 20 31 7d 2c 0a 20 20 20  838, 96, 1},.   
3a10: 20 7b 37 38 34 30 2c 20 31 2c 20 39 36 7d 2c 20   {7840, 1, 96}, 
3a20: 20 20 20 20 20 20 20 20 7b 37 39 34 34 2c 20 31          {7944, 1
3a30: 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b  50, 8},        {
3a40: 37 39 36 30 2c 20 31 35 30 2c 20 36 7d 2c 0a 20  7960, 150, 6},. 
3a50: 20 20 20 7b 37 39 37 36 2c 20 31 35 30 2c 20 38     {7976, 150, 8
3a60: 7d 2c 20 20 20 20 20 20 20 20 7b 37 39 39 32 2c  },        {7992,
3a70: 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20   150, 8},       
3a80: 20 7b 38 30 30 38 2c 20 31 35 30 2c 20 36 7d 2c   {8008, 150, 6},
3a90: 0a 20 20 20 20 7b 38 30 32 35 2c 20 31 35 31 2c  .    {8025, 151,
3aa0: 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38 30 34   8},        {804
3ab0: 30 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20  0, 150, 8},     
3ac0: 20 20 20 7b 38 30 37 32 2c 20 31 35 30 2c 20 38     {8072, 150, 8
3ad0: 7d 2c 0a 20 20 20 20 7b 38 30 38 38 2c 20 31 35  },.    {8088, 15
3ae0: 30 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38  0, 8},        {8
3af0: 31 30 34 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20  104, 150, 8},   
3b00: 20 20 20 20 20 7b 38 31 32 30 2c 20 31 35 30 2c       {8120, 150,
3b10: 20 32 7d 2c 0a 20 20 20 20 7b 38 31 32 32 2c 20   2},.    {8122, 
3b20: 31 32 36 2c 20 32 7d 2c 20 20 20 20 20 20 20 20  126, 2},        
3b30: 7b 38 31 32 34 2c 20 31 34 38 2c 20 31 7d 2c 20  {8124, 148, 1}, 
3b40: 20 20 20 20 20 20 20 7b 38 31 32 36 2c 20 31 30         {8126, 10
3b50: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 38 31 33 36  0, 1},.    {8136
3b60: 2c 20 31 32 34 2c 20 34 7d 2c 20 20 20 20 20 20  , 124, 4},      
3b70: 20 20 7b 38 31 34 30 2c 20 31 34 38 2c 20 31 7d    {8140, 148, 1}
3b80: 2c 20 20 20 20 20 20 20 20 7b 38 31 35 32 2c 20  ,        {8152, 
3b90: 31 35 30 2c 20 32 7d 2c 0a 20 20 20 20 7b 38 31  150, 2},.    {81
3ba0: 35 34 2c 20 31 32 30 2c 20 32 7d 2c 20 20 20 20  54, 120, 2},    
3bb0: 20 20 20 20 7b 38 31 36 38 2c 20 31 35 30 2c 20      {8168, 150, 
3bc0: 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 37 30  2},        {8170
3bd0: 2c 20 31 31 38 2c 20 32 7d 2c 0a 20 20 20 20 7b  , 118, 2},.    {
3be0: 38 31 37 32 2c 20 31 35 32 2c 20 31 7d 2c 20 20  8172, 152, 1},  
3bf0: 20 20 20 20 20 20 7b 38 31 38 34 2c 20 31 31 32        {8184, 112
3c00: 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31  , 2},        {81
3c10: 38 36 2c 20 31 31 34 2c 20 32 7d 2c 0a 20 20 20  86, 114, 2},.   
3c20: 20 7b 38 31 38 38 2c 20 31 34 38 2c 20 31 7d 2c   {8188, 148, 1},
3c30: 20 20 20 20 20 20 20 20 7b 38 34 38 36 2c 20 39          {8486, 9
3c40: 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  8, 1},         {
3c50: 38 34 39 30 2c 20 39 32 2c 20 31 7d 2c 0a 20 20  8490, 92, 1},.  
3c60: 20 20 7b 38 34 39 31 2c 20 39 34 2c 20 31 7d 2c    {8491, 94, 1},
3c70: 20 20 20 20 20 20 20 20 20 7b 38 34 39 38 2c 20           {8498, 
3c80: 31 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  12, 1},         
3c90: 7b 38 35 34 34 2c 20 38 2c 20 31 36 7d 2c 0a 20  {8544, 8, 16},. 
3ca0: 20 20 20 7b 38 35 37 39 2c 20 30 2c 20 31 7d 2c     {8579, 0, 1},
3cb0: 20 20 20 20 20 20 20 20 20 20 7b 39 33 39 38 2c            {9398,
3cc0: 20 31 30 2c 20 32 36 7d 2c 20 20 20 20 20 20 20   10, 26},       
3cd0: 20 7b 31 31 32 36 34 2c 20 32 32 2c 20 34 37 7d   {11264, 22, 47}
3ce0: 2c 0a 20 20 20 20 7b 31 31 33 36 30 2c 20 30 2c  ,.    {11360, 0,
3cf0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31   1},         {11
3d00: 33 36 32 2c 20 38 38 2c 20 31 7d 2c 20 20 20 20  362, 88, 1},    
3d10: 20 20 20 20 7b 31 31 33 36 33 2c 20 31 30 32 2c      {11363, 102,
3d20: 20 31 7d 2c 0a 20 20 20 20 7b 31 31 33 36 34 2c   1},.    {11364,
3d30: 20 39 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   90, 1},        
3d40: 7b 31 31 33 36 37 2c 20 31 2c 20 36 7d 2c 20 20  {11367, 1, 6},  
3d50: 20 20 20 20 20 20 20 7b 31 31 33 37 33 2c 20 38         {11373, 8
3d60: 34 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 31 33 37  4, 1},.    {1137
3d70: 34 2c 20 38 36 2c 20 31 7d 2c 20 20 20 20 20 20  4, 86, 1},      
3d80: 20 20 7b 31 31 33 37 35 2c 20 38 30 2c 20 31 7d    {11375, 80, 1}
3d90: 2c 20 20 20 20 20 20 20 20 7b 31 31 33 37 36 2c  ,        {11376,
3da0: 20 38 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 31   82, 1},.    {11
3db0: 33 37 38 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20  378, 0, 1},     
3dc0: 20 20 20 20 7b 31 31 33 38 31 2c 20 30 2c 20 31      {11381, 0, 1
3dd0: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 33 39  },         {1139
3de0: 30 2c 20 37 38 2c 20 32 7d 2c 0a 20 20 20 20 7b  0, 78, 2},.    {
3df0: 31 31 33 39 32 2c 20 31 2c 20 31 30 30 7d 2c 20  11392, 1, 100}, 
3e00: 20 20 20 20 20 20 7b 31 31 34 39 39 2c 20 31 2c        {11499, 1,
3e10: 20 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31   4},         {11
3e20: 35 30 36 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20  506, 0, 1},.    
3e30: 7b 34 32 35 36 30 2c 20 31 2c 20 34 36 7d 2c 20  {42560, 1, 46}, 
3e40: 20 20 20 20 20 20 20 7b 34 32 36 32 34 2c 20 31         {42624, 1
3e50: 2c 20 32 34 7d 2c 20 20 20 20 20 20 20 20 7b 34  , 24},        {4
3e60: 32 37 38 36 2c 20 31 2c 20 31 34 7d 2c 0a 20 20  2786, 1, 14},.  
3e70: 20 20 7b 34 32 38 30 32 2c 20 31 2c 20 36 32 7d    {42802, 1, 62}
3e80: 2c 20 20 20 20 20 20 20 20 7b 34 32 38 37 33 2c  ,        {42873,
3e90: 20 31 2c 20 34 7d 2c 20 20 20 20 20 20 20 20 20   1, 4},         
3ea0: 7b 34 32 38 37 37 2c 20 37 36 2c 20 31 7d 2c 0a  {42877, 76, 1},.
3eb0: 20 20 20 20 7b 34 32 38 37 38 2c 20 31 2c 20 31      {42878, 1, 1
3ec0: 30 7d 2c 20 20 20 20 20 20 20 20 7b 34 32 38 39  0},        {4289
3ed0: 31 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20  1, 0, 1},       
3ee0: 20 20 7b 34 32 38 39 33 2c 20 37 34 2c 20 31 7d    {42893, 74, 1}
3ef0: 2c 0a 20 20 20 20 7b 34 32 38 39 36 2c 20 31 2c  ,.    {42896, 1,
3f00: 20 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 34 32   4},         {42
3f10: 39 31 32 2c 20 31 2c 20 31 30 7d 2c 20 20 20 20  912, 1, 10},    
3f20: 20 20 20 20 7b 34 32 39 32 32 2c 20 37 32 2c 20      {42922, 72, 
3f30: 31 7d 2c 0a 20 20 20 20 7b 36 35 33 31 33 2c 20  1},.    {65313, 
3f40: 31 34 2c 20 32 36 7d 2c 20 20 20 20 20 20 20 0a  14, 26},       .
3f50: 20 20 7d 3b 0a 20 20 73 74 61 74 69 63 20 63 6f    };.  static co
3f60: 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 73 68 6f  nst unsigned sho
3f70: 72 74 20 61 69 4f 66 66 5b 5d 20 3d 20 7b 0a 20  rt aiOff[] = {. 
3f80: 20 20 31 2c 20 20 20 20 20 32 2c 20 20 20 20 20    1,     2,     
3f90: 38 2c 20 20 20 20 20 31 35 2c 20 20 20 20 31 36  8,     15,    16
3fa0: 2c 20 20 20 20 32 36 2c 20 20 20 20 32 38 2c 20  ,    26,    28, 
3fb0: 20 20 20 33 32 2c 20 20 20 20 0a 20 20 20 33 37     32,    .   37
3fc0: 2c 20 20 20 20 33 38 2c 20 20 20 20 34 30 2c 20  ,    38,    40, 
3fd0: 20 20 20 34 38 2c 20 20 20 20 36 33 2c 20 20 20     48,    63,   
3fe0: 20 36 34 2c 20 20 20 20 36 39 2c 20 20 20 20 37   64,    69,    7
3ff0: 31 2c 20 20 20 20 0a 20 20 20 37 39 2c 20 20 20  1,    .   79,   
4000: 20 38 30 2c 20 20 20 20 31 31 36 2c 20 20 20 32   80,    116,   2
4010: 30 32 2c 20 20 20 32 30 33 2c 20 20 20 32 30 35  02,   203,   205
4020: 2c 20 20 20 32 30 36 2c 20 20 20 32 30 37 2c 20  ,   206,   207, 
4030: 20 20 0a 20 20 20 32 30 39 2c 20 20 20 32 31 30    .   209,   210
4040: 2c 20 20 20 32 31 31 2c 20 20 20 32 31 33 2c 20  ,   211,   213, 
4050: 20 20 32 31 34 2c 20 20 20 32 31 37 2c 20 20 20    214,   217,   
4060: 32 31 38 2c 20 20 20 32 31 39 2c 20 20 20 0a 20  218,   219,   . 
4070: 20 20 37 37 35 2c 20 20 20 37 32 36 34 2c 20 20    775,   7264,  
4080: 31 30 37 39 32 2c 20 31 30 37 39 35 2c 20 32 33  10792, 10795, 23
4090: 32 32 38 2c 20 32 33 32 35 36 2c 20 33 30 32 30  228, 23256, 3020
40a0: 34 2c 20 35 34 37 32 31 2c 20 0a 20 20 20 35 34  4, 54721, .   54
40b0: 37 35 33 2c 20 35 34 37 35 34 2c 20 35 34 37 35  753, 54754, 5475
40c0: 36 2c 20 35 34 37 38 37 2c 20 35 34 37 39 33 2c  6, 54787, 54793,
40d0: 20 35 34 38 30 39 2c 20 35 37 31 35 33 2c 20 35   54809, 57153, 5
40e0: 37 32 37 34 2c 20 0a 20 20 20 35 37 39 32 31 2c  7274, .   57921,
40f0: 20 35 38 30 31 39 2c 20 35 38 33 36 33 2c 20 36   58019, 58363, 6
4100: 31 37 32 32 2c 20 36 35 32 36 38 2c 20 36 35 33  1722, 65268, 653
4110: 34 31 2c 20 36 35 33 37 33 2c 20 36 35 34 30 36  41, 65373, 65406
4120: 2c 20 0a 20 20 20 36 35 34 30 38 2c 20 36 35 34  , .   65408, 654
4130: 31 30 2c 20 36 35 34 31 35 2c 20 36 35 34 32 34  10, 65415, 65424
4140: 2c 20 36 35 34 33 36 2c 20 36 35 34 33 39 2c 20  , 65436, 65439, 
4150: 36 35 34 35 30 2c 20 36 35 34 36 32 2c 20 0a 20  65450, 65462, . 
4160: 20 20 36 35 34 37 32 2c 20 36 35 34 37 36 2c 20    65472, 65476, 
4170: 36 35 34 37 38 2c 20 36 35 34 38 30 2c 20 36 35  65478, 65480, 65
4180: 34 38 32 2c 20 36 35 34 38 38 2c 20 36 35 35 30  482, 65488, 6550
4190: 36 2c 20 36 35 35 31 31 2c 20 0a 20 20 20 36 35  6, 65511, .   65
41a0: 35 31 34 2c 20 36 35 35 32 31 2c 20 36 35 35 32  514, 65521, 6552
41b0: 37 2c 20 36 35 35 32 38 2c 20 36 35 35 32 39 2c  7, 65528, 65529,
41c0: 20 0a 20 20 7d 3b 0a 0a 20 20 69 6e 74 20 72 65   .  };..  int re
41d0: 74 20 3d 20 63 3b 0a 0a 20 20 61 73 73 65 72 74  t = c;..  assert
41e0: 28 20 73 69 7a 65 6f 66 28 75 6e 73 69 67 6e 65  ( sizeof(unsigne
41f0: 64 20 73 68 6f 72 74 29 3d 3d 32 20 26 26 20 73  d short)==2 && s
4200: 69 7a 65 6f 66 28 75 6e 73 69 67 6e 65 64 20 63  izeof(unsigned c
4210: 68 61 72 29 3d 3d 31 20 29 3b 0a 0a 20 20 69 66  har)==1 );..  if
4220: 28 20 63 3c 31 32 38 20 29 7b 0a 20 20 20 20 69  ( c<128 ){.    i
4230: 66 28 20 63 3e 3d 27 41 27 20 26 26 20 63 3c 3d  f( c>='A' && c<=
4240: 27 5a 27 20 29 20 72 65 74 20 3d 20 63 20 2b 20  'Z' ) ret = c + 
4250: 28 27 61 27 20 2d 20 27 41 27 29 3b 0a 20 20 7d  ('a' - 'A');.  }
4260: 65 6c 73 65 20 69 66 28 20 63 3c 36 35 35 33 36  else if( c<65536
4270: 20 29 7b 0a 20 20 20 20 63 6f 6e 73 74 20 73 74   ){.    const st
4280: 72 75 63 74 20 54 61 62 6c 65 45 6e 74 72 79 20  ruct TableEntry 
4290: 2a 70 3b 0a 20 20 20 20 69 6e 74 20 69 48 69 20  *p;.    int iHi 
42a0: 3d 20 73 69 7a 65 6f 66 28 61 45 6e 74 72 79 29  = sizeof(aEntry)
42b0: 2f 73 69 7a 65 6f 66 28 61 45 6e 74 72 79 5b 30  /sizeof(aEntry[0
42c0: 5d 29 20 2d 20 31 3b 0a 20 20 20 20 69 6e 74 20  ]) - 1;.    int 
42d0: 69 4c 6f 20 3d 20 30 3b 0a 20 20 20 20 69 6e 74  iLo = 0;.    int
42e0: 20 69 52 65 73 20 3d 20 2d 31 3b 0a 0a 20 20 20   iRes = -1;..   
42f0: 20 61 73 73 65 72 74 28 20 63 3e 61 45 6e 74 72   assert( c>aEntr
4300: 79 5b 30 5d 2e 69 43 6f 64 65 20 29 3b 0a 20 20  y[0].iCode );.  
4310: 20 20 77 68 69 6c 65 28 20 69 48 69 3e 3d 69 4c    while( iHi>=iL
4320: 6f 20 29 7b 0a 20 20 20 20 20 20 69 6e 74 20 69  o ){.      int i
4330: 54 65 73 74 20 3d 20 28 69 48 69 20 2b 20 69 4c  Test = (iHi + iL
4340: 6f 29 20 2f 20 32 3b 0a 20 20 20 20 20 20 69 6e  o) / 2;.      in
4350: 74 20 63 6d 70 20 3d 20 28 63 20 2d 20 61 45 6e  t cmp = (c - aEn
4360: 74 72 79 5b 69 54 65 73 74 5d 2e 69 43 6f 64 65  try[iTest].iCode
4370: 29 3b 0a 20 20 20 20 20 20 69 66 28 20 63 6d 70  );.      if( cmp
4380: 3e 3d 30 20 29 7b 0a 20 20 20 20 20 20 20 20 69  >=0 ){.        i
4390: 52 65 73 20 3d 20 69 54 65 73 74 3b 0a 20 20 20  Res = iTest;.   
43a0: 20 20 20 20 20 69 4c 6f 20 3d 20 69 54 65 73 74       iLo = iTest
43b0: 2b 31 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 7b  +1;.      }else{
43c0: 0a 20 20 20 20 20 20 20 20 69 48 69 20 3d 20 69  .        iHi = i
43d0: 54 65 73 74 2d 31 3b 0a 20 20 20 20 20 20 7d 0a  Test-1;.      }.
43e0: 20 20 20 20 7d 0a 0a 20 20 20 20 61 73 73 65 72      }..    asser
43f0: 74 28 20 69 52 65 73 3e 3d 30 20 26 26 20 63 3e  t( iRes>=0 && c>
4400: 3d 61 45 6e 74 72 79 5b 69 52 65 73 5d 2e 69 43  =aEntry[iRes].iC
4410: 6f 64 65 20 29 3b 0a 20 20 20 20 70 20 3d 20 26  ode );.    p = &
4420: 61 45 6e 74 72 79 5b 69 52 65 73 5d 3b 0a 20 20  aEntry[iRes];.  
4430: 20 20 69 66 28 20 63 3c 28 70 2d 3e 69 43 6f 64    if( c<(p->iCod
4440: 65 20 2b 20 70 2d 3e 6e 52 61 6e 67 65 29 20 26  e + p->nRange) &
4450: 26 20 30 3d 3d 28 30 78 30 31 20 26 20 70 2d 3e  & 0==(0x01 & p->
4460: 66 6c 61 67 73 20 26 20 28 70 2d 3e 69 43 6f 64  flags & (p->iCod
4470: 65 20 5e 20 63 29 29 20 29 7b 0a 20 20 20 20 20  e ^ c)) ){.     
4480: 20 72 65 74 20 3d 20 28 63 20 2b 20 28 61 69 4f   ret = (c + (aiO
4490: 66 66 5b 70 2d 3e 66 6c 61 67 73 3e 3e 31 5d 29  ff[p->flags>>1])
44a0: 29 20 26 20 30 78 30 30 30 30 46 46 46 46 3b 0a  ) & 0x0000FFFF;.
44b0: 20 20 20 20 20 20 61 73 73 65 72 74 28 20 72 65        assert( re
44c0: 74 3e 30 20 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  t>0 );.    }..  
44d0: 20 20 69 66 28 20 65 52 65 6d 6f 76 65 44 69 61    if( eRemoveDia
44e0: 63 72 69 74 69 63 20 29 7b 0a 20 20 20 20 20 20  critic ){.      
44f0: 72 65 74 20 3d 20 72 65 6d 6f 76 65 5f 64 69 61  ret = remove_dia
4500: 63 72 69 74 69 63 28 72 65 74 2c 20 65 52 65 6d  critic(ret, eRem
4510: 6f 76 65 44 69 61 63 72 69 74 69 63 3d 3d 32 29  oveDiacritic==2)
4520: 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 0a 20  ;.    }.  }.  . 
4530: 20 65 6c 73 65 20 69 66 28 20 63 3e 3d 36 36 35   else if( c>=665
4540: 36 30 20 26 26 20 63 3c 36 36 36 30 30 20 29 7b  60 && c<66600 ){
4550: 0a 20 20 20 20 72 65 74 20 3d 20 63 20 2b 20 34  .    ret = c + 4
4560: 30 3b 0a 20 20 7d 0a 0a 20 20 72 65 74 75 72 6e  0;.  }..  return
4570: 20 72 65 74 3b 0a 7d 0a 23 65 6e 64 69 66 20 2f   ret;.}.#endif /
4580: 2a 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45  * defined(SQLITE
4590: 5f 45 4e 41 42 4c 45 5f 46 54 53 33 29 20 7c 7c  _ENABLE_FTS3) ||
45a0: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
45b0: 45 4e 41 42 4c 45 5f 46 54 53 34 29 20 2a 2f 0a  ENABLE_FTS4) */.
45c0: 23 65 6e 64 69 66 20 2f 2a 20 21 64 65 66 69 6e  #endif /* !defin
45d0: 65 64 28 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  ed(SQLITE_DISABL
45e0: 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45 29 20  E_FTS3_UNICODE) 
45f0: 2a 2f 0a                                         */.