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

Artifact 78273fbd588d1d9bd0a7e4e0ccc9207348bae33c:


0000: 2f 2a 0a 2a 2a 20 32 30 31 32 20 4d 61 79 20 32  /*.** 2012 May 2
0010: 35 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68  5.**.** The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65  place of.** a le
0060: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
0070: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
0080: 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  **.**    May you
0090: 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74   do good and not
00a0: 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79   evil..**    May
00b0: 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76   you find forgiv
00c0: 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65  eness for yourse
00d0: 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f  lf and forgive o
00e0: 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79  thers..**    May
00f0: 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c   you share freel
0100: 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20  y, never taking 
0110: 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69  more than you gi
0120: 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ve..**.*********
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 2a 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20  *****.*/../*.** 
0180: 44 4f 20 4e 4f 54 20 45 44 49 54 20 54 48 49 53  DO NOT EDIT THIS
0190: 20 4d 41 43 48 49 4e 45 20 47 45 4e 45 52 41 54   MACHINE GENERAT
01a0: 45 44 20 46 49 4c 45 2e 0a 2a 2f 0a 0a 0a 23 69  ED FILE..*/...#i
01b0: 6e 63 6c 75 64 65 20 3c 61 73 73 65 72 74 2e 68  nclude <assert.h
01c0: 3e 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  >../*.** Return 
01d0: 74 72 75 65 20 69 66 20 74 68 65 20 61 72 67 75  true if the argu
01e0: 6d 65 6e 74 20 63 6f 72 72 65 73 70 6f 6e 64 73  ment corresponds
01f0: 20 74 6f 20 61 20 75 6e 69 63 6f 64 65 20 63 6f   to a unicode co
0200: 64 65 70 6f 69 6e 74 0a 2a 2a 20 63 6c 61 73 73  depoint.** class
0210: 69 66 69 65 64 20 61 73 20 65 69 74 68 65 72 20  ified as either 
0220: 61 20 6c 65 74 74 65 72 20 6f 72 20 61 20 6e 75  a letter or a nu
0230: 6d 62 65 72 2e 20 4f 74 68 65 72 77 69 73 65 20  mber. Otherwise 
0240: 66 61 6c 73 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  false..**.** The
0250: 20 72 65 73 75 6c 74 73 20 61 72 65 20 75 6e 64   results are und
0260: 65 66 69 6e 65 64 20 69 66 20 74 68 65 20 76 61  efined if the va
0270: 6c 75 65 20 70 61 73 73 65 64 20 74 6f 20 74 68  lue passed to th
0280: 69 73 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 69  is function.** i
0290: 73 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72 6f  s less than zero
02a0: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
02b0: 46 74 73 35 55 6e 69 63 6f 64 65 49 73 61 6c 6e  Fts5UnicodeIsaln
02c0: 75 6d 28 69 6e 74 20 63 29 7b 0a 20 20 2f 2a 20  um(int c){.  /* 
02d0: 45 61 63 68 20 75 6e 73 69 67 6e 65 64 20 69 6e  Each unsigned in
02e0: 74 65 67 65 72 20 69 6e 20 74 68 65 20 66 6f 6c  teger in the fol
02f0: 6c 6f 77 69 6e 67 20 61 72 72 61 79 20 63 6f 72  lowing array cor
0300: 72 65 73 70 6f 6e 64 73 20 74 6f 20 61 20 63 6f  responds to a co
0310: 6e 74 69 67 75 6f 75 73 0a 20 20 2a 2a 20 72 61  ntiguous.  ** ra
0320: 6e 67 65 20 6f 66 20 75 6e 69 63 6f 64 65 20 63  nge of unicode c
0330: 6f 64 65 70 6f 69 6e 74 73 20 74 68 61 74 20 61  odepoints that a
0340: 72 65 20 6e 6f 74 20 65 69 74 68 65 72 20 6c 65  re not either le
0350: 74 74 65 72 73 20 6f 72 20 6e 75 6d 62 65 72 73  tters or numbers
0360: 20 28 69 2e 65 2e 0a 20 20 2a 2a 20 63 6f 64 65   (i.e..  ** code
0370: 70 6f 69 6e 74 73 20 66 6f 72 20 77 68 69 63 68  points for which
0380: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73   this function s
0390: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 30 29 2e  hould return 0).
03a0: 0a 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 6d  .  **.  ** The m
03b0: 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20  ost significant 
03c0: 32 32 20 62 69 74 73 20 69 6e 20 65 61 63 68 20  22 bits in each 
03d0: 33 32 2d 62 69 74 20 76 61 6c 75 65 20 63 6f 6e  32-bit value con
03e0: 74 61 69 6e 20 74 68 65 20 66 69 72 73 74 20 0a  tain the first .
03f0: 20 20 2a 2a 20 63 6f 64 65 70 6f 69 6e 74 20 69    ** codepoint i
0400: 6e 20 74 68 65 20 72 61 6e 67 65 2e 20 54 68 65  n the range. The
0410: 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69 63 61   least significa
0420: 6e 74 20 31 30 20 62 69 74 73 20 61 72 65 20 75  nt 10 bits are u
0430: 73 65 64 20 74 6f 20 73 74 6f 72 65 0a 20 20 2a  sed to store.  *
0440: 2a 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  * the size of th
0450: 65 20 72 61 6e 67 65 20 28 61 6c 77 61 79 73 20  e range (always 
0460: 61 74 20 6c 65 61 73 74 20 31 29 2e 20 49 6e 20  at least 1). In 
0470: 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65  other words, the
0480: 20 76 61 6c 75 65 20 0a 20 20 2a 2a 20 28 28 43   value .  ** ((C
0490: 3c 3c 32 32 29 20 2b 20 4e 29 20 72 65 70 72 65  <<22) + N) repre
04a0: 73 65 6e 74 73 20 61 20 72 61 6e 67 65 20 6f 66  sents a range of
04b0: 20 4e 20 63 6f 64 65 70 6f 69 6e 74 73 20 73 74   N codepoints st
04c0: 61 72 74 69 6e 67 20 77 69 74 68 20 63 6f 64 65  arting with code
04d0: 70 6f 69 6e 74 20 0a 20 20 2a 2a 20 43 2e 20 49  point .  ** C. I
04e0: 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c  t is not possibl
04f0: 65 20 74 6f 20 72 65 70 72 65 73 65 6e 74 20 61  e to represent a
0500: 20 72 61 6e 67 65 20 6c 61 72 67 65 72 20 74 68   range larger th
0510: 61 6e 20 31 30 32 33 20 63 6f 64 65 70 6f 69 6e  an 1023 codepoin
0520: 74 73 20 0a 20 20 2a 2a 20 75 73 69 6e 67 20 74  ts .  ** using t
0530: 68 69 73 20 66 6f 72 6d 61 74 2e 0a 20 20 2a 2f  his format..  */
0540: 0a 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20  .  static const 
0550: 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 61 45 6e  unsigned int aEn
0560: 74 72 79 5b 5d 20 3d 20 7b 0a 20 20 20 20 30 78  try[] = {.    0x
0570: 30 30 30 30 30 30 33 30 2c 20 30 78 30 30 30 30  00000030, 0x0000
0580: 45 38 30 37 2c 20 30 78 30 30 30 31 36 43 30 36  E807, 0x00016C06
0590: 2c 20 30 78 30 30 30 31 45 43 32 46 2c 20 30 78  , 0x0001EC2F, 0x
05a0: 30 30 30 32 41 43 30 37 2c 0a 20 20 20 20 30 78  0002AC07,.    0x
05b0: 30 30 30 32 44 30 30 31 2c 20 30 78 30 30 30 32  0002D001, 0x0002
05c0: 44 38 30 33 2c 20 30 78 30 30 30 32 45 43 30 31  D803, 0x0002EC01
05d0: 2c 20 30 78 30 30 30 32 46 43 30 31 2c 20 30 78  , 0x0002FC01, 0x
05e0: 30 30 30 33 35 43 30 31 2c 0a 20 20 20 20 30 78  00035C01,.    0x
05f0: 30 30 30 33 44 43 30 31 2c 20 30 78 30 30 30 42  0003DC01, 0x000B
0600: 30 38 30 34 2c 20 30 78 30 30 30 42 34 38 30 45  0804, 0x000B480E
0610: 2c 20 30 78 30 30 30 42 39 34 30 37 2c 20 30 78  , 0x000B9407, 0x
0620: 30 30 30 42 42 34 30 31 2c 0a 20 20 20 20 30 78  000BB401,.    0x
0630: 30 30 30 42 42 43 38 31 2c 20 30 78 30 30 30 44  000BBC81, 0x000D
0640: 44 34 30 31 2c 20 30 78 30 30 30 44 46 38 30 31  D401, 0x000DF801
0650: 2c 20 30 78 30 30 30 45 31 30 30 32 2c 20 30 78  , 0x000E1002, 0x
0660: 30 30 30 45 31 43 30 31 2c 0a 20 20 20 20 30 78  000E1C01,.    0x
0670: 30 30 30 46 44 38 30 31 2c 20 30 78 30 30 31 32  000FD801, 0x0012
0680: 30 38 30 38 2c 20 30 78 30 30 31 35 36 38 30 36  0808, 0x00156806
0690: 2c 20 30 78 30 30 31 36 32 34 30 32 2c 20 30 78  , 0x00162402, 0x
06a0: 30 30 31 36 33 43 30 31 2c 0a 20 20 20 20 30 78  00163C01,.    0x
06b0: 30 30 31 36 34 34 33 37 2c 20 30 78 30 30 31 37  00164437, 0x0017
06c0: 43 43 30 32 2c 20 30 78 30 30 31 38 30 30 30 35  CC02, 0x00180005
06d0: 2c 20 30 78 30 30 31 38 31 38 31 36 2c 20 30 78  , 0x00181816, 0x
06e0: 30 30 31 38 37 38 30 32 2c 0a 20 20 20 20 30 78  00187802,.    0x
06f0: 30 30 31 39 32 43 31 35 2c 20 30 78 30 30 31 39  00192C15, 0x0019
0700: 41 38 30 34 2c 20 30 78 30 30 31 39 43 30 30 31  A804, 0x0019C001
0710: 2c 20 30 78 30 30 31 42 35 30 30 31 2c 20 30 78  , 0x001B5001, 0x
0720: 30 30 31 42 35 38 30 46 2c 0a 20 20 20 20 30 78  001B580F,.    0x
0730: 30 30 31 42 39 43 30 37 2c 20 30 78 30 30 31 42  001B9C07, 0x001B
0740: 46 34 30 32 2c 20 30 78 30 30 31 43 30 30 30 45  F402, 0x001C000E
0750: 2c 20 30 78 30 30 31 43 33 43 30 31 2c 20 30 78  , 0x001C3C01, 0x
0760: 30 30 31 43 34 34 30 31 2c 0a 20 20 20 20 30 78  001C4401,.    0x
0770: 30 30 31 43 43 30 31 42 2c 20 30 78 30 30 31 45  001CC01B, 0x001E
0780: 39 38 30 42 2c 20 30 78 30 30 31 46 41 43 30 39  980B, 0x001FAC09
0790: 2c 20 30 78 30 30 31 46 44 38 30 34 2c 20 30 78  , 0x001FD804, 0x
07a0: 30 30 32 30 35 38 30 34 2c 0a 20 20 20 20 30 78  00205804,.    0x
07b0: 30 30 32 30 36 43 30 39 2c 20 30 78 30 30 32 30  00206C09, 0x0020
07c0: 39 34 30 33 2c 20 30 78 30 30 32 30 41 34 30 35  9403, 0x0020A405
07d0: 2c 20 30 78 30 30 32 30 43 30 30 46 2c 20 30 78  , 0x0020C00F, 0x
07e0: 30 30 32 31 36 34 30 33 2c 0a 20 20 20 20 30 78  00216403,.    0x
07f0: 30 30 32 31 37 38 30 31 2c 20 30 78 30 30 32 33  00217801, 0x0023
0800: 39 30 31 42 2c 20 30 78 30 30 32 34 30 30 30 34  901B, 0x00240004
0810: 2c 20 30 78 30 30 32 34 45 38 30 33 2c 20 30 78  , 0x0024E803, 0x
0820: 30 30 32 34 46 38 31 32 2c 0a 20 20 20 20 30 78  0024F812,.    0x
0830: 30 30 32 35 34 34 30 37 2c 20 30 78 30 30 32 35  00254407, 0x0025
0840: 38 38 30 34 2c 20 30 78 30 30 32 35 43 30 30 31  8804, 0x0025C001
0850: 2c 20 30 78 30 30 32 36 30 34 30 33 2c 20 30 78  , 0x00260403, 0x
0860: 30 30 32 36 46 30 30 31 2c 0a 20 20 20 20 30 78  0026F001,.    0x
0870: 30 30 32 36 46 38 30 37 2c 20 30 78 30 30 32 37  0026F807, 0x0027
0880: 31 43 30 32 2c 20 30 78 30 30 32 37 32 43 30 33  1C02, 0x00272C03
0890: 2c 20 30 78 30 30 32 37 35 43 30 31 2c 20 30 78  , 0x00275C01, 0x
08a0: 30 30 32 37 38 38 30 32 2c 0a 20 20 20 20 30 78  00278802,.    0x
08b0: 30 30 32 37 43 38 30 32 2c 20 30 78 30 30 32 37  0027C802, 0x0027
08c0: 45 38 30 32 2c 20 30 78 30 30 32 38 30 34 30 33  E802, 0x00280403
08d0: 2c 20 30 78 30 30 32 38 46 30 30 31 2c 20 30 78  , 0x0028F001, 0x
08e0: 30 30 32 38 46 38 30 35 2c 0a 20 20 20 20 30 78  0028F805,.    0x
08f0: 30 30 32 39 31 43 30 32 2c 20 30 78 30 30 32 39  00291C02, 0x0029
0900: 32 43 30 33 2c 20 30 78 30 30 32 39 34 34 30 31  2C03, 0x00294401
0910: 2c 20 30 78 30 30 32 39 43 30 30 32 2c 20 30 78  , 0x0029C002, 0x
0920: 30 30 32 39 44 34 30 31 2c 0a 20 20 20 20 30 78  0029D401,.    0x
0930: 30 30 32 41 30 34 30 33 2c 20 30 78 30 30 32 41  002A0403, 0x002A
0940: 46 30 30 31 2c 20 30 78 30 30 32 41 46 38 30 38  F001, 0x002AF808
0950: 2c 20 30 78 30 30 32 42 31 43 30 33 2c 20 30 78  , 0x002B1C03, 0x
0960: 30 30 32 42 32 43 30 33 2c 0a 20 20 20 20 30 78  002B2C03,.    0x
0970: 30 30 32 42 38 38 30 32 2c 20 30 78 30 30 32 42  002B8802, 0x002B
0980: 43 30 30 32 2c 20 30 78 30 30 32 43 30 34 30 33  C002, 0x002C0403
0990: 2c 20 30 78 30 30 32 43 46 30 30 31 2c 20 30 78  , 0x002CF001, 0x
09a0: 30 30 32 43 46 38 30 37 2c 0a 20 20 20 20 30 78  002CF807,.    0x
09b0: 30 30 32 44 31 43 30 32 2c 20 30 78 30 30 32 44  002D1C02, 0x002D
09c0: 32 43 30 33 2c 20 30 78 30 30 32 44 35 38 30 32  2C03, 0x002D5802
09d0: 2c 20 30 78 30 30 32 44 38 38 30 32 2c 20 30 78  , 0x002D8802, 0x
09e0: 30 30 32 44 43 30 30 31 2c 0a 20 20 20 20 30 78  002DC001,.    0x
09f0: 30 30 32 45 30 38 30 31 2c 20 30 78 30 30 32 45  002E0801, 0x002E
0a00: 46 38 30 35 2c 20 30 78 30 30 32 46 31 38 30 33  F805, 0x002F1803
0a10: 2c 20 30 78 30 30 32 46 32 38 30 34 2c 20 30 78  , 0x002F2804, 0x
0a20: 30 30 32 46 35 43 30 31 2c 0a 20 20 20 20 30 78  002F5C01,.    0x
0a30: 30 30 32 46 43 43 30 38 2c 20 30 78 30 30 33 30  002FCC08, 0x0030
0a40: 30 34 30 33 2c 20 30 78 30 30 33 30 46 38 30 37  0403, 0x0030F807
0a50: 2c 20 30 78 30 30 33 31 31 38 30 33 2c 20 30 78  , 0x00311803, 0x
0a60: 30 30 33 31 32 38 30 34 2c 0a 20 20 20 20 30 78  00312804,.    0x
0a70: 30 30 33 31 35 34 30 32 2c 20 30 78 30 30 33 31  00315402, 0x0031
0a80: 38 38 30 32 2c 20 30 78 30 30 33 31 46 43 30 31  8802, 0x0031FC01
0a90: 2c 20 30 78 30 30 33 32 30 38 30 32 2c 20 30 78  , 0x00320802, 0x
0aa0: 30 30 33 32 46 30 30 31 2c 0a 20 20 20 20 30 78  0032F001,.    0x
0ab0: 30 30 33 32 46 38 30 37 2c 20 30 78 30 30 33 33  0032F807, 0x0033
0ac0: 31 38 30 33 2c 20 30 78 30 30 33 33 32 38 30 34  1803, 0x00332804
0ad0: 2c 20 30 78 30 30 33 33 35 34 30 32 2c 20 30 78  , 0x00335402, 0x
0ae0: 30 30 33 33 38 38 30 32 2c 0a 20 20 20 20 30 78  00338802,.    0x
0af0: 30 30 33 34 30 38 30 32 2c 20 30 78 30 30 33 34  00340802, 0x0034
0b00: 46 38 30 37 2c 20 30 78 30 30 33 35 31 38 30 33  F807, 0x00351803
0b10: 2c 20 30 78 30 30 33 35 32 38 30 34 2c 20 30 78  , 0x00352804, 0x
0b20: 30 30 33 35 35 43 30 31 2c 0a 20 20 20 20 30 78  00355C01,.    0x
0b30: 30 30 33 35 38 38 30 32 2c 20 30 78 30 30 33 35  00358802, 0x0035
0b40: 45 34 30 31 2c 20 30 78 30 30 33 36 30 38 30 32  E401, 0x00360802
0b50: 2c 20 30 78 30 30 33 37 32 38 30 31 2c 20 30 78  , 0x00372801, 0x
0b60: 30 30 33 37 33 43 30 36 2c 0a 20 20 20 20 30 78  00373C06,.    0x
0b70: 30 30 33 37 35 38 30 31 2c 20 30 78 30 30 33 37  00375801, 0x0037
0b80: 36 30 30 38 2c 20 30 78 30 30 33 37 43 38 30 33  6008, 0x0037C803
0b90: 2c 20 30 78 30 30 33 38 43 34 30 31 2c 20 30 78  , 0x0038C401, 0x
0ba0: 30 30 33 38 44 30 30 37 2c 0a 20 20 20 20 30 78  0038D007,.    0x
0bb0: 30 30 33 38 46 43 30 31 2c 20 30 78 30 30 33 39  0038FC01, 0x0039
0bc0: 31 43 30 39 2c 20 30 78 30 30 33 39 36 38 30 32  1C09, 0x00396802
0bd0: 2c 20 30 78 30 30 33 41 43 34 30 31 2c 20 30 78  , 0x003AC401, 0x
0be0: 30 30 33 41 44 30 30 36 2c 0a 20 20 20 20 30 78  003AD006,.    0x
0bf0: 30 30 33 41 45 43 30 32 2c 20 30 78 30 30 33 42  003AEC02, 0x003B
0c00: 32 30 30 36 2c 20 30 78 30 30 33 43 30 34 31 46  2006, 0x003C041F
0c10: 2c 20 30 78 30 30 33 43 44 30 30 43 2c 20 30 78  , 0x003CD00C, 0x
0c20: 30 30 33 44 43 34 31 37 2c 0a 20 20 20 20 30 78  003DC417,.    0x
0c30: 30 30 33 45 33 34 30 42 2c 20 30 78 30 30 33 45  003E340B, 0x003E
0c40: 36 34 32 34 2c 20 30 78 30 30 33 45 46 38 30 46  6424, 0x003EF80F
0c50: 2c 20 30 78 30 30 33 46 33 38 30 44 2c 20 30 78  , 0x003F380D, 0x
0c60: 30 30 34 30 41 43 31 34 2c 0a 20 20 20 20 30 78  0040AC14,.    0x
0c70: 30 30 34 31 32 38 30 36 2c 20 30 78 30 30 34 31  00412806, 0x0041
0c80: 35 38 30 34 2c 20 30 78 30 30 34 31 37 38 30 33  5804, 0x00417803
0c90: 2c 20 30 78 30 30 34 31 38 38 30 33 2c 20 30 78  , 0x00418803, 0x
0ca0: 30 30 34 31 39 43 30 37 2c 0a 20 20 20 20 30 78  00419C07,.    0x
0cb0: 30 30 34 31 43 34 30 34 2c 20 30 78 30 30 34 32  0041C404, 0x0042
0cc0: 30 38 30 43 2c 20 30 78 30 30 34 32 33 43 30 31  080C, 0x00423C01
0cd0: 2c 20 30 78 30 30 34 32 36 38 30 36 2c 20 30 78  , 0x00426806, 0x
0ce0: 30 30 34 33 45 43 30 31 2c 0a 20 20 20 20 30 78  0043EC01,.    0x
0cf0: 30 30 34 44 37 34 30 43 2c 20 30 78 30 30 34 45  004D740C, 0x004E
0d00: 34 30 30 41 2c 20 30 78 30 30 35 30 30 30 30 31  400A, 0x00500001
0d10: 2c 20 30 78 30 30 35 39 42 34 30 32 2c 20 30 78  , 0x0059B402, 0x
0d20: 30 30 35 41 30 30 30 31 2c 0a 20 20 20 20 30 78  005A0001,.    0x
0d30: 30 30 35 41 36 43 30 32 2c 20 30 78 30 30 35 42  005A6C02, 0x005B
0d40: 41 43 30 33 2c 20 30 78 30 30 35 43 34 38 30 33  AC03, 0x005C4803
0d50: 2c 20 30 78 30 30 35 43 43 38 30 35 2c 20 30 78  , 0x005CC805, 0x
0d60: 30 30 35 44 34 38 30 32 2c 0a 20 20 20 20 30 78  005D4802,.    0x
0d70: 30 30 35 44 43 38 30 32 2c 20 30 78 30 30 35 45  005DC802, 0x005E
0d80: 44 30 32 33 2c 20 30 78 30 30 35 46 36 30 30 34  D023, 0x005F6004
0d90: 2c 20 30 78 30 30 35 46 37 34 30 31 2c 20 30 78  , 0x005F7401, 0x
0da0: 30 30 36 30 30 30 30 46 2c 0a 20 20 20 20 30 78  0060000F,.    0x
0db0: 30 30 36 32 41 34 30 31 2c 20 30 78 30 30 36 34  0062A401, 0x0064
0dc0: 38 30 30 43 2c 20 30 78 30 30 36 34 43 30 30 43  800C, 0x0064C00C
0dd0: 2c 20 30 78 30 30 36 35 30 30 30 31 2c 20 30 78  , 0x00650001, 0x
0de0: 30 30 36 35 31 30 30 32 2c 0a 20 20 20 20 30 78  00651002,.    0x
0df0: 30 30 36 36 43 30 31 31 2c 20 30 78 30 30 36 37  0066C011, 0x0067
0e00: 32 30 30 32 2c 20 30 78 30 30 36 37 37 38 32 32  2002, 0x00677822
0e10: 2c 20 30 78 30 30 36 38 35 43 30 35 2c 20 30 78  , 0x00685C05, 0x
0e20: 30 30 36 38 37 38 30 32 2c 0a 20 20 20 20 30 78  00687802,.    0x
0e30: 30 30 36 39 35 34 30 41 2c 20 30 78 30 30 36 39  0069540A, 0x0069
0e40: 38 30 31 44 2c 20 30 78 30 30 36 39 46 43 30 31  801D, 0x0069FC01
0e50: 2c 20 30 78 30 30 36 41 38 30 30 37 2c 20 30 78  , 0x006A8007, 0x
0e60: 30 30 36 41 41 30 30 36 2c 0a 20 20 20 20 30 78  006AA006,.    0x
0e70: 30 30 36 43 30 30 30 35 2c 20 30 78 30 30 36 43  006C0005, 0x006C
0e80: 44 30 31 31 2c 20 30 78 30 30 36 44 36 38 32 33  D011, 0x006D6823
0e90: 2c 20 30 78 30 30 36 45 30 30 30 33 2c 20 30 78  , 0x006E0003, 0x
0ea0: 30 30 36 45 38 34 30 44 2c 0a 20 20 20 20 30 78  006E840D,.    0x
0eb0: 30 30 36 46 39 38 30 45 2c 20 30 78 30 30 36 46  006F980E, 0x006F
0ec0: 46 30 30 34 2c 20 30 78 30 30 37 30 39 30 31 34  F004, 0x00709014
0ed0: 2c 20 30 78 30 30 37 30 45 43 30 35 2c 20 30 78  , 0x0070EC05, 0x
0ee0: 30 30 37 31 46 38 30 32 2c 0a 20 20 20 20 30 78  0071F802,.    0x
0ef0: 30 30 37 33 30 30 30 38 2c 20 30 78 30 30 37 33  00730008, 0x0073
0f00: 34 30 31 39 2c 20 30 78 30 30 37 33 42 34 30 31  4019, 0x0073B401
0f10: 2c 20 30 78 30 30 37 33 43 38 30 33 2c 20 30 78  , 0x0073C803, 0x
0f20: 30 30 37 37 30 30 32 37 2c 0a 20 20 20 20 30 78  00770027,.    0x
0f30: 30 30 37 37 46 30 30 34 2c 20 30 78 30 30 37 45  0077F004, 0x007E
0f40: 46 34 30 31 2c 20 30 78 30 30 37 45 46 43 30 33  F401, 0x007EFC03
0f50: 2c 20 30 78 30 30 37 46 33 34 30 33 2c 20 30 78  , 0x007F3403, 0x
0f60: 30 30 37 46 37 34 30 33 2c 0a 20 20 20 20 30 78  007F7403,.    0x
0f70: 30 30 37 46 42 34 30 33 2c 20 30 78 30 30 37 46  007FB403, 0x007F
0f80: 46 34 30 32 2c 20 30 78 30 30 38 30 30 30 36 35  F402, 0x00800065
0f90: 2c 20 30 78 30 30 38 31 41 38 30 36 2c 20 30 78  , 0x0081A806, 0x
0fa0: 30 30 38 31 45 38 30 35 2c 0a 20 20 20 20 30 78  0081E805,.    0x
0fb0: 30 30 38 32 32 38 30 35 2c 20 30 78 30 30 38 32  00822805, 0x0082
0fc0: 38 30 31 41 2c 20 30 78 30 30 38 33 34 30 32 31  801A, 0x00834021
0fd0: 2c 20 30 78 30 30 38 34 30 30 30 32 2c 20 30 78  , 0x00840002, 0x
0fe0: 30 30 38 34 30 43 30 34 2c 0a 20 20 20 20 30 78  00840C04,.    0x
0ff0: 30 30 38 34 32 30 30 32 2c 20 30 78 30 30 38 34  00842002, 0x0084
1000: 35 30 30 31 2c 20 30 78 30 30 38 34 35 38 30 33  5001, 0x00845803
1010: 2c 20 30 78 30 30 38 34 37 38 30 36 2c 20 30 78  , 0x00847806, 0x
1020: 30 30 38 34 39 34 30 31 2c 0a 20 20 20 20 30 78  00849401,.    0x
1030: 30 30 38 34 39 43 30 31 2c 20 30 78 30 30 38 34  00849C01, 0x0084
1040: 41 34 30 31 2c 20 30 78 30 30 38 34 42 38 30 31  A401, 0x0084B801
1050: 2c 20 30 78 30 30 38 34 45 38 30 32 2c 20 30 78  , 0x0084E802, 0x
1060: 30 30 38 35 30 30 30 35 2c 0a 20 20 20 20 30 78  00850005,.    0x
1070: 30 30 38 35 32 38 30 34 2c 20 30 78 30 30 38 35  00852804, 0x0085
1080: 33 43 30 31 2c 20 30 78 30 30 38 36 34 32 36 34  3C01, 0x00864264
1090: 2c 20 30 78 30 30 39 30 30 30 32 37 2c 20 30 78  , 0x00900027, 0x
10a0: 30 30 39 31 30 30 30 42 2c 0a 20 20 20 20 30 78  0091000B,.    0x
10b0: 30 30 39 32 37 30 34 45 2c 20 30 78 30 30 39 34  0092704E, 0x0094
10c0: 30 32 30 30 2c 20 30 78 30 30 39 43 30 34 37 35  0200, 0x009C0475
10d0: 2c 20 30 78 30 30 39 45 35 33 42 39 2c 20 30 78  , 0x009E53B9, 0x
10e0: 30 30 41 44 34 30 30 41 2c 0a 20 20 20 20 30 78  00AD400A,.    0x
10f0: 30 30 42 33 39 34 30 36 2c 20 30 78 30 30 42 33  00B39406, 0x00B3
1100: 42 43 30 33 2c 20 30 78 30 30 42 33 45 34 30 34  BC03, 0x00B3E404
1110: 2c 20 30 78 30 30 42 33 46 38 30 32 2c 20 30 78  , 0x00B3F802, 0x
1120: 30 30 42 35 43 30 30 31 2c 0a 20 20 20 20 30 78  00B5C001,.    0x
1130: 30 30 42 35 46 43 30 31 2c 20 30 78 30 30 42 37  00B5FC01, 0x00B7
1140: 38 30 34 46 2c 20 30 78 30 30 42 38 43 30 30 43  804F, 0x00B8C00C
1150: 2c 20 30 78 30 30 42 41 30 30 31 41 2c 20 30 78  , 0x00BA001A, 0x
1160: 30 30 42 41 36 43 35 39 2c 0a 20 20 20 20 30 78  00BA6C59,.    0x
1170: 30 30 42 43 30 30 44 36 2c 20 30 78 30 30 42 46  00BC00D6, 0x00BF
1180: 43 30 30 43 2c 20 30 78 30 30 43 30 30 30 30 35  C00C, 0x00C00005
1190: 2c 20 30 78 30 30 43 30 32 30 31 39 2c 20 30 78  , 0x00C02019, 0x
11a0: 30 30 43 30 41 38 30 37 2c 0a 20 20 20 20 30 78  00C0A807,.    0x
11b0: 30 30 43 30 44 38 30 32 2c 20 30 78 30 30 43 30  00C0D802, 0x00C0
11c0: 46 34 30 33 2c 20 30 78 30 30 43 32 36 34 30 34  F403, 0x00C26404
11d0: 2c 20 30 78 30 30 43 32 38 30 30 31 2c 20 30 78  , 0x00C28001, 0x
11e0: 30 30 43 33 45 43 30 31 2c 0a 20 20 20 20 30 78  00C3EC01,.    0x
11f0: 30 30 43 36 34 30 30 32 2c 20 30 78 30 30 43 36  00C64002, 0x00C6
1200: 35 38 30 41 2c 20 30 78 30 30 43 37 30 30 32 34  580A, 0x00C70024
1210: 2c 20 30 78 30 30 43 38 30 30 31 46 2c 20 30 78  , 0x00C8001F, 0x
1220: 30 30 43 38 41 38 31 45 2c 0a 20 20 20 20 30 78  00C8A81E,.    0x
1230: 30 30 43 39 34 30 30 31 2c 20 30 78 30 30 43 39  00C94001, 0x00C9
1240: 38 30 32 30 2c 20 30 78 30 30 43 41 32 38 32 37  8020, 0x00CA2827
1250: 2c 20 30 78 30 30 43 42 30 30 33 46 2c 20 30 78  , 0x00CB003F, 0x
1260: 30 30 43 43 30 31 30 30 2c 0a 20 20 20 20 30 78  00CC0100,.    0x
1270: 30 31 33 37 30 30 34 30 2c 20 30 78 30 32 39 32  01370040, 0x0292
1280: 34 30 33 37 2c 20 30 78 30 32 39 33 46 38 30 32  4037, 0x0293F802
1290: 2c 20 30 78 30 32 39 38 33 34 30 33 2c 20 30 78  , 0x02983403, 0x
12a0: 30 32 39 39 42 43 31 30 2c 0a 20 20 20 20 30 78  0299BC10,.    0x
12b0: 30 32 39 41 37 43 30 31 2c 20 30 78 30 32 39 42  029A7C01, 0x029B
12c0: 43 30 30 38 2c 20 30 78 30 32 39 43 30 30 31 37  C008, 0x029C0017
12d0: 2c 20 30 78 30 32 39 43 38 30 30 32 2c 20 30 78  , 0x029C8002, 0x
12e0: 30 32 39 45 32 34 30 32 2c 0a 20 20 20 20 30 78  029E2402,.    0x
12f0: 30 32 41 30 30 38 30 31 2c 20 30 78 30 32 41 30  02A00801, 0x02A0
1300: 31 38 30 31 2c 20 30 78 30 32 41 30 32 43 30 31  1801, 0x02A02C01
1310: 2c 20 30 78 30 32 41 30 38 43 30 39 2c 20 30 78  , 0x02A08C09, 0x
1320: 30 32 41 30 44 38 30 34 2c 0a 20 20 20 20 30 78  02A0D804,.    0x
1330: 30 32 41 31 44 30 30 34 2c 20 30 78 30 32 41 32  02A1D004, 0x02A2
1340: 30 30 30 32 2c 20 30 78 30 32 41 32 44 30 31 31  0002, 0x02A2D011
1350: 2c 20 30 78 30 32 41 33 33 38 30 32 2c 20 30 78  , 0x02A33802, 0x
1360: 30 32 41 33 38 30 31 32 2c 0a 20 20 20 20 30 78  02A38012,.    0x
1370: 30 32 41 33 45 30 30 33 2c 20 30 78 30 32 41 34  02A3E003, 0x02A4
1380: 39 38 30 41 2c 20 30 78 30 32 41 35 31 43 30 44  980A, 0x02A51C0D
1390: 2c 20 30 78 30 32 41 35 37 43 30 31 2c 20 30 78  , 0x02A57C01, 0x
13a0: 30 32 41 36 30 30 30 34 2c 0a 20 20 20 20 30 78  02A60004,.    0x
13b0: 30 32 41 36 43 43 31 42 2c 20 30 78 30 32 41 37  02A6CC1B, 0x02A7
13c0: 37 38 30 32 2c 20 30 78 30 32 41 38 41 34 30 45  7802, 0x02A8A40E
13d0: 2c 20 30 78 30 32 41 39 30 43 30 31 2c 20 30 78  , 0x02A90C01, 0x
13e0: 30 32 41 39 33 30 30 32 2c 0a 20 20 20 20 30 78  02A93002,.    0x
13f0: 30 32 41 39 37 30 30 34 2c 20 30 78 30 32 41 39  02A97004, 0x02A9
1400: 44 43 30 33 2c 20 30 78 30 32 41 39 45 43 30 31  DC03, 0x02A9EC01
1410: 2c 20 30 78 30 32 41 41 43 30 30 31 2c 20 30 78  , 0x02AAC001, 0x
1420: 30 32 41 41 43 38 30 33 2c 0a 20 20 20 20 30 78  02AAC803,.    0x
1430: 30 32 41 41 44 43 30 32 2c 20 30 78 30 32 41 41  02AADC02, 0x02AA
1440: 46 38 30 32 2c 20 30 78 30 32 41 42 30 34 30 31  F802, 0x02AB0401
1450: 2c 20 30 78 30 32 41 42 37 38 30 32 2c 20 30 78  , 0x02AB7802, 0x
1460: 30 32 41 42 41 43 30 37 2c 0a 20 20 20 20 30 78  02ABAC07,.    0x
1470: 30 32 41 42 44 34 30 32 2c 20 30 78 30 32 41 46  02ABD402, 0x02AF
1480: 38 43 30 42 2c 20 30 78 30 33 36 30 30 30 30 31  8C0B, 0x03600001
1490: 2c 20 30 78 30 33 36 44 46 43 30 32 2c 20 30 78  , 0x036DFC02, 0x
14a0: 30 33 36 46 46 43 30 32 2c 0a 20 20 20 20 30 78  036FFC02,.    0x
14b0: 30 33 37 46 46 43 30 31 2c 20 30 78 30 33 45 43  037FFC01, 0x03EC
14c0: 37 38 30 31 2c 20 30 78 30 33 45 43 41 34 30 31  7801, 0x03ECA401
14d0: 2c 20 30 78 30 33 45 45 43 38 31 30 2c 20 30 78  , 0x03EEC810, 0x
14e0: 30 33 46 34 46 38 30 32 2c 0a 20 20 20 20 30 78  03F4F802,.    0x
14f0: 30 33 46 37 46 30 30 32 2c 20 30 78 30 33 46 38  03F7F002, 0x03F8
1500: 30 30 31 41 2c 20 30 78 30 33 46 38 38 30 30 37  001A, 0x03F88007
1510: 2c 20 30 78 30 33 46 38 43 30 32 33 2c 20 30 78  , 0x03F8C023, 0x
1520: 30 33 46 39 35 30 31 33 2c 0a 20 20 20 20 30 78  03F95013,.    0x
1530: 30 33 46 39 41 30 30 34 2c 20 30 78 30 33 46 42  03F9A004, 0x03FB
1540: 46 43 30 31 2c 20 30 78 30 33 46 43 30 34 30 46  FC01, 0x03FC040F
1550: 2c 20 30 78 30 33 46 43 36 38 30 37 2c 20 30 78  , 0x03FC6807, 0x
1560: 30 33 46 43 45 43 30 36 2c 0a 20 20 20 20 30 78  03FCEC06,.    0x
1570: 30 33 46 44 36 43 30 42 2c 20 30 78 30 33 46 46  03FD6C0B, 0x03FF
1580: 38 30 30 37 2c 20 30 78 30 33 46 46 41 30 30 37  8007, 0x03FFA007
1590: 2c 20 30 78 30 33 46 46 45 34 30 35 2c 20 30 78  , 0x03FFE405, 0x
15a0: 30 34 30 34 30 30 30 33 2c 0a 20 20 20 20 30 78  04040003,.    0x
15b0: 30 34 30 34 44 43 30 39 2c 20 30 78 30 34 30 35  0404DC09, 0x0405
15c0: 45 34 31 31 2c 20 30 78 30 34 30 36 34 30 30 43  E411, 0x0406400C
15d0: 2c 20 30 78 30 34 30 37 34 30 32 45 2c 20 30 78  , 0x0407402E, 0x
15e0: 30 34 30 45 37 43 30 31 2c 0a 20 20 20 20 30 78  040E7C01,.    0x
15f0: 30 34 30 46 34 30 30 31 2c 20 30 78 30 34 32 31  040F4001, 0x0421
1600: 35 43 30 31 2c 20 30 78 30 34 32 34 37 43 30 31  5C01, 0x04247C01
1610: 2c 20 30 78 30 34 32 34 46 43 30 31 2c 20 30 78  , 0x0424FC01, 0x
1620: 30 34 32 38 30 34 30 33 2c 0a 20 20 20 20 30 78  04280403,.    0x
1630: 30 34 32 38 31 34 30 32 2c 20 30 78 30 34 32 38  04281402, 0x0428
1640: 33 30 30 34 2c 20 30 78 30 34 32 38 45 30 30 33  3004, 0x0428E003
1650: 2c 20 30 78 30 34 32 38 46 43 30 31 2c 20 30 78  , 0x0428FC01, 0x
1660: 30 34 32 39 34 30 30 39 2c 0a 20 20 20 20 30 78  04294009,.    0x
1670: 30 34 32 39 46 43 30 31 2c 20 30 78 30 34 32 43  0429FC01, 0x042C
1680: 45 34 30 37 2c 20 30 78 30 34 34 30 30 30 30 33  E407, 0x04400003
1690: 2c 20 30 78 30 34 34 30 45 30 31 36 2c 20 30 78  , 0x0440E016, 0x
16a0: 30 34 34 32 30 30 30 33 2c 0a 20 20 20 20 30 78  04420003,.    0x
16b0: 30 34 34 32 43 30 31 32 2c 20 30 78 30 34 34 34  0442C012, 0x0444
16c0: 30 30 30 33 2c 20 30 78 30 34 34 34 39 43 30 45  0003, 0x04449C0E
16d0: 2c 20 30 78 30 34 34 35 30 30 30 34 2c 20 30 78  , 0x04450004, 0x
16e0: 30 34 34 36 30 30 30 33 2c 0a 20 20 20 20 30 78  04460003,.    0x
16f0: 30 34 34 36 43 43 30 45 2c 20 30 78 30 34 34 37  0446CC0E, 0x0447
1700: 31 34 30 34 2c 20 30 78 30 34 35 41 41 43 30 44  1404, 0x045AAC0D
1710: 2c 20 30 78 30 34 39 31 43 30 30 34 2c 20 30 78  , 0x0491C004, 0x
1720: 30 35 42 44 34 34 32 45 2c 0a 20 20 20 20 30 78  05BD442E,.    0x
1730: 30 35 42 45 33 43 30 34 2c 20 30 78 30 37 34 30  05BE3C04, 0x0740
1740: 30 30 46 36 2c 20 30 78 30 37 34 34 30 30 32 37  00F6, 0x07440027
1750: 2c 20 30 78 30 37 34 34 41 34 42 35 2c 20 30 78  , 0x0744A4B5, 0x
1760: 30 37 34 38 30 30 34 36 2c 0a 20 20 20 20 30 78  07480046,.    0x
1770: 30 37 34 43 30 30 35 37 2c 20 30 78 30 37 35 42  074C0057, 0x075B
1780: 30 34 30 31 2c 20 30 78 30 37 35 42 36 43 30 31  0401, 0x075B6C01
1790: 2c 20 30 78 30 37 35 42 45 43 30 31 2c 20 30 78  , 0x075BEC01, 0x
17a0: 30 37 35 43 35 34 30 31 2c 0a 20 20 20 20 30 78  075C5401,.    0x
17b0: 30 37 35 43 44 34 30 31 2c 20 30 78 30 37 35 44  075CD401, 0x075D
17c0: 33 43 30 31 2c 20 30 78 30 37 35 44 42 43 30 31  3C01, 0x075DBC01
17d0: 2c 20 30 78 30 37 35 45 32 34 30 31 2c 20 30 78  , 0x075E2401, 0x
17e0: 30 37 35 45 41 34 30 31 2c 0a 20 20 20 20 30 78  075EA401,.    0x
17f0: 30 37 35 46 30 43 30 31 2c 20 30 78 30 37 42 42  075F0C01, 0x07BB
1800: 43 30 30 32 2c 20 30 78 30 37 43 30 30 30 32 43  C002, 0x07C0002C
1810: 2c 20 30 78 30 37 43 30 43 30 36 34 2c 20 30 78  , 0x07C0C064, 0x
1820: 30 37 43 32 38 30 30 46 2c 0a 20 20 20 20 30 78  07C2800F,.    0x
1830: 30 37 43 32 43 34 30 45 2c 20 30 78 30 37 43 33  07C2C40E, 0x07C3
1840: 30 34 30 46 2c 20 30 78 30 37 43 33 34 34 30 46  040F, 0x07C3440F
1850: 2c 20 30 78 30 37 43 34 34 30 31 46 2c 20 30 78  , 0x07C4401F, 0x
1860: 30 37 43 34 43 30 33 43 2c 0a 20 20 20 20 30 78  07C4C03C,.    0x
1870: 30 37 43 35 43 30 32 42 2c 20 30 78 30 37 43 37  07C5C02B, 0x07C7
1880: 39 38 31 44 2c 20 30 78 30 37 43 38 34 30 32 42  981D, 0x07C8402B
1890: 2c 20 30 78 30 37 43 39 30 30 30 39 2c 20 30 78  , 0x07C90009, 0x
18a0: 30 37 43 39 34 30 30 32 2c 0a 20 20 20 20 30 78  07C94002,.    0x
18b0: 30 37 43 43 30 30 32 31 2c 20 30 78 30 37 43 43  07CC0021, 0x07CC
18c0: 43 30 30 36 2c 20 30 78 30 37 43 43 44 43 34 36  C006, 0x07CCDC46
18d0: 2c 20 30 78 30 37 43 45 30 30 31 34 2c 20 30 78  , 0x07CE0014, 0x
18e0: 30 37 43 45 38 30 32 35 2c 0a 20 20 20 20 30 78  07CE8025,.    0x
18f0: 30 37 43 46 31 38 30 35 2c 20 30 78 30 37 43 46  07CF1805, 0x07CF
1900: 38 30 31 31 2c 20 30 78 30 37 44 30 30 30 33 46  8011, 0x07D0003F
1910: 2c 20 30 78 30 37 44 31 30 30 30 31 2c 20 30 78  , 0x07D10001, 0x
1920: 30 37 44 31 30 38 42 36 2c 0a 20 20 20 20 30 78  07D108B6,.    0x
1930: 30 37 44 33 45 34 30 34 2c 20 30 78 30 37 44 34  07D3E404, 0x07D4
1940: 30 30 33 45 2c 20 30 78 30 37 44 35 30 30 30 34  003E, 0x07D50004
1950: 2c 20 30 78 30 37 44 35 34 30 31 38 2c 20 30 78  , 0x07D54018, 0x
1960: 30 37 44 37 45 43 34 36 2c 0a 20 20 20 20 30 78  07D7EC46,.    0x
1970: 30 37 44 39 31 34 30 42 2c 20 30 78 30 37 44 41  07D9140B, 0x07DA
1980: 30 30 34 36 2c 20 30 78 30 37 44 43 30 30 37 34  0046, 0x07DC0074
1990: 2c 20 30 78 33 38 30 30 30 34 30 31 2c 20 30 78  , 0x38000401, 0x
19a0: 33 38 30 30 38 30 36 30 2c 0a 20 20 20 20 30 78  38008060,.    0x
19b0: 33 38 30 34 30 30 46 30 2c 0a 20 20 7d 3b 0a 20  380400F0,.  };. 
19c0: 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 75 6e   static const un
19d0: 73 69 67 6e 65 64 20 69 6e 74 20 61 41 73 63 69  signed int aAsci
19e0: 69 5b 34 5d 20 3d 20 7b 0a 20 20 20 20 30 78 46  i[4] = {.    0xF
19f0: 46 46 46 46 46 46 46 2c 20 30 78 46 43 30 30 46  FFFFFFF, 0xFC00F
1a00: 46 46 46 2c 20 30 78 46 38 30 30 30 30 30 31 2c  FFF, 0xF8000001,
1a10: 20 30 78 46 38 30 30 30 30 30 31 2c 0a 20 20 7d   0xF8000001,.  }
1a20: 3b 0a 0a 20 20 69 66 28 20 63 3c 31 32 38 20 29  ;..  if( c<128 )
1a30: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 20 28  {.    return ( (
1a40: 61 41 73 63 69 69 5b 63 20 3e 3e 20 35 5d 20 26  aAscii[c >> 5] &
1a50: 20 28 31 20 3c 3c 20 28 63 20 26 20 30 78 30 30   (1 << (c & 0x00
1a60: 31 46 29 29 29 3d 3d 30 20 29 3b 0a 20 20 7d 65  1F)))==0 );.  }e
1a70: 6c 73 65 20 69 66 28 20 63 3c 28 31 3c 3c 32 32  lse if( c<(1<<22
1a80: 29 20 29 7b 0a 20 20 20 20 75 6e 73 69 67 6e 65  ) ){.    unsigne
1a90: 64 20 69 6e 74 20 6b 65 79 20 3d 20 28 28 28 75  d int key = (((u
1aa0: 6e 73 69 67 6e 65 64 20 69 6e 74 29 63 29 3c 3c  nsigned int)c)<<
1ab0: 31 30 29 20 7c 20 30 78 30 30 30 30 30 33 46 46  10) | 0x000003FF
1ac0: 3b 0a 20 20 20 20 69 6e 74 20 69 52 65 73 20 3d  ;.    int iRes =
1ad0: 20 30 3b 0a 20 20 20 20 69 6e 74 20 69 48 69 20   0;.    int iHi 
1ae0: 3d 20 73 69 7a 65 6f 66 28 61 45 6e 74 72 79 29  = sizeof(aEntry)
1af0: 2f 73 69 7a 65 6f 66 28 61 45 6e 74 72 79 5b 30  /sizeof(aEntry[0
1b00: 5d 29 20 2d 20 31 3b 0a 20 20 20 20 69 6e 74 20  ]) - 1;.    int 
1b10: 69 4c 6f 20 3d 20 30 3b 0a 20 20 20 20 77 68 69  iLo = 0;.    whi
1b20: 6c 65 28 20 69 48 69 3e 3d 69 4c 6f 20 29 7b 0a  le( iHi>=iLo ){.
1b30: 20 20 20 20 20 20 69 6e 74 20 69 54 65 73 74 20        int iTest 
1b40: 3d 20 28 69 48 69 20 2b 20 69 4c 6f 29 20 2f 20  = (iHi + iLo) / 
1b50: 32 3b 0a 20 20 20 20 20 20 69 66 28 20 6b 65 79  2;.      if( key
1b60: 20 3e 3d 20 61 45 6e 74 72 79 5b 69 54 65 73 74   >= aEntry[iTest
1b70: 5d 20 29 7b 0a 20 20 20 20 20 20 20 20 69 52 65  ] ){.        iRe
1b80: 73 20 3d 20 69 54 65 73 74 3b 0a 20 20 20 20 20  s = iTest;.     
1b90: 20 20 20 69 4c 6f 20 3d 20 69 54 65 73 74 2b 31     iLo = iTest+1
1ba0: 3b 0a 20 20 20 20 20 20 7d 65 6c 73 65 7b 0a 20  ;.      }else{. 
1bb0: 20 20 20 20 20 20 20 69 48 69 20 3d 20 69 54 65         iHi = iTe
1bc0: 73 74 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 20 20  st-1;.      }.  
1bd0: 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 20    }.    assert( 
1be0: 61 45 6e 74 72 79 5b 30 5d 3c 6b 65 79 20 29 3b  aEntry[0]<key );
1bf0: 0a 20 20 20 20 61 73 73 65 72 74 28 20 6b 65 79  .    assert( key
1c00: 3e 3d 61 45 6e 74 72 79 5b 69 52 65 73 5d 20 29  >=aEntry[iRes] )
1c10: 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 28 28  ;.    return (((
1c20: 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 63 29 20  unsigned int)c) 
1c30: 3e 3d 20 28 28 61 45 6e 74 72 79 5b 69 52 65 73  >= ((aEntry[iRes
1c40: 5d 3e 3e 31 30 29 20 2b 20 28 61 45 6e 74 72 79  ]>>10) + (aEntry
1c50: 5b 69 52 65 73 5d 26 30 78 33 46 46 29 29 29 3b  [iRes]&0x3FF)));
1c60: 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 31 3b  .  }.  return 1;
1c70: 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20 49 66 20 74 68  .}.../*.** If th
1c80: 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
1c90: 63 6f 64 65 70 6f 69 6e 74 20 63 6f 72 72 65 73  codepoint corres
1ca0: 70 6f 6e 64 69 6e 67 20 74 6f 20 61 20 6c 6f 77  ponding to a low
1cb0: 65 72 63 61 73 65 20 6c 65 74 74 65 72 0a 2a 2a  ercase letter.**
1cc0: 20 69 6e 20 74 68 65 20 41 53 43 49 49 20 72 61   in the ASCII ra
1cd0: 6e 67 65 20 77 69 74 68 20 61 20 64 69 61 63 72  nge with a diacr
1ce0: 69 74 69 63 20 61 64 64 65 64 2c 20 72 65 74 75  itic added, retu
1cf0: 72 6e 20 74 68 65 20 63 6f 64 65 70 6f 69 6e 74  rn the codepoint
1d00: 0a 2a 2a 20 6f 66 20 74 68 65 20 41 53 43 49 49  .** of the ASCII
1d10: 20 6c 65 74 74 65 72 20 6f 6e 6c 79 2e 20 46 6f   letter only. Fo
1d20: 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 70 61  r example, if pa
1d30: 73 73 65 64 20 32 33 35 20 2d 20 22 4c 41 54 49  ssed 235 - "LATI
1d40: 4e 0a 2a 2a 20 53 4d 41 4c 4c 20 4c 45 54 54 45  N.** SMALL LETTE
1d50: 52 20 45 20 57 49 54 48 20 44 49 41 45 52 45 53  R E WITH DIAERES
1d60: 49 53 22 20 2d 20 72 65 74 75 72 6e 20 36 35 20  IS" - return 65 
1d70: 28 22 4c 41 54 49 4e 20 53 4d 41 4c 4c 20 4c 45  ("LATIN SMALL LE
1d80: 54 54 45 52 0a 2a 2a 20 45 22 29 2e 20 54 68 65  TTER.** E"). The
1d90: 20 72 65 73 75 6c 73 20 6f 66 20 70 61 73 73 69   resuls of passi
1da0: 6e 67 20 61 20 63 6f 64 65 70 6f 69 6e 74 20 74  ng a codepoint t
1db0: 68 61 74 20 63 6f 72 72 65 73 70 6f 6e 64 73 20  hat corresponds 
1dc0: 74 6f 20 61 6e 0a 2a 2a 20 75 70 70 65 72 63 61  to an.** upperca
1dd0: 73 65 20 6c 65 74 74 65 72 20 61 72 65 20 75 6e  se letter are un
1de0: 64 65 66 69 6e 65 64 2e 0a 2a 2f 0a 73 74 61 74  defined..*/.stat
1df0: 69 63 20 69 6e 74 20 66 74 73 35 5f 72 65 6d 6f  ic int fts5_remo
1e00: 76 65 5f 64 69 61 63 72 69 74 69 63 28 69 6e 74  ve_diacritic(int
1e10: 20 63 29 7b 0a 20 20 75 6e 73 69 67 6e 65 64 20   c){.  unsigned 
1e20: 73 68 6f 72 74 20 61 44 69 61 5b 5d 20 3d 20 7b  short aDia[] = {
1e30: 0a 20 20 20 20 20 20 20 20 30 2c 20 20 31 37 39  .        0,  179
1e40: 37 2c 20 20 31 38 34 38 2c 20 20 31 38 35 39 2c  7,  1848,  1859,
1e50: 20 20 31 38 39 31 2c 20 20 31 39 32 38 2c 20 20    1891,  1928,  
1e60: 31 39 34 30 2c 20 20 31 39 39 35 2c 20 0a 20 20  1940,  1995, .  
1e70: 20 20 20 32 30 32 34 2c 20 20 32 30 34 30 2c 20     2024,  2040, 
1e80: 20 32 30 36 30 2c 20 20 32 31 31 30 2c 20 20 32   2060,  2110,  2
1e90: 31 36 38 2c 20 20 32 32 30 36 2c 20 20 32 32 36  168,  2206,  226
1ea0: 34 2c 20 20 32 32 38 36 2c 20 0a 20 20 20 20 20  4,  2286, .     
1eb0: 32 33 34 34 2c 20 20 32 33 38 33 2c 20 20 32 34  2344,  2383,  24
1ec0: 37 32 2c 20 20 32 34 38 38 2c 20 20 32 35 31 36  72,  2488,  2516
1ed0: 2c 20 20 32 35 39 36 2c 20 20 32 36 36 38 2c 20  ,  2596,  2668, 
1ee0: 20 32 37 33 32 2c 20 0a 20 20 20 20 20 32 37 38   2732, .     278
1ef0: 32 2c 20 20 32 38 34 32 2c 20 20 32 38 39 34 2c  2,  2842,  2894,
1f00: 20 20 32 39 35 34 2c 20 20 32 39 38 34 2c 20 20    2954,  2984,  
1f10: 33 30 30 30 2c 20 20 33 30 32 38 2c 20 20 33 33  3000,  3028,  33
1f20: 33 36 2c 20 0a 20 20 20 20 20 33 34 35 36 2c 20  36, .     3456, 
1f30: 20 33 36 39 36 2c 20 20 33 37 31 32 2c 20 20 33   3696,  3712,  3
1f40: 37 32 38 2c 20 20 33 37 34 34 2c 20 20 33 38 39  728,  3744,  389
1f50: 36 2c 20 20 33 39 31 32 2c 20 20 33 39 32 38 2c  6,  3912,  3928,
1f60: 20 0a 20 20 20 20 20 33 39 36 38 2c 20 20 34 30   .     3968,  40
1f70: 30 38 2c 20 20 34 30 34 30 2c 20 20 34 31 30 36  08,  4040,  4106
1f80: 2c 20 20 34 31 33 38 2c 20 20 34 31 37 30 2c 20  ,  4138,  4170, 
1f90: 20 34 32 30 32 2c 20 20 34 32 33 34 2c 20 0a 20   4202,  4234, . 
1fa0: 20 20 20 20 34 32 36 36 2c 20 20 34 32 39 36 2c      4266,  4296,
1fb0: 20 20 34 33 31 32 2c 20 20 34 33 34 34 2c 20 20    4312,  4344,  
1fc0: 34 34 30 38 2c 20 20 34 34 32 34 2c 20 20 34 34  4408,  4424,  44
1fd0: 37 32 2c 20 20 34 35 30 34 2c 20 0a 20 20 20 20  72,  4504, .    
1fe0: 20 36 31 34 38 2c 20 20 36 31 39 38 2c 20 20 36   6148,  6198,  6
1ff0: 32 36 34 2c 20 20 36 32 38 30 2c 20 20 36 33 36  264,  6280,  636
2000: 30 2c 20 20 36 34 32 39 2c 20 20 36 35 30 35 2c  0,  6429,  6505,
2010: 20 20 36 35 32 39 2c 20 0a 20 20 20 20 36 31 34    6529, .    614
2020: 34 38 2c 20 36 31 34 36 38 2c 20 36 31 35 33 34  48, 61468, 61534
2030: 2c 20 36 31 35 39 32 2c 20 36 31 36 34 32 2c 20  , 61592, 61642, 
2040: 36 31 36 38 38 2c 20 36 31 37 30 34 2c 20 36 31  61688, 61704, 61
2050: 37 32 36 2c 20 0a 20 20 20 20 36 31 37 38 34 2c  726, .    61784,
2060: 20 36 31 38 30 30 2c 20 36 31 38 33 36 2c 20 36   61800, 61836, 6
2070: 31 38 38 30 2c 20 36 31 39 31 34 2c 20 36 31 39  1880, 61914, 619
2080: 34 38 2c 20 36 31 39 39 38 2c 20 36 32 31 32 32  48, 61998, 62122
2090: 2c 20 0a 20 20 20 20 36 32 31 35 34 2c 20 36 32  , .    62154, 62
20a0: 32 30 30 2c 20 36 32 32 31 38 2c 20 36 32 33 30  200, 62218, 6230
20b0: 32 2c 20 36 32 33 36 34 2c 20 36 32 34 34 32 2c  2, 62364, 62442,
20c0: 20 36 32 34 37 38 2c 20 36 32 35 33 36 2c 20 0a   62478, 62536, .
20d0: 20 20 20 20 36 32 35 35 34 2c 20 36 32 35 38 34      62554, 62584
20e0: 2c 20 36 32 36 30 34 2c 20 36 32 36 34 30 2c 20  , 62604, 62640, 
20f0: 36 32 36 34 38 2c 20 36 32 36 35 36 2c 20 36 32  62648, 62656, 62
2100: 36 36 34 2c 20 36 32 37 33 30 2c 20 0a 20 20 20  664, 62730, .   
2110: 20 36 32 39 32 34 2c 20 36 33 30 35 30 2c 20 36   62924, 63050, 6
2120: 33 30 38 32 2c 20 36 33 32 37 34 2c 20 36 33 33  3082, 63274, 633
2130: 39 30 2c 20 0a 20 20 7d 3b 0a 20 20 63 68 61 72  90, .  };.  char
2140: 20 61 43 68 61 72 5b 5d 20 3d 20 7b 0a 20 20 20   aChar[] = {.   
2150: 20 27 5c 30 27 2c 20 27 61 27 2c 20 20 27 63 27   '\0', 'a',  'c'
2160: 2c 20 20 27 65 27 2c 20 20 27 69 27 2c 20 20 27  ,  'e',  'i',  '
2170: 6e 27 2c 20 20 27 6f 27 2c 20 20 27 75 27 2c 20  n',  'o',  'u', 
2180: 20 27 79 27 2c 20 20 27 79 27 2c 20 20 27 61 27   'y',  'y',  'a'
2190: 2c 20 20 27 63 27 2c 20 20 0a 20 20 20 20 27 64  ,  'c',  .    'd
21a0: 27 2c 20 20 27 65 27 2c 20 20 27 65 27 2c 20 20  ',  'e',  'e',  
21b0: 27 67 27 2c 20 20 27 68 27 2c 20 20 27 69 27 2c  'g',  'h',  'i',
21c0: 20 20 27 6a 27 2c 20 20 27 6b 27 2c 20 20 27 6c    'j',  'k',  'l
21d0: 27 2c 20 20 27 6e 27 2c 20 20 27 6f 27 2c 20 20  ',  'n',  'o',  
21e0: 27 72 27 2c 20 20 0a 20 20 20 20 27 73 27 2c 20  'r',  .    's', 
21f0: 20 27 74 27 2c 20 20 27 75 27 2c 20 20 27 75 27   't',  'u',  'u'
2200: 2c 20 20 27 77 27 2c 20 20 27 79 27 2c 20 20 27  ,  'w',  'y',  '
2210: 7a 27 2c 20 20 27 6f 27 2c 20 20 27 75 27 2c 20  z',  'o',  'u', 
2220: 20 27 61 27 2c 20 20 27 69 27 2c 20 20 27 6f 27   'a',  'i',  'o'
2230: 2c 20 20 0a 20 20 20 20 27 75 27 2c 20 20 27 67  ,  .    'u',  'g
2240: 27 2c 20 20 27 6b 27 2c 20 20 27 6f 27 2c 20 20  ',  'k',  'o',  
2250: 27 6a 27 2c 20 20 27 67 27 2c 20 20 27 6e 27 2c  'j',  'g',  'n',
2260: 20 20 27 61 27 2c 20 20 27 65 27 2c 20 20 27 69    'a',  'e',  'i
2270: 27 2c 20 20 27 6f 27 2c 20 20 27 72 27 2c 20 20  ',  'o',  'r',  
2280: 0a 20 20 20 20 27 75 27 2c 20 20 27 73 27 2c 20  .    'u',  's', 
2290: 20 27 74 27 2c 20 20 27 68 27 2c 20 20 27 61 27   't',  'h',  'a'
22a0: 2c 20 20 27 65 27 2c 20 20 27 6f 27 2c 20 20 27  ,  'e',  'o',  '
22b0: 79 27 2c 20 20 27 5c 30 27 2c 20 27 5c 30 27 2c  y',  '\0', '\0',
22c0: 20 27 5c 30 27 2c 20 27 5c 30 27 2c 20 0a 20 20   '\0', '\0', .  
22d0: 20 20 27 5c 30 27 2c 20 27 5c 30 27 2c 20 27 5c    '\0', '\0', '\
22e0: 30 27 2c 20 27 5c 30 27 2c 20 27 61 27 2c 20 20  0', '\0', 'a',  
22f0: 27 62 27 2c 20 20 27 64 27 2c 20 20 27 64 27 2c  'b',  'd',  'd',
2300: 20 20 27 65 27 2c 20 20 27 66 27 2c 20 20 27 67    'e',  'f',  'g
2310: 27 2c 20 20 27 68 27 2c 20 20 0a 20 20 20 20 27  ',  'h',  .    '
2320: 68 27 2c 20 20 27 69 27 2c 20 20 27 6b 27 2c 20  h',  'i',  'k', 
2330: 20 27 6c 27 2c 20 20 27 6c 27 2c 20 20 27 6d 27   'l',  'l',  'm'
2340: 2c 20 20 27 6e 27 2c 20 20 27 70 27 2c 20 20 27  ,  'n',  'p',  '
2350: 72 27 2c 20 20 27 72 27 2c 20 20 27 73 27 2c 20  r',  'r',  's', 
2360: 20 27 74 27 2c 20 20 0a 20 20 20 20 27 75 27 2c   't',  .    'u',
2370: 20 20 27 76 27 2c 20 20 27 77 27 2c 20 20 27 77    'v',  'w',  'w
2380: 27 2c 20 20 27 78 27 2c 20 20 27 79 27 2c 20 20  ',  'x',  'y',  
2390: 27 7a 27 2c 20 20 27 68 27 2c 20 20 27 74 27 2c  'z',  'h',  't',
23a0: 20 20 27 77 27 2c 20 20 27 79 27 2c 20 20 27 61    'w',  'y',  'a
23b0: 27 2c 20 20 0a 20 20 20 20 27 65 27 2c 20 20 27  ',  .    'e',  '
23c0: 69 27 2c 20 20 27 6f 27 2c 20 20 27 75 27 2c 20  i',  'o',  'u', 
23d0: 20 27 79 27 2c 20 20 0a 20 20 7d 3b 0a 0a 20 20   'y',  .  };..  
23e0: 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6b 65 79  unsigned int key
23f0: 20 3d 20 28 28 28 75 6e 73 69 67 6e 65 64 20 69   = (((unsigned i
2400: 6e 74 29 63 29 3c 3c 33 29 20 7c 20 30 78 30 30  nt)c)<<3) | 0x00
2410: 30 30 30 30 30 37 3b 0a 20 20 69 6e 74 20 69 52  000007;.  int iR
2420: 65 73 20 3d 20 30 3b 0a 20 20 69 6e 74 20 69 48  es = 0;.  int iH
2430: 69 20 3d 20 73 69 7a 65 6f 66 28 61 44 69 61 29  i = sizeof(aDia)
2440: 2f 73 69 7a 65 6f 66 28 61 44 69 61 5b 30 5d 29  /sizeof(aDia[0])
2450: 20 2d 20 31 3b 0a 20 20 69 6e 74 20 69 4c 6f 20   - 1;.  int iLo 
2460: 3d 20 30 3b 0a 20 20 77 68 69 6c 65 28 20 69 48  = 0;.  while( iH
2470: 69 3e 3d 69 4c 6f 20 29 7b 0a 20 20 20 20 69 6e  i>=iLo ){.    in
2480: 74 20 69 54 65 73 74 20 3d 20 28 69 48 69 20 2b  t iTest = (iHi +
2490: 20 69 4c 6f 29 20 2f 20 32 3b 0a 20 20 20 20 69   iLo) / 2;.    i
24a0: 66 28 20 6b 65 79 20 3e 3d 20 61 44 69 61 5b 69  f( key >= aDia[i
24b0: 54 65 73 74 5d 20 29 7b 0a 20 20 20 20 20 20 69  Test] ){.      i
24c0: 52 65 73 20 3d 20 69 54 65 73 74 3b 0a 20 20 20  Res = iTest;.   
24d0: 20 20 20 69 4c 6f 20 3d 20 69 54 65 73 74 2b 31     iLo = iTest+1
24e0: 3b 0a 20 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20  ;.    }else{.   
24f0: 20 20 20 69 48 69 20 3d 20 69 54 65 73 74 2d 31     iHi = iTest-1
2500: 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 61 73  ;.    }.  }.  as
2510: 73 65 72 74 28 20 6b 65 79 3e 3d 61 44 69 61 5b  sert( key>=aDia[
2520: 69 52 65 73 5d 20 29 3b 0a 20 20 72 65 74 75 72  iRes] );.  retur
2530: 6e 20 28 28 63 20 3e 20 28 61 44 69 61 5b 69 52  n ((c > (aDia[iR
2540: 65 73 5d 3e 3e 33 29 20 2b 20 28 61 44 69 61 5b  es]>>3) + (aDia[
2550: 69 52 65 73 5d 26 30 78 30 37 29 29 20 3f 20 63  iRes]&0x07)) ? c
2560: 20 3a 20 28 69 6e 74 29 61 43 68 61 72 5b 69 52   : (int)aChar[iR
2570: 65 73 5d 29 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20  es]);.}.../*.** 
2580: 52 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 74  Return true if t
2590: 68 65 20 61 72 67 75 6d 65 6e 74 20 69 6e 74 65  he argument inte
25a0: 72 70 72 65 74 65 64 20 61 73 20 61 20 75 6e 69  rpreted as a uni
25b0: 63 6f 64 65 20 63 6f 64 65 70 6f 69 6e 74 0a 2a  code codepoint.*
25c0: 2a 20 69 73 20 61 20 64 69 61 63 72 69 74 69 63  * is a diacritic
25d0: 61 6c 20 6d 6f 64 69 66 69 65 72 20 63 68 61 72  al modifier char
25e0: 61 63 74 65 72 2e 0a 2a 2f 0a 69 6e 74 20 73 71  acter..*/.int sq
25f0: 6c 69 74 65 33 46 74 73 35 55 6e 69 63 6f 64 65  lite3Fts5Unicode
2600: 49 73 64 69 61 63 72 69 74 69 63 28 69 6e 74 20  Isdiacritic(int 
2610: 63 29 7b 0a 20 20 75 6e 73 69 67 6e 65 64 20 69  c){.  unsigned i
2620: 6e 74 20 6d 61 73 6b 30 20 3d 20 30 78 30 38 30  nt mask0 = 0x080
2630: 32 39 46 44 46 3b 0a 20 20 75 6e 73 69 67 6e 65  29FDF;.  unsigne
2640: 64 20 69 6e 74 20 6d 61 73 6b 31 20 3d 20 30 78  d int mask1 = 0x
2650: 30 30 30 33 36 31 46 38 3b 0a 20 20 69 66 28 20  000361F8;.  if( 
2660: 63 3c 37 36 38 20 7c 7c 20 63 3e 38 31 37 20 29  c<768 || c>817 )
2670: 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 72 65 74   return 0;.  ret
2680: 75 72 6e 20 28 63 20 3c 20 37 36 38 2b 33 32 29  urn (c < 768+32)
2690: 20 3f 0a 20 20 20 20 20 20 28 6d 61 73 6b 30 20   ?.      (mask0 
26a0: 26 20 28 31 20 3c 3c 20 28 63 2d 37 36 38 29 29  & (1 << (c-768))
26b0: 29 20 3a 0a 20 20 20 20 20 20 28 6d 61 73 6b 31  ) :.      (mask1
26c0: 20 26 20 28 31 20 3c 3c 20 28 63 2d 37 36 38 2d   & (1 << (c-768-
26d0: 33 32 29 29 29 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a  32)));.}.../*.**
26e0: 20 49 6e 74 65 72 70 72 65 74 20 74 68 65 20 61   Interpret the a
26f0: 72 67 75 6d 65 6e 74 20 61 73 20 61 20 75 6e 69  rgument as a uni
2700: 63 6f 64 65 20 63 6f 64 65 70 6f 69 6e 74 2e 20  code codepoint. 
2710: 49 66 20 74 68 65 20 63 6f 64 65 70 6f 69 6e 74  If the codepoint
2720: 0a 2a 2a 20 69 73 20 61 6e 20 75 70 70 65 72 20  .** is an upper 
2730: 63 61 73 65 20 63 68 61 72 61 63 74 65 72 20 74  case character t
2740: 68 61 74 20 68 61 73 20 61 20 6c 6f 77 65 72 20  hat has a lower 
2750: 63 61 73 65 20 65 71 75 69 76 61 6c 65 6e 74 2c  case equivalent,
2760: 0a 2a 2a 20 72 65 74 75 72 6e 20 74 68 65 20 63  .** return the c
2770: 6f 64 65 70 6f 69 6e 74 20 63 6f 72 72 65 73 70  odepoint corresp
2780: 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6c 6f  onding to the lo
2790: 77 65 72 20 63 61 73 65 20 76 65 72 73 69 6f 6e  wer case version
27a0: 2e 0a 2a 2a 20 4f 74 68 65 72 77 69 73 65 2c 20  ..** Otherwise, 
27b0: 72 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66  return a copy of
27c0: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2e 0a 2a   the argument..*
27d0: 2a 0a 2a 2a 20 54 68 65 20 72 65 73 75 6c 74 73  *.** The results
27e0: 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64 20 69   are undefined i
27f0: 66 20 74 68 65 20 76 61 6c 75 65 20 70 61 73 73  f the value pass
2800: 65 64 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74  ed to this funct
2810: 69 6f 6e 0a 2a 2a 20 69 73 20 6c 65 73 73 20 74  ion.** is less t
2820: 68 61 6e 20 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e 74  han zero..*/.int
2830: 20 73 71 6c 69 74 65 33 46 74 73 35 55 6e 69 63   sqlite3Fts5Unic
2840: 6f 64 65 46 6f 6c 64 28 69 6e 74 20 63 2c 20 69  odeFold(int c, i
2850: 6e 74 20 62 52 65 6d 6f 76 65 44 69 61 63 72 69  nt bRemoveDiacri
2860: 74 69 63 29 7b 0a 20 20 2f 2a 20 45 61 63 68 20  tic){.  /* Each 
2870: 65 6e 74 72 79 20 69 6e 20 74 68 65 20 66 6f 6c  entry in the fol
2880: 6c 6f 77 69 6e 67 20 61 72 72 61 79 20 64 65 66  lowing array def
2890: 69 6e 65 73 20 61 20 72 75 6c 65 20 66 6f 72 20  ines a rule for 
28a0: 66 6f 6c 64 69 6e 67 20 61 20 72 61 6e 67 65 0a  folding a range.
28b0: 20 20 2a 2a 20 6f 66 20 63 6f 64 65 70 6f 69 6e    ** of codepoin
28c0: 74 73 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65  ts to lower case
28d0: 2e 20 54 68 65 20 72 75 6c 65 20 61 70 70 6c 69  . The rule appli
28e0: 65 73 20 74 6f 20 61 20 72 61 6e 67 65 20 6f 66  es to a range of
28f0: 20 6e 52 61 6e 67 65 0a 20 20 2a 2a 20 63 6f 64   nRange.  ** cod
2900: 65 70 6f 69 6e 74 73 20 73 74 61 72 74 69 6e 67  epoints starting
2910: 20 61 74 20 63 6f 64 65 70 6f 69 6e 74 20 69 43   at codepoint iC
2920: 6f 64 65 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 49  ode..  **.  ** I
2930: 66 20 74 68 65 20 6c 65 61 73 74 20 73 69 67 6e  f the least sign
2940: 69 66 69 63 61 6e 74 20 62 69 74 20 69 6e 20 66  ificant bit in f
2950: 6c 61 67 73 20 69 73 20 63 6c 65 61 72 2c 20 74  lags is clear, t
2960: 68 65 6e 20 74 68 65 20 72 75 6c 65 20 61 70 70  hen the rule app
2970: 6c 69 65 73 0a 20 20 2a 2a 20 74 6f 20 61 6c 6c  lies.  ** to all
2980: 20 6e 52 61 6e 67 65 20 63 6f 64 65 70 6f 69 6e   nRange codepoin
2990: 74 73 20 28 69 2e 65 2e 20 61 6c 6c 20 6e 52 61  ts (i.e. all nRa
29a0: 6e 67 65 20 63 6f 64 65 70 6f 69 6e 74 73 20 61  nge codepoints a
29b0: 72 65 20 75 70 70 65 72 20 63 61 73 65 20 61 6e  re upper case an
29c0: 64 0a 20 20 2a 2a 20 6e 65 65 64 20 74 6f 20 62  d.  ** need to b
29d0: 65 20 66 6f 6c 64 65 64 29 2e 20 4f 72 2c 20 69  e folded). Or, i
29e0: 66 20 69 74 20 69 73 20 73 65 74 2c 20 74 68 65  f it is set, the
29f0: 6e 20 74 68 65 20 72 75 6c 65 20 6f 6e 6c 79 20  n the rule only 
2a00: 61 70 70 6c 69 65 73 20 74 6f 0a 20 20 2a 2a 20  applies to.  ** 
2a10: 65 76 65 72 79 20 73 65 63 6f 6e 64 20 63 6f 64  every second cod
2a20: 65 70 6f 69 6e 74 20 69 6e 20 74 68 65 20 72 61  epoint in the ra
2a30: 6e 67 65 2c 20 73 74 61 72 74 69 6e 67 20 77 69  nge, starting wi
2a40: 74 68 20 63 6f 64 65 70 6f 69 6e 74 20 43 2e 0a  th codepoint C..
2a50: 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65 20 37 20    **.  ** The 7 
2a60: 6d 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74  most significant
2a70: 20 62 69 74 73 20 69 6e 20 66 6c 61 67 73 20 61   bits in flags a
2a80: 72 65 20 61 6e 20 69 6e 64 65 78 20 69 6e 74 6f  re an index into
2a90: 20 74 68 65 20 61 69 4f 66 66 5b 5d 0a 20 20 2a   the aiOff[].  *
2aa0: 2a 20 61 72 72 61 79 2e 20 49 66 20 61 20 73 70  * array. If a sp
2ab0: 65 63 69 66 69 63 20 63 6f 64 65 70 6f 69 6e 74  ecific codepoint
2ac0: 20 43 20 64 6f 65 73 20 72 65 71 75 69 72 65 20   C does require 
2ad0: 66 6f 6c 64 69 6e 67 2c 20 74 68 65 6e 20 69 74  folding, then it
2ae0: 73 20 6c 6f 77 65 72 0a 20 20 2a 2a 20 63 61 73  s lower.  ** cas
2af0: 65 20 65 71 75 69 76 61 6c 65 6e 74 20 69 73 20  e equivalent is 
2b00: 28 28 43 20 2b 20 61 69 4f 66 66 5b 66 6c 61 67  ((C + aiOff[flag
2b10: 73 3e 3e 31 5d 29 20 26 20 30 78 46 46 46 46 29  s>>1]) & 0xFFFF)
2b20: 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65 20  ..  **.  ** The 
2b30: 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 73  contents of this
2b40: 20 61 72 72 61 79 20 61 72 65 20 67 65 6e 65 72   array are gener
2b50: 61 74 65 64 20 62 79 20 70 61 72 73 69 6e 67 20  ated by parsing 
2b60: 74 68 65 20 43 61 73 65 46 6f 6c 64 69 6e 67 2e  the CaseFolding.
2b70: 74 78 74 0a 20 20 2a 2a 20 66 69 6c 65 20 64 69  txt.  ** file di
2b80: 73 74 72 69 62 75 74 65 64 20 61 73 20 70 61 72  stributed as par
2b90: 74 20 6f 66 20 74 68 65 20 22 55 6e 69 63 6f 64  t of the "Unicod
2ba0: 65 20 43 68 61 72 61 63 74 65 72 20 44 61 74 61  e Character Data
2bb0: 62 61 73 65 22 2e 20 53 65 65 0a 20 20 2a 2a 20  base". See.  ** 
2bc0: 68 74 74 70 3a 2f 2f 77 77 77 2e 75 6e 69 63 6f  http://www.unico
2bd0: 64 65 2e 6f 72 67 20 66 6f 72 20 64 65 74 61 69  de.org for detai
2be0: 6c 73 2e 0a 20 20 2a 2f 0a 20 20 73 74 61 74 69  ls..  */.  stati
2bf0: 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 54  c const struct T
2c00: 61 62 6c 65 45 6e 74 72 79 20 7b 0a 20 20 20 20  ableEntry {.    
2c10: 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 20 69  unsigned short i
2c20: 43 6f 64 65 3b 0a 20 20 20 20 75 6e 73 69 67 6e  Code;.    unsign
2c30: 65 64 20 63 68 61 72 20 66 6c 61 67 73 3b 0a 20  ed char flags;. 
2c40: 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72     unsigned char
2c50: 20 6e 52 61 6e 67 65 3b 0a 20 20 7d 20 61 45 6e   nRange;.  } aEn
2c60: 74 72 79 5b 5d 20 3d 20 7b 0a 20 20 20 20 7b 36  try[] = {.    {6
2c70: 35 2c 20 31 34 2c 20 32 36 7d 2c 20 20 20 20 20  5, 14, 26},     
2c80: 20 20 20 20 20 7b 31 38 31 2c 20 36 34 2c 20 31       {181, 64, 1
2c90: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 31 39 32  },          {192
2ca0: 2c 20 31 34 2c 20 32 33 7d 2c 0a 20 20 20 20 7b  , 14, 23},.    {
2cb0: 32 31 36 2c 20 31 34 2c 20 37 7d 2c 20 20 20 20  216, 14, 7},    
2cc0: 20 20 20 20 20 20 7b 32 35 36 2c 20 31 2c 20 34        {256, 1, 4
2cd0: 38 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 33 30  8},          {30
2ce0: 36 2c 20 31 2c 20 36 7d 2c 0a 20 20 20 20 7b 33  6, 1, 6},.    {3
2cf0: 31 33 2c 20 31 2c 20 31 36 7d 2c 20 20 20 20 20  13, 1, 16},     
2d00: 20 20 20 20 20 7b 33 33 30 2c 20 31 2c 20 34 36       {330, 1, 46
2d10: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 33 37 36  },          {376
2d20: 2c 20 31 31 36 2c 20 31 7d 2c 0a 20 20 20 20 7b  , 116, 1},.    {
2d30: 33 37 37 2c 20 31 2c 20 36 7d 2c 20 20 20 20 20  377, 1, 6},     
2d40: 20 20 20 20 20 20 7b 33 38 33 2c 20 31 30 34 2c        {383, 104,
2d50: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 33 38   1},         {38
2d60: 35 2c 20 35 30 2c 20 31 7d 2c 0a 20 20 20 20 7b  5, 50, 1},.    {
2d70: 33 38 36 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20  386, 1, 4},     
2d80: 20 20 20 20 20 20 7b 33 39 30 2c 20 34 34 2c 20        {390, 44, 
2d90: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 33 39  1},          {39
2da0: 31 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 33  1, 0, 1},.    {3
2db0: 39 33 2c 20 34 32 2c 20 32 7d 2c 20 20 20 20 20  93, 42, 2},     
2dc0: 20 20 20 20 20 7b 33 39 35 2c 20 30 2c 20 31 7d       {395, 0, 1}
2dd0: 2c 20 20 20 20 20 20 20 20 20 20 20 7b 33 39 38  ,           {398
2de0: 2c 20 33 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 33  , 32, 1},.    {3
2df0: 39 39 2c 20 33 38 2c 20 31 7d 2c 20 20 20 20 20  99, 38, 1},     
2e00: 20 20 20 20 20 7b 34 30 30 2c 20 34 30 2c 20 31       {400, 40, 1
2e10: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 34 30 31  },          {401
2e20: 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 30  , 0, 1},.    {40
2e30: 33 2c 20 34 32 2c 20 31 7d 2c 20 20 20 20 20 20  3, 42, 1},      
2e40: 20 20 20 20 7b 34 30 34 2c 20 34 36 2c 20 31 7d      {404, 46, 1}
2e50: 2c 20 20 20 20 20 20 20 20 20 20 7b 34 30 36 2c  ,          {406,
2e60: 20 35 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 30   52, 1},.    {40
2e70: 37 2c 20 34 38 2c 20 31 7d 2c 20 20 20 20 20 20  7, 48, 1},      
2e80: 20 20 20 20 7b 34 30 38 2c 20 30 2c 20 31 7d 2c      {408, 0, 1},
2e90: 20 20 20 20 20 20 20 20 20 20 20 7b 34 31 32 2c             {412,
2ea0: 20 35 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 31   52, 1},.    {41
2eb0: 33 2c 20 35 34 2c 20 31 7d 2c 20 20 20 20 20 20  3, 54, 1},      
2ec0: 20 20 20 20 7b 34 31 35 2c 20 35 36 2c 20 31 7d      {415, 56, 1}
2ed0: 2c 20 20 20 20 20 20 20 20 20 20 7b 34 31 36 2c  ,          {416,
2ee0: 20 31 2c 20 36 7d 2c 0a 20 20 20 20 7b 34 32 32   1, 6},.    {422
2ef0: 2c 20 36 30 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 60, 1},       
2f00: 20 20 20 7b 34 32 33 2c 20 30 2c 20 31 7d 2c 20     {423, 0, 1}, 
2f10: 20 20 20 20 20 20 20 20 20 20 7b 34 32 35 2c 20            {425, 
2f20: 36 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 32 38  60, 1},.    {428
2f30: 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  , 0, 1},        
2f40: 20 20 20 7b 34 33 30 2c 20 36 30 2c 20 31 7d 2c     {430, 60, 1},
2f50: 20 20 20 20 20 20 20 20 20 20 7b 34 33 31 2c 20            {431, 
2f60: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 33 33 2c  0, 1},.    {433,
2f70: 20 35 38 2c 20 32 7d 2c 20 20 20 20 20 20 20 20   58, 2},        
2f80: 20 20 7b 34 33 35 2c 20 31 2c 20 34 7d 2c 20 20    {435, 1, 4},  
2f90: 20 20 20 20 20 20 20 20 20 7b 34 33 39 2c 20 36           {439, 6
2fa0: 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 34 30 2c  2, 1},.    {440,
2fb0: 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20   0, 1},         
2fc0: 20 20 7b 34 34 34 2c 20 30 2c 20 31 7d 2c 20 20    {444, 0, 1},  
2fd0: 20 20 20 20 20 20 20 20 20 7b 34 35 32 2c 20 32           {452, 2
2fe0: 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 35 33 2c 20  , 1},.    {453, 
2ff0: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  0, 1},          
3000: 20 7b 34 35 35 2c 20 32 2c 20 31 7d 2c 20 20 20   {455, 2, 1},   
3010: 20 20 20 20 20 20 20 20 7b 34 35 36 2c 20 30 2c          {456, 0,
3020: 20 31 7d 2c 0a 20 20 20 20 7b 34 35 38 2c 20 32   1},.    {458, 2
3030: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20  , 1},           
3040: 7b 34 35 39 2c 20 31 2c 20 31 38 7d 2c 20 20 20  {459, 1, 18},   
3050: 20 20 20 20 20 20 20 7b 34 37 38 2c 20 31 2c 20         {478, 1, 
3060: 31 38 7d 2c 0a 20 20 20 20 7b 34 39 37 2c 20 32  18},.    {497, 2
3070: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20  , 1},           
3080: 7b 34 39 38 2c 20 31 2c 20 34 7d 2c 20 20 20 20  {498, 1, 4},    
3090: 20 20 20 20 20 20 20 7b 35 30 32 2c 20 31 32 32         {502, 122
30a0: 2c 20 31 7d 2c 0a 20 20 20 20 7b 35 30 33 2c 20  , 1},.    {503, 
30b0: 31 33 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  134, 1},        
30c0: 20 7b 35 30 34 2c 20 31 2c 20 34 30 7d 2c 20 20   {504, 1, 40},  
30d0: 20 20 20 20 20 20 20 20 7b 35 34 34 2c 20 31 31          {544, 11
30e0: 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 35 34 36 2c  0, 1},.    {546,
30f0: 20 31 2c 20 31 38 7d 2c 20 20 20 20 20 20 20 20   1, 18},        
3100: 20 20 7b 35 37 30 2c 20 37 30 2c 20 31 7d 2c 20    {570, 70, 1}, 
3110: 20 20 20 20 20 20 20 20 20 7b 35 37 31 2c 20 30           {571, 0
3120: 2c 20 31 7d 2c 0a 20 20 20 20 7b 35 37 33 2c 20  , 1},.    {573, 
3130: 31 30 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  108, 1},        
3140: 20 7b 35 37 34 2c 20 36 38 2c 20 31 7d 2c 20 20   {574, 68, 1},  
3150: 20 20 20 20 20 20 20 20 7b 35 37 37 2c 20 30 2c          {577, 0,
3160: 20 31 7d 2c 0a 20 20 20 20 7b 35 37 39 2c 20 31   1},.    {579, 1
3170: 30 36 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  06, 1},         
3180: 7b 35 38 30 2c 20 32 38 2c 20 31 7d 2c 20 20 20  {580, 28, 1},   
3190: 20 20 20 20 20 20 20 7b 35 38 31 2c 20 33 30 2c         {581, 30,
31a0: 20 31 7d 2c 0a 20 20 20 20 7b 35 38 32 2c 20 31   1},.    {582, 1
31b0: 2c 20 31 30 7d 2c 20 20 20 20 20 20 20 20 20 20  , 10},          
31c0: 7b 38 33 37 2c 20 33 36 2c 20 31 7d 2c 20 20 20  {837, 36, 1},   
31d0: 20 20 20 20 20 20 20 7b 38 38 30 2c 20 31 2c 20         {880, 1, 
31e0: 34 7d 2c 0a 20 20 20 20 7b 38 38 36 2c 20 30 2c  4},.    {886, 0,
31f0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b   1},           {
3200: 39 30 32 2c 20 31 38 2c 20 31 7d 2c 20 20 20 20  902, 18, 1},    
3210: 20 20 20 20 20 20 7b 39 30 34 2c 20 31 36 2c 20        {904, 16, 
3220: 33 7d 2c 0a 20 20 20 20 7b 39 30 38 2c 20 32 36  3},.    {908, 26
3230: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b  , 1},          {
3240: 39 31 30 2c 20 32 34 2c 20 32 7d 2c 20 20 20 20  910, 24, 2},    
3250: 20 20 20 20 20 20 7b 39 31 33 2c 20 31 34 2c 20        {913, 14, 
3260: 31 37 7d 2c 0a 20 20 20 20 7b 39 33 31 2c 20 31  17},.    {931, 1
3270: 34 2c 20 39 7d 2c 20 20 20 20 20 20 20 20 20 20  4, 9},          
3280: 7b 39 36 32 2c 20 30 2c 20 31 7d 2c 20 20 20 20  {962, 0, 1},    
3290: 20 20 20 20 20 20 20 7b 39 37 35 2c 20 34 2c 20         {975, 4, 
32a0: 31 7d 2c 0a 20 20 20 20 7b 39 37 36 2c 20 31 34  1},.    {976, 14
32b0: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  0, 1},         {
32c0: 39 37 37 2c 20 31 34 32 2c 20 31 7d 2c 20 20 20  977, 142, 1},   
32d0: 20 20 20 20 20 20 7b 39 38 31 2c 20 31 34 36 2c        {981, 146,
32e0: 20 31 7d 2c 0a 20 20 20 20 7b 39 38 32 2c 20 31   1},.    {982, 1
32f0: 34 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  44, 1},         
3300: 7b 39 38 34 2c 20 31 2c 20 32 34 7d 2c 20 20 20  {984, 1, 24},   
3310: 20 20 20 20 20 20 20 7b 31 30 30 38 2c 20 31 33         {1008, 13
3320: 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 30 30 39  6, 1},.    {1009
3330: 2c 20 31 33 38 2c 20 31 7d 2c 20 20 20 20 20 20  , 138, 1},      
3340: 20 20 7b 31 30 31 32 2c 20 31 33 30 2c 20 31 7d    {1012, 130, 1}
3350: 2c 20 20 20 20 20 20 20 20 7b 31 30 31 33 2c 20  ,        {1013, 
3360: 31 32 38 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 30  128, 1},.    {10
3370: 31 35 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20  15, 0, 1},      
3380: 20 20 20 20 7b 31 30 31 37 2c 20 31 35 32 2c 20      {1017, 152, 
3390: 31 7d 2c 20 20 20 20 20 20 20 20 7b 31 30 31 38  1},        {1018
33a0: 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 30  , 0, 1},.    {10
33b0: 32 31 2c 20 31 31 30 2c 20 33 7d 2c 20 20 20 20  21, 110, 3},    
33c0: 20 20 20 20 7b 31 30 32 34 2c 20 33 34 2c 20 31      {1024, 34, 1
33d0: 36 7d 2c 20 20 20 20 20 20 20 20 7b 31 30 34 30  6},        {1040
33e0: 2c 20 31 34 2c 20 33 32 7d 2c 0a 20 20 20 20 7b  , 14, 32},.    {
33f0: 31 31 32 30 2c 20 31 2c 20 33 34 7d 2c 20 20 20  1120, 1, 34},   
3400: 20 20 20 20 20 20 7b 31 31 36 32 2c 20 31 2c 20        {1162, 1, 
3410: 35 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 32  54},         {12
3420: 31 36 2c 20 36 2c 20 31 7d 2c 0a 20 20 20 20 7b  16, 6, 1},.    {
3430: 31 32 31 37 2c 20 31 2c 20 31 34 7d 2c 20 20 20  1217, 1, 14},   
3440: 20 20 20 20 20 20 7b 31 32 33 32 2c 20 31 2c 20        {1232, 1, 
3450: 38 38 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 33  88},         {13
3460: 32 39 2c 20 32 32 2c 20 33 38 7d 2c 0a 20 20 20  29, 22, 38},.   
3470: 20 7b 34 32 35 36 2c 20 36 36 2c 20 33 38 7d 2c   {4256, 66, 38},
3480: 20 20 20 20 20 20 20 20 7b 34 32 39 35 2c 20 36          {4295, 6
3490: 36 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  6, 1},         {
34a0: 34 33 30 31 2c 20 36 36 2c 20 31 7d 2c 0a 20 20  4301, 66, 1},.  
34b0: 20 20 7b 37 36 38 30 2c 20 31 2c 20 31 35 30 7d    {7680, 1, 150}
34c0: 2c 20 20 20 20 20 20 20 20 7b 37 38 33 35 2c 20  ,        {7835, 
34d0: 31 33 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  132, 1},        
34e0: 7b 37 38 33 38 2c 20 39 36 2c 20 31 7d 2c 0a 20  {7838, 96, 1},. 
34f0: 20 20 20 7b 37 38 34 30 2c 20 31 2c 20 39 36 7d     {7840, 1, 96}
3500: 2c 20 20 20 20 20 20 20 20 20 7b 37 39 34 34 2c  ,         {7944,
3510: 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20   150, 8},       
3520: 20 7b 37 39 36 30 2c 20 31 35 30 2c 20 36 7d 2c   {7960, 150, 6},
3530: 0a 20 20 20 20 7b 37 39 37 36 2c 20 31 35 30 2c  .    {7976, 150,
3540: 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 37 39 39   8},        {799
3550: 32 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20  2, 150, 8},     
3560: 20 20 20 7b 38 30 30 38 2c 20 31 35 30 2c 20 36     {8008, 150, 6
3570: 7d 2c 0a 20 20 20 20 7b 38 30 32 35 2c 20 31 35  },.    {8025, 15
3580: 31 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38  1, 8},        {8
3590: 30 34 30 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20  040, 150, 8},   
35a0: 20 20 20 20 20 7b 38 30 37 32 2c 20 31 35 30 2c       {8072, 150,
35b0: 20 38 7d 2c 0a 20 20 20 20 7b 38 30 38 38 2c 20   8},.    {8088, 
35c0: 31 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20 20  150, 8},        
35d0: 7b 38 31 30 34 2c 20 31 35 30 2c 20 38 7d 2c 20  {8104, 150, 8}, 
35e0: 20 20 20 20 20 20 20 7b 38 31 32 30 2c 20 31 35         {8120, 15
35f0: 30 2c 20 32 7d 2c 0a 20 20 20 20 7b 38 31 32 32  0, 2},.    {8122
3600: 2c 20 31 32 36 2c 20 32 7d 2c 20 20 20 20 20 20  , 126, 2},      
3610: 20 20 7b 38 31 32 34 2c 20 31 34 38 2c 20 31 7d    {8124, 148, 1}
3620: 2c 20 20 20 20 20 20 20 20 7b 38 31 32 36 2c 20  ,        {8126, 
3630: 31 30 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 38 31  100, 1},.    {81
3640: 33 36 2c 20 31 32 34 2c 20 34 7d 2c 20 20 20 20  36, 124, 4},    
3650: 20 20 20 20 7b 38 31 34 30 2c 20 31 34 38 2c 20      {8140, 148, 
3660: 31 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 35 32  1},        {8152
3670: 2c 20 31 35 30 2c 20 32 7d 2c 0a 20 20 20 20 7b  , 150, 2},.    {
3680: 38 31 35 34 2c 20 31 32 30 2c 20 32 7d 2c 20 20  8154, 120, 2},  
3690: 20 20 20 20 20 20 7b 38 31 36 38 2c 20 31 35 30        {8168, 150
36a0: 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31  , 2},        {81
36b0: 37 30 2c 20 31 31 38 2c 20 32 7d 2c 0a 20 20 20  70, 118, 2},.   
36c0: 20 7b 38 31 37 32 2c 20 31 35 32 2c 20 31 7d 2c   {8172, 152, 1},
36d0: 20 20 20 20 20 20 20 20 7b 38 31 38 34 2c 20 31          {8184, 1
36e0: 31 32 2c 20 32 7d 2c 20 20 20 20 20 20 20 20 7b  12, 2},        {
36f0: 38 31 38 36 2c 20 31 31 34 2c 20 32 7d 2c 0a 20  8186, 114, 2},. 
3700: 20 20 20 7b 38 31 38 38 2c 20 31 34 38 2c 20 31     {8188, 148, 1
3710: 7d 2c 20 20 20 20 20 20 20 20 7b 38 34 38 36 2c  },        {8486,
3720: 20 39 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   98, 1},        
3730: 20 7b 38 34 39 30 2c 20 39 32 2c 20 31 7d 2c 0a   {8490, 92, 1},.
3740: 20 20 20 20 7b 38 34 39 31 2c 20 39 34 2c 20 31      {8491, 94, 1
3750: 7d 2c 20 20 20 20 20 20 20 20 20 7b 38 34 39 38  },         {8498
3760: 2c 20 31 32 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 12, 1},       
3770: 20 20 7b 38 35 34 34 2c 20 38 2c 20 31 36 7d 2c    {8544, 8, 16},
3780: 0a 20 20 20 20 7b 38 35 37 39 2c 20 30 2c 20 31  .    {8579, 0, 1
3790: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39 33 39  },          {939
37a0: 38 2c 20 31 30 2c 20 32 36 7d 2c 20 20 20 20 20  8, 10, 26},     
37b0: 20 20 20 7b 31 31 32 36 34 2c 20 32 32 2c 20 34     {11264, 22, 4
37c0: 37 7d 2c 0a 20 20 20 20 7b 31 31 33 36 30 2c 20  7},.    {11360, 
37d0: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b  0, 1},         {
37e0: 31 31 33 36 32 2c 20 38 38 2c 20 31 7d 2c 20 20  11362, 88, 1},  
37f0: 20 20 20 20 20 20 7b 31 31 33 36 33 2c 20 31 30        {11363, 10
3800: 32 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 31 33 36  2, 1},.    {1136
3810: 34 2c 20 39 30 2c 20 31 7d 2c 20 20 20 20 20 20  4, 90, 1},      
3820: 20 20 7b 31 31 33 36 37 2c 20 31 2c 20 36 7d 2c    {11367, 1, 6},
3830: 20 20 20 20 20 20 20 20 20 7b 31 31 33 37 33 2c           {11373,
3840: 20 38 34 2c 20 31 7d 2c 0a 20 20 20 20 7b 31 31   84, 1},.    {11
3850: 33 37 34 2c 20 38 36 2c 20 31 7d 2c 20 20 20 20  374, 86, 1},    
3860: 20 20 20 20 7b 31 31 33 37 35 2c 20 38 30 2c 20      {11375, 80, 
3870: 31 7d 2c 20 20 20 20 20 20 20 20 7b 31 31 33 37  1},        {1137
3880: 36 2c 20 38 32 2c 20 31 7d 2c 0a 20 20 20 20 7b  6, 82, 1},.    {
3890: 31 31 33 37 38 2c 20 30 2c 20 31 7d 2c 20 20 20  11378, 0, 1},   
38a0: 20 20 20 20 20 20 7b 31 31 33 38 31 2c 20 30 2c        {11381, 0,
38b0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31   1},         {11
38c0: 33 39 30 2c 20 37 38 2c 20 32 7d 2c 0a 20 20 20  390, 78, 2},.   
38d0: 20 7b 31 31 33 39 32 2c 20 31 2c 20 31 30 30 7d   {11392, 1, 100}
38e0: 2c 20 20 20 20 20 20 20 7b 31 31 34 39 39 2c 20  ,       {11499, 
38f0: 31 2c 20 34 7d 2c 20 20 20 20 20 20 20 20 20 7b  1, 4},         {
3900: 31 31 35 30 36 2c 20 30 2c 20 31 7d 2c 0a 20 20  11506, 0, 1},.  
3910: 20 20 7b 34 32 35 36 30 2c 20 31 2c 20 34 36 7d    {42560, 1, 46}
3920: 2c 20 20 20 20 20 20 20 20 7b 34 32 36 32 34 2c  ,        {42624,
3930: 20 31 2c 20 32 34 7d 2c 20 20 20 20 20 20 20 20   1, 24},        
3940: 7b 34 32 37 38 36 2c 20 31 2c 20 31 34 7d 2c 0a  {42786, 1, 14},.
3950: 20 20 20 20 7b 34 32 38 30 32 2c 20 31 2c 20 36      {42802, 1, 6
3960: 32 7d 2c 20 20 20 20 20 20 20 20 7b 34 32 38 37  2},        {4287
3970: 33 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20 20 20  3, 1, 4},       
3980: 20 20 7b 34 32 38 37 37 2c 20 37 36 2c 20 31 7d    {42877, 76, 1}
3990: 2c 0a 20 20 20 20 7b 34 32 38 37 38 2c 20 31 2c  ,.    {42878, 1,
39a0: 20 31 30 7d 2c 20 20 20 20 20 20 20 20 7b 34 32   10},        {42
39b0: 38 39 31 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20  891, 0, 1},     
39c0: 20 20 20 20 7b 34 32 38 39 33 2c 20 37 34 2c 20      {42893, 74, 
39d0: 31 7d 2c 0a 20 20 20 20 7b 34 32 38 39 36 2c 20  1},.    {42896, 
39e0: 31 2c 20 34 7d 2c 20 20 20 20 20 20 20 20 20 7b  1, 4},         {
39f0: 34 32 39 31 32 2c 20 31 2c 20 31 30 7d 2c 20 20  42912, 1, 10},  
3a00: 20 20 20 20 20 20 7b 34 32 39 32 32 2c 20 37 32        {42922, 72
3a10: 2c 20 31 7d 2c 0a 20 20 20 20 7b 36 35 33 31 33  , 1},.    {65313
3a20: 2c 20 31 34 2c 20 32 36 7d 2c 20 20 20 20 20 20  , 14, 26},      
3a30: 20 0a 20 20 7d 3b 0a 20 20 73 74 61 74 69 63 20   .  };.  static 
3a40: 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 73  const unsigned s
3a50: 68 6f 72 74 20 61 69 4f 66 66 5b 5d 20 3d 20 7b  hort aiOff[] = {
3a60: 0a 20 20 20 31 2c 20 20 20 20 20 32 2c 20 20 20  .   1,     2,   
3a70: 20 20 38 2c 20 20 20 20 20 31 35 2c 20 20 20 20    8,     15,    
3a80: 31 36 2c 20 20 20 20 32 36 2c 20 20 20 20 32 38  16,    26,    28
3a90: 2c 20 20 20 20 33 32 2c 20 20 20 20 0a 20 20 20  ,    32,    .   
3aa0: 33 37 2c 20 20 20 20 33 38 2c 20 20 20 20 34 30  37,    38,    40
3ab0: 2c 20 20 20 20 34 38 2c 20 20 20 20 36 33 2c 20  ,    48,    63, 
3ac0: 20 20 20 36 34 2c 20 20 20 20 36 39 2c 20 20 20     64,    69,   
3ad0: 20 37 31 2c 20 20 20 20 0a 20 20 20 37 39 2c 20   71,    .   79, 
3ae0: 20 20 20 38 30 2c 20 20 20 20 31 31 36 2c 20 20     80,    116,  
3af0: 20 32 30 32 2c 20 20 20 32 30 33 2c 20 20 20 32   202,   203,   2
3b00: 30 35 2c 20 20 20 32 30 36 2c 20 20 20 32 30 37  05,   206,   207
3b10: 2c 20 20 20 0a 20 20 20 32 30 39 2c 20 20 20 32  ,   .   209,   2
3b20: 31 30 2c 20 20 20 32 31 31 2c 20 20 20 32 31 33  10,   211,   213
3b30: 2c 20 20 20 32 31 34 2c 20 20 20 32 31 37 2c 20  ,   214,   217, 
3b40: 20 20 32 31 38 2c 20 20 20 32 31 39 2c 20 20 20    218,   219,   
3b50: 0a 20 20 20 37 37 35 2c 20 20 20 37 32 36 34 2c  .   775,   7264,
3b60: 20 20 31 30 37 39 32 2c 20 31 30 37 39 35 2c 20    10792, 10795, 
3b70: 32 33 32 32 38 2c 20 32 33 32 35 36 2c 20 33 30  23228, 23256, 30
3b80: 32 30 34 2c 20 35 34 37 32 31 2c 20 0a 20 20 20  204, 54721, .   
3b90: 35 34 37 35 33 2c 20 35 34 37 35 34 2c 20 35 34  54753, 54754, 54
3ba0: 37 35 36 2c 20 35 34 37 38 37 2c 20 35 34 37 39  756, 54787, 5479
3bb0: 33 2c 20 35 34 38 30 39 2c 20 35 37 31 35 33 2c  3, 54809, 57153,
3bc0: 20 35 37 32 37 34 2c 20 0a 20 20 20 35 37 39 32   57274, .   5792
3bd0: 31 2c 20 35 38 30 31 39 2c 20 35 38 33 36 33 2c  1, 58019, 58363,
3be0: 20 36 31 37 32 32 2c 20 36 35 32 36 38 2c 20 36   61722, 65268, 6
3bf0: 35 33 34 31 2c 20 36 35 33 37 33 2c 20 36 35 34  5341, 65373, 654
3c00: 30 36 2c 20 0a 20 20 20 36 35 34 30 38 2c 20 36  06, .   65408, 6
3c10: 35 34 31 30 2c 20 36 35 34 31 35 2c 20 36 35 34  5410, 65415, 654
3c20: 32 34 2c 20 36 35 34 33 36 2c 20 36 35 34 33 39  24, 65436, 65439
3c30: 2c 20 36 35 34 35 30 2c 20 36 35 34 36 32 2c 20  , 65450, 65462, 
3c40: 0a 20 20 20 36 35 34 37 32 2c 20 36 35 34 37 36  .   65472, 65476
3c50: 2c 20 36 35 34 37 38 2c 20 36 35 34 38 30 2c 20  , 65478, 65480, 
3c60: 36 35 34 38 32 2c 20 36 35 34 38 38 2c 20 36 35  65482, 65488, 65
3c70: 35 30 36 2c 20 36 35 35 31 31 2c 20 0a 20 20 20  506, 65511, .   
3c80: 36 35 35 31 34 2c 20 36 35 35 32 31 2c 20 36 35  65514, 65521, 65
3c90: 35 32 37 2c 20 36 35 35 32 38 2c 20 36 35 35 32  527, 65528, 6552
3ca0: 39 2c 20 0a 20 20 7d 3b 0a 0a 20 20 69 6e 74 20  9, .  };..  int 
3cb0: 72 65 74 20 3d 20 63 3b 0a 0a 20 20 61 73 73 65  ret = c;..  asse
3cc0: 72 74 28 20 73 69 7a 65 6f 66 28 75 6e 73 69 67  rt( sizeof(unsig
3cd0: 6e 65 64 20 73 68 6f 72 74 29 3d 3d 32 20 26 26  ned short)==2 &&
3ce0: 20 73 69 7a 65 6f 66 28 75 6e 73 69 67 6e 65 64   sizeof(unsigned
3cf0: 20 63 68 61 72 29 3d 3d 31 20 29 3b 0a 0a 20 20   char)==1 );..  
3d00: 69 66 28 20 63 3c 31 32 38 20 29 7b 0a 20 20 20  if( c<128 ){.   
3d10: 20 69 66 28 20 63 3e 3d 27 41 27 20 26 26 20 63   if( c>='A' && c
3d20: 3c 3d 27 5a 27 20 29 20 72 65 74 20 3d 20 63 20  <='Z' ) ret = c 
3d30: 2b 20 28 27 61 27 20 2d 20 27 41 27 29 3b 0a 20  + ('a' - 'A');. 
3d40: 20 7d 65 6c 73 65 20 69 66 28 20 63 3c 36 35 35   }else if( c<655
3d50: 33 36 20 29 7b 0a 20 20 20 20 63 6f 6e 73 74 20  36 ){.    const 
3d60: 73 74 72 75 63 74 20 54 61 62 6c 65 45 6e 74 72  struct TableEntr
3d70: 79 20 2a 70 3b 0a 20 20 20 20 69 6e 74 20 69 48  y *p;.    int iH
3d80: 69 20 3d 20 73 69 7a 65 6f 66 28 61 45 6e 74 72  i = sizeof(aEntr
3d90: 79 29 2f 73 69 7a 65 6f 66 28 61 45 6e 74 72 79  y)/sizeof(aEntry
3da0: 5b 30 5d 29 20 2d 20 31 3b 0a 20 20 20 20 69 6e  [0]) - 1;.    in
3db0: 74 20 69 4c 6f 20 3d 20 30 3b 0a 20 20 20 20 69  t iLo = 0;.    i
3dc0: 6e 74 20 69 52 65 73 20 3d 20 2d 31 3b 0a 0a 20  nt iRes = -1;.. 
3dd0: 20 20 20 61 73 73 65 72 74 28 20 63 3e 61 45 6e     assert( c>aEn
3de0: 74 72 79 5b 30 5d 2e 69 43 6f 64 65 20 29 3b 0a  try[0].iCode );.
3df0: 20 20 20 20 77 68 69 6c 65 28 20 69 48 69 3e 3d      while( iHi>=
3e00: 69 4c 6f 20 29 7b 0a 20 20 20 20 20 20 69 6e 74  iLo ){.      int
3e10: 20 69 54 65 73 74 20 3d 20 28 69 48 69 20 2b 20   iTest = (iHi + 
3e20: 69 4c 6f 29 20 2f 20 32 3b 0a 20 20 20 20 20 20  iLo) / 2;.      
3e30: 69 6e 74 20 63 6d 70 20 3d 20 28 63 20 2d 20 61  int cmp = (c - a
3e40: 45 6e 74 72 79 5b 69 54 65 73 74 5d 2e 69 43 6f  Entry[iTest].iCo
3e50: 64 65 29 3b 0a 20 20 20 20 20 20 69 66 28 20 63  de);.      if( c
3e60: 6d 70 3e 3d 30 20 29 7b 0a 20 20 20 20 20 20 20  mp>=0 ){.       
3e70: 20 69 52 65 73 20 3d 20 69 54 65 73 74 3b 0a 20   iRes = iTest;. 
3e80: 20 20 20 20 20 20 20 69 4c 6f 20 3d 20 69 54 65         iLo = iTe
3e90: 73 74 2b 31 3b 0a 20 20 20 20 20 20 7d 65 6c 73  st+1;.      }els
3ea0: 65 7b 0a 20 20 20 20 20 20 20 20 69 48 69 20 3d  e{.        iHi =
3eb0: 20 69 54 65 73 74 2d 31 3b 0a 20 20 20 20 20 20   iTest-1;.      
3ec0: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 73 73  }.    }..    ass
3ed0: 65 72 74 28 20 69 52 65 73 3e 3d 30 20 26 26 20  ert( iRes>=0 && 
3ee0: 63 3e 3d 61 45 6e 74 72 79 5b 69 52 65 73 5d 2e  c>=aEntry[iRes].
3ef0: 69 43 6f 64 65 20 29 3b 0a 20 20 20 20 70 20 3d  iCode );.    p =
3f00: 20 26 61 45 6e 74 72 79 5b 69 52 65 73 5d 3b 0a   &aEntry[iRes];.
3f10: 20 20 20 20 69 66 28 20 63 3c 28 70 2d 3e 69 43      if( c<(p->iC
3f20: 6f 64 65 20 2b 20 70 2d 3e 6e 52 61 6e 67 65 29  ode + p->nRange)
3f30: 20 26 26 20 30 3d 3d 28 30 78 30 31 20 26 20 70   && 0==(0x01 & p
3f40: 2d 3e 66 6c 61 67 73 20 26 20 28 70 2d 3e 69 43  ->flags & (p->iC
3f50: 6f 64 65 20 5e 20 63 29 29 20 29 7b 0a 20 20 20  ode ^ c)) ){.   
3f60: 20 20 20 72 65 74 20 3d 20 28 63 20 2b 20 28 61     ret = (c + (a
3f70: 69 4f 66 66 5b 70 2d 3e 66 6c 61 67 73 3e 3e 31  iOff[p->flags>>1
3f80: 5d 29 29 20 26 20 30 78 30 30 30 30 46 46 46 46  ])) & 0x0000FFFF
3f90: 3b 0a 20 20 20 20 20 20 61 73 73 65 72 74 28 20  ;.      assert( 
3fa0: 72 65 74 3e 30 20 29 3b 0a 20 20 20 20 7d 0a 0a  ret>0 );.    }..
3fb0: 20 20 20 20 69 66 28 20 62 52 65 6d 6f 76 65 44      if( bRemoveD
3fc0: 69 61 63 72 69 74 69 63 20 29 20 72 65 74 20 3d  iacritic ) ret =
3fd0: 20 66 74 73 35 5f 72 65 6d 6f 76 65 5f 64 69 61   fts5_remove_dia
3fe0: 63 72 69 74 69 63 28 72 65 74 29 3b 0a 20 20 7d  critic(ret);.  }
3ff0: 0a 20 20 0a 20 20 65 6c 73 65 20 69 66 28 20 63  .  .  else if( c
4000: 3e 3d 36 36 35 36 30 20 26 26 20 63 3c 36 36 36  >=66560 && c<666
4010: 30 30 20 29 7b 0a 20 20 20 20 72 65 74 20 3d 20  00 ){.    ret = 
4020: 63 20 2b 20 34 30 3b 0a 20 20 7d 0a 0a 20 20 72  c + 40;.  }..  r
4030: 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a           eturn ret;.}.