Coverage Report

Created: 2025-12-14 06:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/php-src/ext/json/json_scanner.c
Line
Count
Source
1
/* Generated by re2c 1.3 */
2
/*
3
  +----------------------------------------------------------------------+
4
  | Copyright (c) The PHP Group                                          |
5
  +----------------------------------------------------------------------+
6
  | This source file is subject to version 3.01 of the PHP license,      |
7
  | that is bundled with this package in the file LICENSE, and is        |
8
  | available through the world-wide-web at the following url:           |
9
  | https://www.php.net/license/3_01.txt                                 |
10
  | If you did not receive a copy of the PHP license and are unable to   |
11
  | obtain it through the world-wide-web, please send a note to          |
12
  | license@php.net so we can mail you a copy immediately.               |
13
  +----------------------------------------------------------------------+
14
  | Author: Jakub Zelenka <bukka@php.net>                                |
15
  +----------------------------------------------------------------------+
16
*/
17
18
#include "php.h"
19
#include "php_json_scanner.h"
20
#include "php_json_scanner_defs.h"
21
#include "php_json_parser.h"
22
#include "json_parser.tab.h"
23
24
18.4M
#define YYCTYPE     php_json_ctype
25
232M
#define YYCURSOR    s->cursor
26
#define YYLIMIT     s->limit
27
87.6M
#define YYMARKER    s->marker
28
#define YYCTXMARKER s->ctxmarker
29
30
36.8M
#define YYGETCONDITION()        s->state
31
136k
#define YYSETCONDITION(yystate) s->state = yystate
32
33
#define YYFILL(n)
34
35
133k
#define PHP_JSON_CONDITION_SET(condition) YYSETCONDITION(yyc##condition)
36
53.7M
#define PHP_JSON_CONDITION_GOTO(condition) goto yyc_##condition
37
#define PHP_JSON_CONDITION_SET_AND_GOTO(condition) \
38
63.0k
  PHP_JSON_CONDITION_SET(condition); \
39
63.0k
  PHP_JSON_CONDITION_GOTO(condition)
40
#define PHP_JSON_CONDITION_GOTO_STR_P2() \
41
15.0k
  do { \
42
15.0k
    if (s->utf8_invalid) { \
43
0
      PHP_JSON_CONDITION_GOTO(STR_P2_BIN); \
44
15.0k
    } else { \
45
15.0k
      PHP_JSON_CONDITION_GOTO(STR_P2_UTF); \
46
15.0k
    } \
47
15.0k
  } while(0)
48
49
50
5.97k
#define PHP_JSON_SCANNER_COPY_ESC() php_json_scanner_copy_string(s, 0)
51
7.51k
#define PHP_JSON_SCANNER_COPY_UTF() php_json_scanner_copy_string(s, 5)
52
1.56k
#define PHP_JSON_SCANNER_COPY_UTF_SP() php_json_scanner_copy_string(s, 11)
53
54
2.37M
#define PHP_JSON_INT_MAX_LENGTH (MAX_LENGTH_OF_LONG - 1)
55
56
57
static void php_json_scanner_copy_string(php_json_scanner *s, size_t esc_size)
58
15.0k
{
59
15.0k
  size_t len = (size_t)(s->cursor - s->str_start - esc_size - 1);
60
15.0k
  if (len) {
61
2.19k
    memcpy(s->pstr, s->str_start, len);
62
2.19k
    s->pstr += len;
63
2.19k
  }
64
15.0k
}
65
66
static int php_json_hex_to_int(unsigned char code)
67
34.4k
{
68
34.4k
  if (code >= '0' && code <= '9') {
69
16.5k
    return code - '0';
70
17.8k
  } else if (code >= 'A' && code <= 'F') {
71
9.88k
    return code - ('A' - 10);
72
9.88k
  } else if (code >= 'a' && code <= 'f') {
73
7.94k
    return code - ('a' - 10);
74
7.94k
  } else {
75
    /* this should never happened (just to suppress compiler warning) */
76
0
    return -1;
77
0
  }
78
34.4k
}
79
80
static int php_json_ucs2_to_int_ex(php_json_scanner *s, int size, int start)
81
10.6k
{
82
10.6k
  int i, code = 0;
83
10.6k
  php_json_ctype *pc = s->cursor - start;
84
45.0k
  for (i = 0; i < size; i++) {
85
34.4k
    code |= php_json_hex_to_int(*(pc--)) << (i * 4);
86
34.4k
  }
87
10.6k
  return code;
88
10.6k
}
89
90
static int php_json_ucs2_to_int(php_json_scanner *s, int size)
91
9.07k
{
92
9.07k
  return php_json_ucs2_to_int_ex(s, size, 1);
93
9.07k
}
94
95
void php_json_scanner_init(php_json_scanner *s, const char *str, size_t str_len, int options)
96
12.6k
{
97
12.6k
  s->cursor = (php_json_ctype *) str;
98
12.6k
  s->limit = (php_json_ctype *) str + str_len;
99
12.6k
  s->options = options;
100
12.6k
  PHP_JSON_CONDITION_SET(JS);
101
12.6k
}
102
103
int php_json_scan(php_json_scanner *s)
104
18.4M
{
105
18.4M
  ZVAL_NULL(&s->value);
106
107
18.4M
std:
108
18.4M
  s->token = s->cursor;
109
110
111
18.4M
  {
112
18.4M
    YYCTYPE yych;
113
18.4M
    unsigned int yyaccept = 0;
114
18.4M
    if (YYGETCONDITION() < 2) {
115
18.4M
      if (YYGETCONDITION() < 1) {
116
18.4M
        goto yyc_JS;
117
18.4M
      } else {
118
0
        goto yyc_STR_P1;
119
0
      }
120
18.4M
    } else {
121
0
      if (YYGETCONDITION() < 3) {
122
0
        goto yyc_STR_P2_BIN;
123
0
      } else {
124
0
        goto yyc_STR_P2_UTF;
125
0
      }
126
0
    }
127
/* *********************************** */
128
18.4M
yyc_JS:
129
18.4M
    {
130
18.4M
      static const unsigned char yybm[] = {
131
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
132
18.4M
          0,  64,   0,   0,   0,  64,   0,   0, 
133
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
134
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
135
18.4M
         64,   0,   0,   0,   0,   0,   0,   0, 
136
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
137
18.4M
        128, 128, 128, 128, 128, 128, 128, 128, 
138
18.4M
        128, 128,   0,   0,   0,   0,   0,   0, 
139
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
140
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
141
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
142
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
143
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
144
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
145
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
146
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
147
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
148
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
149
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
150
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
151
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
152
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
153
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
154
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
155
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
156
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
157
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
158
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
159
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
160
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
161
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
162
18.4M
          0,   0,   0,   0,   0,   0,   0,   0, 
163
18.4M
      };
164
18.4M
      yych = *YYCURSOR;
165
18.4M
      if (yych <= ']') {
166
9.40M
        if (yych <= '"') {
167
72.0k
          if (yych <= '\f') {
168
8.26k
            if (yych <= 0x08) {
169
7.34k
              if (yych >= 0x01) goto yy5;
170
7.34k
            } else {
171
921
              if (yych <= '\t') goto yy7;
172
681
              if (yych <= '\n') goto yy10;
173
7
              goto yy5;
174
681
            }
175
63.7k
          } else {
176
63.7k
            if (yych <= 0x1F) {
177
459
              if (yych <= '\r') goto yy11;
178
35
              goto yy5;
179
63.3k
            } else {
180
63.3k
              if (yych <= ' ') goto yy7;
181
63.0k
              if (yych <= '!') goto yy12;
182
63.0k
              goto yy14;
183
63.0k
            }
184
63.7k
          }
185
9.33M
        } else {
186
9.33M
          if (yych <= '0') {
187
6.98M
            if (yych <= ',') {
188
6.87M
              if (yych <= '+') goto yy12;
189
6.87M
              goto yy16;
190
6.87M
            } else {
191
108k
              if (yych <= '-') goto yy18;
192
107k
              if (yych <= '/') goto yy12;
193
107k
              goto yy19;
194
107k
            }
195
6.98M
          } else {
196
2.34M
            if (yych <= 'Z') {
197
2.33M
              if (yych <= '9') goto yy21;
198
57.1k
              if (yych <= ':') goto yy23;
199
117
              goto yy12;
200
57.1k
            } else {
201
13.6k
              if (yych <= '[') goto yy25;
202
5.73k
              if (yych <= '\\') goto yy12;
203
5.69k
              goto yy27;
204
5.73k
            }
205
2.34M
          }
206
9.33M
        }
207
9.40M
      } else {
208
9.01M
        if (yych <= '}') {
209
9.01M
          if (yych <= 's') {
210
742
            if (yych <= 'f') {
211
444
              if (yych <= 'e') goto yy12;
212
278
              goto yy29;
213
444
            } else {
214
298
              if (yych == 'n') goto yy30;
215
31
              goto yy12;
216
298
            }
217
9.01M
          } else {
218
9.01M
            if (yych <= 'z') {
219
274
              if (yych <= 't') goto yy31;
220
19
              goto yy12;
221
9.01M
            } else {
222
9.01M
              if (yych <= '{') goto yy32;
223
4.50M
              if (yych <= '|') goto yy12;
224
4.50M
              goto yy34;
225
4.50M
            }
226
9.01M
          }
227
9.01M
        } else {
228
441
          if (yych <= 0xEC) {
229
246
            if (yych <= 0xC1) {
230
86
              if (yych <= 0x7F) goto yy12;
231
69
              goto yy36;
232
160
            } else {
233
160
              if (yych <= 0xDF) goto yy38;
234
75
              if (yych <= 0xE0) goto yy39;
235
47
              goto yy40;
236
75
            }
237
246
          } else {
238
195
            if (yych <= 0xF0) {
239
86
              if (yych <= 0xED) goto yy41;
240
53
              if (yych <= 0xEF) goto yy40;
241
45
              goto yy42;
242
109
            } else {
243
109
              if (yych <= 0xF3) goto yy43;
244
56
              if (yych <= 0xF4) goto yy44;
245
25
              goto yy36;
246
56
            }
247
195
          }
248
441
        }
249
9.01M
      }
250
7.32k
      ++YYCURSOR;
251
7.32k
      {
252
7.32k
    if (s->limit < s->cursor) {
253
7.30k
      return PHP_JSON_T_EOI;
254
7.30k
    } else {
255
13
      s->errcode = PHP_JSON_ERROR_CTRL_CHAR;
256
13
      return PHP_JSON_T_ERROR;
257
13
    }
258
7.32k
  }
259
69
yy5:
260
69
      ++YYCURSOR;
261
69
      {
262
69
    s->errcode = PHP_JSON_ERROR_CTRL_CHAR;
263
69
    return PHP_JSON_T_ERROR;
264
7.32k
  }
265
1.35k
yy7:
266
1.35k
      yych = *++YYCURSOR;
267
1.58k
yy8:
268
1.58k
      if (yybm[0+yych] & 64) {
269
808
        goto yy7;
270
808
      }
271
1.64k
yy9:
272
1.64k
      { goto std; }
273
868
yy10:
274
868
      ++YYCURSOR;
275
868
      goto yy9;
276
424
yy11:
277
424
      yych = *++YYCURSOR;
278
424
      if (yych == '\n') goto yy10;
279
230
      goto yy8;
280
559
yy12:
281
559
      ++YYCURSOR;
282
811
yy13:
283
811
      {
284
811
    s->errcode = PHP_JSON_ERROR_SYNTAX;
285
811
    return PHP_JSON_T_ERROR;
286
559
  }
287
63.0k
yy14:
288
63.0k
      ++YYCURSOR;
289
63.0k
      {
290
63.0k
    s->str_start = s->cursor;
291
63.0k
    s->str_esc = 0;
292
63.0k
    s->utf8_invalid = 0;
293
63.0k
    s->utf8_invalid_count = 0;
294
63.0k
    PHP_JSON_CONDITION_SET_AND_GOTO(STR_P1);
295
559
  }
296
6.87M
yy16:
297
6.87M
      ++YYCURSOR;
298
6.87M
      { return ','; }
299
1.13k
yy18:
300
1.13k
      yych = *++YYCURSOR;
301
1.13k
      if (yych <= '/') goto yy13;
302
1.11k
      if (yych <= '0') goto yy19;
303
776
      if (yych <= '9') goto yy21;
304
17
      goto yy13;
305
108k
yy19:
306
108k
      yyaccept = 0;
307
108k
      yych = *(YYMARKER = ++YYCURSOR);
308
108k
      if (yych <= 'D') {
309
103k
        if (yych == '.') goto yy45;
310
103k
      } else {
311
4.39k
        if (yych <= 'E') goto yy47;
312
4.05k
        if (yych == 'e') goto yy47;
313
4.05k
      }
314
2.36M
yy20:
315
2.36M
      {
316
2.36M
    bool bigint = 0, negative = s->token[0] == '-';
317
2.36M
    size_t digits = (size_t) (s->cursor - s->token - negative);
318
2.36M
    if (digits >= PHP_JSON_INT_MAX_LENGTH) {
319
4.20k
      if (digits == PHP_JSON_INT_MAX_LENGTH) {
320
1.05k
        int cmp = strncmp((char *) (s->token + negative), LONG_MIN_DIGITS, PHP_JSON_INT_MAX_LENGTH);
321
1.05k
        if (!(cmp < 0 || (cmp == 0 && negative))) {
322
605
          bigint = 1;
323
605
        }
324
3.14k
      } else {
325
3.14k
        bigint = 1;
326
3.14k
      }
327
4.20k
    }
328
2.36M
    if (!bigint) {
329
2.36M
      ZVAL_LONG(&s->value, ZEND_STRTOL((char *) s->token, NULL, 10));
330
2.36M
      return PHP_JSON_T_INT;
331
2.36M
    } else if (s->options & PHP_JSON_BIGINT_AS_STRING) {
332
0
      ZVAL_STRINGL(&s->value, (char *) s->token, (size_t)(s->cursor - s->token));
333
0
      return PHP_JSON_T_STRING;
334
3.75k
    } else {
335
3.75k
      ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL));
336
3.75k
      return PHP_JSON_T_DOUBLE;
337
3.75k
    }
338
2.36M
  }
339
23.6M
yy21:
340
23.6M
      yyaccept = 0;
341
23.6M
      yych = *(YYMARKER = ++YYCURSOR);
342
23.6M
      if (yybm[0+yych] & 128) {
343
21.3M
        goto yy21;
344
21.3M
      }
345
2.27M
      if (yych <= 'D') {
346
2.26M
        if (yych == '.') goto yy45;
347
2.25M
        goto yy20;
348
2.26M
      } else {
349
13.5k
        if (yych <= 'E') goto yy47;
350
12.1k
        if (yych == 'e') goto yy47;
351
2.43k
        goto yy20;
352
12.1k
      }
353
57.0k
yy23:
354
57.0k
      ++YYCURSOR;
355
57.0k
      { return ':'; }
356
7.91k
yy25:
357
7.91k
      ++YYCURSOR;
358
7.91k
      { return '['; }
359
5.69k
yy27:
360
5.69k
      ++YYCURSOR;
361
5.69k
      { return ']'; }
362
278
yy29:
363
278
      yyaccept = 1;
364
278
      yych = *(YYMARKER = ++YYCURSOR);
365
278
      if (yych == 'a') goto yy48;
366
21
      goto yy13;
367
267
yy30:
368
267
      yyaccept = 1;
369
267
      yych = *(YYMARKER = ++YYCURSOR);
370
267
      if (yych == 'u') goto yy49;
371
25
      goto yy13;
372
255
yy31:
373
255
      yyaccept = 1;
374
255
      yych = *(YYMARKER = ++YYCURSOR);
375
255
      if (yych == 'r') goto yy50;
376
15
      goto yy13;
377
4.51M
yy32:
378
4.51M
      ++YYCURSOR;
379
4.51M
      { return '{'; }
380
4.50M
yy34:
381
4.50M
      ++YYCURSOR;
382
4.50M
      { return '}'; }
383
94
yy36:
384
94
      ++YYCURSOR;
385
404
yy37:
386
404
      {
387
404
    s->errcode = PHP_JSON_ERROR_UTF8;
388
404
    return PHP_JSON_T_ERROR;
389
94
  }
390
85
yy38:
391
85
      yych = *++YYCURSOR;
392
85
      if (yych <= 0x7F) goto yy37;
393
42
      if (yych <= 0xBF) goto yy12;
394
27
      goto yy37;
395
28
yy39:
396
28
      yyaccept = 2;
397
28
      yych = *(YYMARKER = ++YYCURSOR);
398
28
      if (yych <= 0x9F) goto yy37;
399
21
      if (yych <= 0xBF) goto yy51;
400
5
      goto yy37;
401
55
yy40:
402
55
      yyaccept = 2;
403
55
      yych = *(YYMARKER = ++YYCURSOR);
404
55
      if (yych <= 0x7F) goto yy37;
405
37
      if (yych <= 0xBF) goto yy51;
406
17
      goto yy37;
407
33
yy41:
408
33
      yyaccept = 2;
409
33
      yych = *(YYMARKER = ++YYCURSOR);
410
33
      if (yych <= 0x7F) goto yy37;
411
30
      if (yych <= 0x9F) goto yy51;
412
17
      goto yy37;
413
45
yy42:
414
45
      yyaccept = 2;
415
45
      yych = *(YYMARKER = ++YYCURSOR);
416
45
      if (yych <= 0x8F) goto yy37;
417
28
      if (yych <= 0xBF) goto yy52;
418
5
      goto yy37;
419
53
yy43:
420
53
      yyaccept = 2;
421
53
      yych = *(YYMARKER = ++YYCURSOR);
422
53
      if (yych <= 0x7F) goto yy37;
423
48
      if (yych <= 0xBF) goto yy52;
424
17
      goto yy37;
425
31
yy44:
426
31
      yyaccept = 2;
427
31
      yych = *(YYMARKER = ++YYCURSOR);
428
31
      if (yych <= 0x7F) goto yy37;
429
28
      if (yych <= 0x8F) goto yy52;
430
15
      goto yy37;
431
9.85k
yy45:
432
9.85k
      yych = *++YYCURSOR;
433
9.85k
      if (yych <= '/') goto yy46;
434
9.83k
      if (yych <= '9') goto yy53;
435
494
yy46:
436
494
      YYCURSOR = YYMARKER;
437
494
      if (yyaccept <= 1) {
438
299
        if (yyaccept == 0) {
439
154
          goto yy20;
440
154
        } else {
441
145
          goto yy13;
442
145
        }
443
299
      } else {
444
195
        if (yyaccept == 2) {
445
111
          goto yy37;
446
111
        } else {
447
84
          goto yy55;
448
84
        }
449
195
      }
450
14.2k
yy47:
451
14.2k
      yych = *++YYCURSOR;
452
14.2k
      if (yych <= ',') {
453
427
        if (yych == '+') goto yy56;
454
125
        goto yy46;
455
13.8k
      } else {
456
13.8k
        if (yych <= '-') goto yy56;
457
8.25k
        if (yych <= '/') goto yy46;
458
8.24k
        if (yych <= '9') goto yy57;
459
26
        goto yy46;
460
8.24k
      }
461
257
yy48:
462
257
      yych = *++YYCURSOR;
463
257
      if (yych == 'l') goto yy59;
464
23
      goto yy46;
465
242
yy49:
466
242
      yych = *++YYCURSOR;
467
242
      if (yych == 'l') goto yy60;
468
21
      goto yy46;
469
240
yy50:
470
240
      yych = *++YYCURSOR;
471
240
      if (yych == 'u') goto yy61;
472
21
      goto yy46;
473
64
yy51:
474
64
      yych = *++YYCURSOR;
475
64
      if (yych <= 0x7F) goto yy46;
476
8
      if (yych <= 0xBF) goto yy12;
477
3
      goto yy46;
478
67
yy52:
479
67
      yych = *++YYCURSOR;
480
67
      if (yych <= 0x7F) goto yy46;
481
24
      if (yych <= 0xBF) goto yy51;
482
9
      goto yy46;
483
63.8M
yy53:
484
63.8M
      yyaccept = 3;
485
63.8M
      yych = *(YYMARKER = ++YYCURSOR);
486
63.8M
      if (yych <= 'D') {
487
63.8M
        if (yych <= '/') goto yy55;
488
63.8M
        if (yych <= '9') goto yy53;
489
63.8M
      } else {
490
3.68k
        if (yych <= 'E') goto yy47;
491
3.24k
        if (yych == 'e') goto yy47;
492
3.24k
      }
493
21.7k
yy55:
494
21.7k
      {
495
21.7k
    ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL));
496
21.7k
    return PHP_JSON_T_DOUBLE;
497
63.8M
  }
498
5.90k
yy56:
499
5.90k
      yych = *++YYCURSOR;
500
5.90k
      if (yych <= '/') goto yy46;
501
5.86k
      if (yych >= ':') goto yy46;
502
2.99M
yy57:
503
2.99M
      yych = *++YYCURSOR;
504
2.99M
      if (yych <= '/') goto yy55;
505
2.97M
      if (yych <= '9') goto yy57;
506
269
      goto yy55;
507
269
yy59:
508
234
      yych = *++YYCURSOR;
509
234
      if (yych == 's') goto yy62;
510
23
      goto yy46;
511
221
yy60:
512
221
      yych = *++YYCURSOR;
513
221
      if (yych == 'l') goto yy63;
514
21
      goto yy46;
515
219
yy61:
516
219
      yych = *++YYCURSOR;
517
219
      if (yych == 'e') goto yy65;
518
23
      goto yy46;
519
211
yy62:
520
211
      yych = *++YYCURSOR;
521
211
      if (yych == 'e') goto yy67;
522
13
      goto yy46;
523
200
yy63:
524
200
      ++YYCURSOR;
525
200
      {
526
200
    ZVAL_NULL(&s->value);
527
200
    return PHP_JSON_T_NUL;
528
211
  }
529
196
yy65:
530
196
      ++YYCURSOR;
531
196
      {
532
196
    ZVAL_TRUE(&s->value);
533
196
    return PHP_JSON_T_TRUE;
534
211
  }
535
198
yy67:
536
198
      ++YYCURSOR;
537
198
      {
538
198
    ZVAL_FALSE(&s->value);
539
198
    return PHP_JSON_T_FALSE;
540
211
  }
541
211
    }
542
/* *********************************** */
543
33.6M
yyc_STR_P1:
544
33.6M
    yych = *YYCURSOR;
545
33.6M
    if (yych <= 0xDF) {
546
33.6M
      if (yych <= '[') {
547
15.4M
        if (yych <= 0x1F) goto yy71;
548
15.4M
        if (yych == '"') goto yy75;
549
15.3M
        goto yy73;
550
18.1M
      } else {
551
18.1M
        if (yych <= '\\') goto yy77;
552
18.1M
        if (yych <= 0x7F) goto yy73;
553
301
        if (yych <= 0xC1) goto yy79;
554
282
        goto yy81;
555
301
      }
556
33.6M
    } else {
557
1.73k
      if (yych <= 0xEF) {
558
763
        if (yych <= 0xE0) goto yy82;
559
531
        if (yych == 0xED) goto yy84;
560
300
        goto yy83;
561
968
      } else {
562
968
        if (yych <= 0xF0) goto yy85;
563
568
        if (yych <= 0xF3) goto yy86;
564
261
        if (yych <= 0xF4) goto yy87;
565
9
        goto yy79;
566
261
      }
567
1.73k
    }
568
449
yy71:
569
449
    ++YYCURSOR;
570
449
    {
571
449
    s->errcode = PHP_JSON_ERROR_CTRL_CHAR;
572
449
    return PHP_JSON_T_ERROR;
573
33.6M
  }
574
33.5M
yy73:
575
33.5M
    ++YYCURSOR;
576
33.5M
    { PHP_JSON_CONDITION_GOTO(STR_P1); }
577
60.8k
yy75:
578
60.8k
    ++YYCURSOR;
579
60.8k
    {
580
60.8k
    zend_string *str;
581
60.8k
    size_t len = (size_t)(s->cursor - s->str_start - s->str_esc - 1 + s->utf8_invalid_count);
582
60.8k
    if (len == 0) {
583
21.9k
      PHP_JSON_CONDITION_SET(JS);
584
21.9k
      ZVAL_EMPTY_STRING(&s->value);
585
21.9k
      return PHP_JSON_T_ESTRING;
586
21.9k
    }
587
38.9k
    str = zend_string_alloc(len, 0);
588
38.9k
    ZSTR_VAL(str)[len] = '\0';
589
38.9k
    ZVAL_STR(&s->value, str);
590
38.9k
    if (s->str_esc || s->utf8_invalid) {
591
3.26k
      s->pstr = (php_json_ctype *) Z_STRVAL(s->value);
592
3.26k
      s->cursor = s->str_start;
593
3.26k
      PHP_JSON_CONDITION_GOTO_STR_P2();
594
35.6k
    } else {
595
35.6k
      memcpy(Z_STRVAL(s->value), s->str_start, len);
596
35.6k
      PHP_JSON_CONDITION_SET(JS);
597
35.6k
      return PHP_JSON_T_STRING;
598
35.6k
    }
599
38.9k
  }
600
17.9k
yy77:
601
17.9k
    yyaccept = 0;
602
17.9k
    yych = *(YYMARKER = ++YYCURSOR);
603
17.9k
    if (yych <= 'e') {
604
2.00k
      if (yych <= '/') {
605
968
        if (yych == '"') goto yy88;
606
537
        if (yych >= '/') goto yy88;
607
1.03k
      } else {
608
1.03k
        if (yych <= '\\') {
609
584
          if (yych >= '\\') goto yy88;
610
584
        } else {
611
454
          if (yych == 'b') goto yy88;
612
454
        }
613
1.03k
      }
614
15.9k
    } else {
615
15.9k
      if (yych <= 'q') {
616
996
        if (yych <= 'f') goto yy88;
617
437
        if (yych == 'n') goto yy88;
618
14.9k
      } else {
619
14.9k
        if (yych <= 's') {
620
447
          if (yych <= 'r') goto yy88;
621
14.5k
        } else {
622
14.5k
          if (yych <= 't') goto yy88;
623
14.0k
          if (yych <= 'u') goto yy90;
624
14.0k
        }
625
14.9k
      }
626
15.9k
    }
627
1.08k
yy78:
628
1.08k
    {
629
1.08k
    s->errcode = PHP_JSON_ERROR_SYNTAX;
630
1.08k
    return PHP_JSON_T_ERROR;
631
17.9k
  }
632
28
yy79:
633
28
    ++YYCURSOR;
634
368
yy80:
635
368
    {
636
368
    if (s->options & (PHP_JSON_INVALID_UTF8_IGNORE | PHP_JSON_INVALID_UTF8_SUBSTITUTE)) {
637
0
      if (s->options & PHP_JSON_INVALID_UTF8_SUBSTITUTE) {
638
0
        if (s->utf8_invalid_count > INT_MAX - 2) {
639
0
          s->errcode = PHP_JSON_ERROR_UTF8;
640
0
          return PHP_JSON_T_ERROR;
641
0
        }
642
0
        s->utf8_invalid_count += 2;
643
0
      } else {
644
0
        s->utf8_invalid_count--;
645
0
      }
646
0
      s->utf8_invalid = 1;
647
0
      PHP_JSON_CONDITION_GOTO(STR_P1);
648
0
    }
649
368
    s->errcode = PHP_JSON_ERROR_UTF8;
650
368
    return PHP_JSON_T_ERROR;
651
368
  }
652
282
yy81:
653
282
    yych = *++YYCURSOR;
654
282
    if (yych <= 0x7F) goto yy80;
655
267
    if (yych <= 0xBF) goto yy73;
656
17
    goto yy80;
657
232
yy82:
658
232
    yyaccept = 1;
659
232
    yych = *(YYMARKER = ++YYCURSOR);
660
232
    if (yych <= 0x9F) goto yy80;
661
217
    if (yych <= 0xBF) goto yy92;
662
7
    goto yy80;
663
300
yy83:
664
300
    yyaccept = 1;
665
300
    yych = *(YYMARKER = ++YYCURSOR);
666
300
    if (yych <= 0x7F) goto yy80;
667
287
    if (yych <= 0xBF) goto yy92;
668
13
    goto yy80;
669
231
yy84:
670
231
    yyaccept = 1;
671
231
    yych = *(YYMARKER = ++YYCURSOR);
672
231
    if (yych <= 0x7F) goto yy80;
673
226
    if (yych <= 0x9F) goto yy92;
674
13
    goto yy80;
675
400
yy85:
676
400
    yyaccept = 1;
677
400
    yych = *(YYMARKER = ++YYCURSOR);
678
400
    if (yych <= 0x8F) goto yy80;
679
381
    if (yych <= 0xBF) goto yy93;
680
5
    goto yy80;
681
307
yy86:
682
307
    yyaccept = 1;
683
307
    yych = *(YYMARKER = ++YYCURSOR);
684
307
    if (yych <= 0x7F) goto yy80;
685
302
    if (yych <= 0xBF) goto yy93;
686
7
    goto yy80;
687
252
yy87:
688
252
    yyaccept = 1;
689
252
    yych = *(YYMARKER = ++YYCURSOR);
690
252
    if (yych <= 0x7F) goto yy80;
691
249
    if (yych <= 0x8F) goto yy93;
692
15
    goto yy80;
693
3.86k
yy88:
694
3.86k
    ++YYCURSOR;
695
3.86k
    {
696
3.86k
    s->str_esc++;
697
3.86k
    PHP_JSON_CONDITION_GOTO(STR_P1);
698
249
  }
699
14.0k
yy90:
700
14.0k
    yych = *++YYCURSOR;
701
14.0k
    if (yych <= 'D') {
702
9.93k
      if (yych <= '9') {
703
7.67k
        if (yych <= '/') goto yy91;
704
7.65k
        if (yych <= '0') goto yy94;
705
479
        goto yy95;
706
7.65k
      } else {
707
2.26k
        if (yych <= '@') goto yy91;
708
2.25k
        if (yych <= 'C') goto yy95;
709
1.94k
        goto yy96;
710
2.25k
      }
711
9.93k
    } else {
712
4.08k
      if (yych <= 'c') {
713
1.11k
        if (yych <= 'F') goto yy95;
714
306
        if (yych >= 'a') goto yy95;
715
2.97k
      } else {
716
2.97k
        if (yych <= 'd') goto yy96;
717
536
        if (yych <= 'f') goto yy95;
718
536
      }
719
4.08k
    }
720
1.37k
yy91:
721
1.37k
    YYCURSOR = YYMARKER;
722
1.37k
    if (yyaccept <= 1) {
723
1.17k
      if (yyaccept == 0) {
724
989
        goto yy78;
725
989
      } else {
726
188
        goto yy80;
727
188
      }
728
1.17k
    } else {
729
200
      goto yy114;
730
200
    }
731
1.50k
yy92:
732
1.50k
    yych = *++YYCURSOR;
733
1.50k
    if (yych <= 0x7F) goto yy91;
734
1.42k
    if (yych <= 0xBF) goto yy73;
735
15
    goto yy91;
736
905
yy93:
737
905
    yych = *++YYCURSOR;
738
905
    if (yych <= 0x7F) goto yy91;
739
829
    if (yych <= 0xBF) goto yy92;
740
19
    goto yy91;
741
7.17k
yy94:
742
7.17k
    yych = *++YYCURSOR;
743
7.17k
    if (yych <= '9') {
744
6.44k
      if (yych <= '/') goto yy91;
745
6.43k
      if (yych <= '0') goto yy97;
746
2.01k
      if (yych <= '7') goto yy98;
747
557
      goto yy99;
748
2.01k
    } else {
749
732
      if (yych <= 'F') {
750
413
        if (yych <= '@') goto yy91;
751
404
        goto yy99;
752
413
      } else {
753
319
        if (yych <= '`') goto yy91;
754
314
        if (yych <= 'f') goto yy99;
755
13
        goto yy91;
756
314
      }
757
732
    }
758
2.40k
yy95:
759
2.40k
    yych = *++YYCURSOR;
760
2.40k
    if (yych <= '@') {
761
609
      if (yych <= '/') goto yy91;
762
537
      if (yych <= '9') goto yy99;
763
5
      goto yy91;
764
1.80k
    } else {
765
1.80k
      if (yych <= 'F') goto yy99;
766
790
      if (yych <= '`') goto yy91;
767
785
      if (yych <= 'f') goto yy99;
768
13
      goto yy91;
769
785
    }
770
4.38k
yy96:
771
4.38k
    yych = *++YYCURSOR;
772
4.38k
    if (yych <= 'B') {
773
2.39k
      if (yych <= '7') {
774
1.03k
        if (yych <= '/') goto yy91;
775
1.00k
        goto yy99;
776
1.35k
      } else {
777
1.35k
        if (yych <= '9') goto yy100;
778
803
        if (yych <= '@') goto yy91;
779
794
        goto yy100;
780
803
      }
781
2.39k
    } else {
782
1.98k
      if (yych <= '`') {
783
102
        if (yych <= 'F') goto yy101;
784
11
        goto yy91;
785
1.88k
      } else {
786
1.88k
        if (yych <= 'b') goto yy100;
787
63
        if (yych <= 'f') goto yy101;
788
23
        goto yy91;
789
63
      }
790
1.98k
    }
791
4.41k
yy97:
792
4.41k
    yych = *++YYCURSOR;
793
4.41k
    if (yych <= '@') {
794
3.79k
      if (yych <= '/') goto yy91;
795
3.77k
      if (yych <= '7') goto yy102;
796
315
      if (yych <= '9') goto yy103;
797
7
      goto yy91;
798
621
    } else {
799
621
      if (yych <= 'F') goto yy103;
800
310
      if (yych <= '`') goto yy91;
801
303
      if (yych <= 'f') goto yy103;
802
13
      goto yy91;
803
303
    }
804
1.46k
yy98:
805
1.46k
    yych = *++YYCURSOR;
806
1.46k
    if (yych <= '@') {
807
668
      if (yych <= '/') goto yy91;
808
651
      if (yych <= '9') goto yy103;
809
7
      goto yy91;
810
793
    } else {
811
793
      if (yych <= 'F') goto yy103;
812
367
      if (yych <= '`') goto yy91;
813
362
      if (yych <= 'f') goto yy103;
814
13
      goto yy91;
815
362
    }
816
4.58k
yy99:
817
4.58k
    yych = *++YYCURSOR;
818
4.58k
    if (yych <= '@') {
819
2.54k
      if (yych <= '/') goto yy91;
820
2.43k
      if (yych <= '9') goto yy104;
821
7
      goto yy91;
822
2.43k
    } else {
823
2.03k
      if (yych <= 'F') goto yy104;
824
706
      if (yych <= '`') goto yy91;
825
695
      if (yych <= 'f') goto yy104;
826
11
      goto yy91;
827
695
    }
828
3.17k
yy100:
829
3.17k
    yych = *++YYCURSOR;
830
3.17k
    if (yych <= '@') {
831
751
      if (yych <= '/') goto yy91;
832
707
      if (yych <= '9') goto yy105;
833
7
      goto yy91;
834
2.42k
    } else {
835
2.42k
      if (yych <= 'F') goto yy105;
836
1.27k
      if (yych <= '`') goto yy91;
837
1.26k
      if (yych <= 'f') goto yy105;
838
17
      goto yy91;
839
1.26k
    }
840
131
yy101:
841
131
    yych = *++YYCURSOR;
842
131
    if (yych <= '@') {
843
68
      if (yych <= '/') goto yy91;
844
40
      if (yych <= '9') goto yy106;
845
7
      goto yy91;
846
63
    } else {
847
63
      if (yych <= 'F') goto yy106;
848
35
      if (yych <= '`') goto yy91;
849
24
      if (yych <= 'f') goto yy106;
850
11
      goto yy91;
851
24
    }
852
3.46k
yy102:
853
3.46k
    yych = *++YYCURSOR;
854
3.46k
    if (yych <= '@') {
855
2.83k
      if (yych <= '/') goto yy91;
856
2.82k
      if (yych <= '9') goto yy107;
857
5
      goto yy91;
858
2.82k
    } else {
859
624
      if (yych <= 'F') goto yy107;
860
294
      if (yych <= '`') goto yy91;
861
285
      if (yych <= 'f') goto yy107;
862
13
      goto yy91;
863
285
    }
864
2.32k
yy103:
865
2.32k
    yych = *++YYCURSOR;
866
2.32k
    if (yych <= '@') {
867
1.06k
      if (yych <= '/') goto yy91;
868
975
      if (yych <= '9') goto yy109;
869
11
      goto yy91;
870
1.26k
    } else {
871
1.26k
      if (yych <= 'F') goto yy109;
872
623
      if (yych <= '`') goto yy91;
873
620
      if (yych <= 'f') goto yy109;
874
7
      goto yy91;
875
620
    }
876
4.44k
yy104:
877
4.44k
    yych = *++YYCURSOR;
878
4.44k
    if (yych <= '@') {
879
2.17k
      if (yych <= '/') goto yy91;
880
2.11k
      if (yych <= '9') goto yy111;
881
9
      goto yy91;
882
2.26k
    } else {
883
2.26k
      if (yych <= 'F') goto yy111;
884
721
      if (yych <= '`') goto yy91;
885
718
      if (yych <= 'f') goto yy111;
886
17
      goto yy91;
887
718
    }
888
3.09k
yy105:
889
3.09k
    yych = *++YYCURSOR;
890
3.09k
    if (yych <= '@') {
891
588
      if (yych <= '/') goto yy91;
892
546
      if (yych <= '9') goto yy113;
893
3
      goto yy91;
894
2.50k
    } else {
895
2.50k
      if (yych <= 'F') goto yy113;
896
847
      if (yych <= '`') goto yy91;
897
838
      if (yych <= 'f') goto yy113;
898
11
      goto yy91;
899
838
    }
900
74
yy106:
901
74
    yych = *++YYCURSOR;
902
74
    if (yych <= '@') {
903
34
      if (yych <= '/') goto yy91;
904
17
      if (yych <= '9') goto yy115;
905
7
      goto yy91;
906
40
    } else {
907
40
      if (yych <= 'F') goto yy115;
908
35
      if (yych <= '`') goto yy91;
909
26
      if (yych <= 'f') goto yy115;
910
21
      goto yy91;
911
26
    }
912
3.41k
yy107:
913
3.41k
    ++YYCURSOR;
914
3.41k
    {
915
3.41k
    s->str_esc += 5;
916
3.41k
    PHP_JSON_CONDITION_GOTO(STR_P1);
917
74
  }
918
2.21k
yy109:
919
2.21k
    ++YYCURSOR;
920
2.21k
    {
921
2.21k
    s->str_esc += 4;
922
2.21k
    PHP_JSON_CONDITION_GOTO(STR_P1);
923
74
  }
924
4.35k
yy111:
925
4.35k
    ++YYCURSOR;
926
4.35k
    {
927
4.35k
    s->str_esc += 3;
928
4.35k
    PHP_JSON_CONDITION_GOTO(STR_P1);
929
74
  }
930
3.03k
yy113:
931
3.03k
    yyaccept = 2;
932
3.03k
    yych = *(YYMARKER = ++YYCURSOR);
933
3.03k
    if (yych == '\\') goto yy116;
934
280
yy114:
935
280
    {
936
280
    s->errcode = PHP_JSON_ERROR_UTF16;
937
280
    return PHP_JSON_T_ERROR;
938
3.03k
  }
939
20
yy115:
940
20
    ++YYCURSOR;
941
20
    goto yy114;
942
2.97k
yy116:
943
2.97k
    yych = *++YYCURSOR;
944
2.97k
    if (yych != 'u') goto yy91;
945
2.96k
    yych = *++YYCURSOR;
946
2.96k
    if (yych == 'D') goto yy118;
947
884
    if (yych != 'd') goto yy91;
948
2.94k
yy118:
949
2.94k
    yych = *++YYCURSOR;
950
2.94k
    if (yych <= 'B') goto yy91;
951
2.92k
    if (yych <= 'F') goto yy119;
952
1.35k
    if (yych <= 'b') goto yy91;
953
1.35k
    if (yych >= 'g') goto yy91;
954
2.90k
yy119:
955
2.90k
    yych = *++YYCURSOR;
956
2.90k
    if (yych <= '@') {
957
735
      if (yych <= '/') goto yy91;
958
705
      if (yych >= ':') goto yy91;
959
2.17k
    } else {
960
2.17k
      if (yych <= 'F') goto yy120;
961
1.12k
      if (yych <= '`') goto yy91;
962
1.11k
      if (yych >= 'g') goto yy91;
963
1.11k
    }
964
2.85k
yy120:
965
2.85k
    yych = *++YYCURSOR;
966
2.85k
    if (yych <= '@') {
967
719
      if (yych <= '/') goto yy91;
968
669
      if (yych >= ':') goto yy91;
969
2.13k
    } else {
970
2.13k
      if (yych <= 'F') goto yy121;
971
1.05k
      if (yych <= '`') goto yy91;
972
1.04k
      if (yych >= 'g') goto yy91;
973
1.04k
    }
974
2.77k
yy121:
975
2.77k
    ++YYCURSOR;
976
2.77k
    {
977
2.77k
    s->str_esc += 8;
978
2.77k
    PHP_JSON_CONDITION_GOTO(STR_P1);
979
2.85k
  }
980
/* *********************************** */
981
0
yyc_STR_P2_BIN:
982
0
    yych = *YYCURSOR;
983
0
    if (yych <= 0xDF) {
984
0
      if (yych <= '[') {
985
0
        if (yych == '"') goto yy127;
986
0
      } else {
987
0
        if (yych <= '\\') goto yy129;
988
0
        if (yych <= 0x7F) goto yy125;
989
0
        if (yych <= 0xC1) goto yy131;
990
0
        goto yy133;
991
0
      }
992
0
    } else {
993
0
      if (yych <= 0xEF) {
994
0
        if (yych <= 0xE0) goto yy134;
995
0
        if (yych == 0xED) goto yy136;
996
0
        goto yy135;
997
0
      } else {
998
0
        if (yych <= 0xF0) goto yy137;
999
0
        if (yych <= 0xF3) goto yy138;
1000
0
        if (yych <= 0xF4) goto yy139;
1001
0
        goto yy131;
1002
0
      }
1003
0
    }
1004
0
yy125:
1005
0
    ++YYCURSOR;
1006
0
    { PHP_JSON_CONDITION_GOTO(STR_P2_BIN); }
1007
0
yy127:
1008
0
    ++YYCURSOR;
1009
0
    YYSETCONDITION(yycJS);
1010
0
    {
1011
0
    PHP_JSON_SCANNER_COPY_ESC();
1012
0
    return PHP_JSON_T_STRING;
1013
0
  }
1014
0
yy129:
1015
0
    yyaccept = 0;
1016
0
    yych = *(YYMARKER = ++YYCURSOR);
1017
0
    if (yych == 'u') goto yy140;
1018
0
yy130:
1019
0
    {
1020
0
    unsigned char esc;
1021
0
    PHP_JSON_SCANNER_COPY_ESC();
1022
0
    switch (*s->cursor) {
1023
0
      case 'b':
1024
0
        esc = '\b';
1025
0
        break;
1026
0
      case 'f':
1027
0
        esc = '\f';       break;
1028
0
      case 'n':
1029
0
        esc = '\n';
1030
0
        break;
1031
0
      case 'r':
1032
0
        esc = '\r';
1033
0
        break;
1034
0
      case 't':
1035
0
        esc = '\t';
1036
0
        break;
1037
0
      case '\\':
1038
0
      case '/':
1039
0
      case '"':
1040
0
        esc = *s->cursor;
1041
0
        break;
1042
0
      default:
1043
0
        s->errcode = PHP_JSON_ERROR_SYNTAX;
1044
0
        return PHP_JSON_T_ERROR;
1045
0
    }
1046
0
    *(s->pstr++) = esc;
1047
0
    ++YYCURSOR;
1048
0
    s->str_start = s->cursor;
1049
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1050
0
  }
1051
0
yy131:
1052
0
    ++YYCURSOR;
1053
0
yy132:
1054
0
    {
1055
0
    if (s->utf8_invalid) {
1056
0
      PHP_JSON_SCANNER_COPY_ESC();
1057
0
      if (s->options & PHP_JSON_INVALID_UTF8_SUBSTITUTE) {
1058
0
        *(s->pstr++) = (unsigned char) (0xe0 | (0xfffd >> 12));
1059
0
        *(s->pstr++) = (unsigned char) (0x80 | ((0xfffd >> 6) & 0x3f));
1060
0
        *(s->pstr++) = (unsigned char) (0x80 | (0xfffd & 0x3f));
1061
0
      }
1062
0
      s->str_start = s->cursor;
1063
0
    }
1064
0
    PHP_JSON_CONDITION_GOTO(STR_P2_BIN);
1065
0
  }
1066
0
yy133:
1067
0
    yych = *++YYCURSOR;
1068
0
    if (yych <= 0x7F) goto yy132;
1069
0
    if (yych <= 0xBF) goto yy125;
1070
0
    goto yy132;
1071
0
yy134:
1072
0
    yyaccept = 1;
1073
0
    yych = *(YYMARKER = ++YYCURSOR);
1074
0
    if (yych <= 0x9F) goto yy132;
1075
0
    if (yych <= 0xBF) goto yy142;
1076
0
    goto yy132;
1077
0
yy135:
1078
0
    yyaccept = 1;
1079
0
    yych = *(YYMARKER = ++YYCURSOR);
1080
0
    if (yych <= 0x7F) goto yy132;
1081
0
    if (yych <= 0xBF) goto yy142;
1082
0
    goto yy132;
1083
0
yy136:
1084
0
    yyaccept = 1;
1085
0
    yych = *(YYMARKER = ++YYCURSOR);
1086
0
    if (yych <= 0x7F) goto yy132;
1087
0
    if (yych <= 0x9F) goto yy142;
1088
0
    goto yy132;
1089
0
yy137:
1090
0
    yyaccept = 1;
1091
0
    yych = *(YYMARKER = ++YYCURSOR);
1092
0
    if (yych <= 0x8F) goto yy132;
1093
0
    if (yych <= 0xBF) goto yy143;
1094
0
    goto yy132;
1095
0
yy138:
1096
0
    yyaccept = 1;
1097
0
    yych = *(YYMARKER = ++YYCURSOR);
1098
0
    if (yych <= 0x7F) goto yy132;
1099
0
    if (yych <= 0xBF) goto yy143;
1100
0
    goto yy132;
1101
0
yy139:
1102
0
    yyaccept = 1;
1103
0
    yych = *(YYMARKER = ++YYCURSOR);
1104
0
    if (yych <= 0x7F) goto yy132;
1105
0
    if (yych <= 0x8F) goto yy143;
1106
0
    goto yy132;
1107
0
yy140:
1108
0
    yych = *++YYCURSOR;
1109
0
    if (yych <= 'D') {
1110
0
      if (yych <= '9') {
1111
0
        if (yych <= '/') goto yy141;
1112
0
        if (yych <= '0') goto yy144;
1113
0
        goto yy145;
1114
0
      } else {
1115
0
        if (yych <= '@') goto yy141;
1116
0
        if (yych <= 'C') goto yy145;
1117
0
        goto yy146;
1118
0
      }
1119
0
    } else {
1120
0
      if (yych <= 'c') {
1121
0
        if (yych <= 'F') goto yy145;
1122
0
        if (yych >= 'a') goto yy145;
1123
0
      } else {
1124
0
        if (yych <= 'd') goto yy146;
1125
0
        if (yych <= 'f') goto yy145;
1126
0
      }
1127
0
    }
1128
0
yy141:
1129
0
    YYCURSOR = YYMARKER;
1130
0
    if (yyaccept == 0) {
1131
0
      goto yy130;
1132
0
    } else {
1133
0
      goto yy132;
1134
0
    }
1135
0
yy142:
1136
0
    yych = *++YYCURSOR;
1137
0
    if (yych <= 0x7F) goto yy141;
1138
0
    if (yych <= 0xBF) goto yy125;
1139
0
    goto yy141;
1140
0
yy143:
1141
0
    yych = *++YYCURSOR;
1142
0
    if (yych <= 0x7F) goto yy141;
1143
0
    if (yych <= 0xBF) goto yy142;
1144
0
    goto yy141;
1145
0
yy144:
1146
0
    yych = *++YYCURSOR;
1147
0
    if (yych <= '9') {
1148
0
      if (yych <= '/') goto yy141;
1149
0
      if (yych <= '0') goto yy147;
1150
0
      if (yych <= '7') goto yy148;
1151
0
      goto yy149;
1152
0
    } else {
1153
0
      if (yych <= 'F') {
1154
0
        if (yych <= '@') goto yy141;
1155
0
        goto yy149;
1156
0
      } else {
1157
0
        if (yych <= '`') goto yy141;
1158
0
        if (yych <= 'f') goto yy149;
1159
0
        goto yy141;
1160
0
      }
1161
0
    }
1162
0
yy145:
1163
0
    yych = *++YYCURSOR;
1164
0
    if (yych <= '@') {
1165
0
      if (yych <= '/') goto yy141;
1166
0
      if (yych <= '9') goto yy149;
1167
0
      goto yy141;
1168
0
    } else {
1169
0
      if (yych <= 'F') goto yy149;
1170
0
      if (yych <= '`') goto yy141;
1171
0
      if (yych <= 'f') goto yy149;
1172
0
      goto yy141;
1173
0
    }
1174
0
yy146:
1175
0
    yych = *++YYCURSOR;
1176
0
    if (yych <= '@') {
1177
0
      if (yych <= '/') goto yy141;
1178
0
      if (yych <= '7') goto yy149;
1179
0
      if (yych <= '9') goto yy150;
1180
0
      goto yy141;
1181
0
    } else {
1182
0
      if (yych <= 'B') goto yy150;
1183
0
      if (yych <= '`') goto yy141;
1184
0
      if (yych <= 'b') goto yy150;
1185
0
      goto yy141;
1186
0
    }
1187
0
yy147:
1188
0
    yych = *++YYCURSOR;
1189
0
    if (yych <= '@') {
1190
0
      if (yych <= '/') goto yy141;
1191
0
      if (yych <= '7') goto yy151;
1192
0
      if (yych <= '9') goto yy152;
1193
0
      goto yy141;
1194
0
    } else {
1195
0
      if (yych <= 'F') goto yy152;
1196
0
      if (yych <= '`') goto yy141;
1197
0
      if (yych <= 'f') goto yy152;
1198
0
      goto yy141;
1199
0
    }
1200
0
yy148:
1201
0
    yych = *++YYCURSOR;
1202
0
    if (yych <= '@') {
1203
0
      if (yych <= '/') goto yy141;
1204
0
      if (yych <= '9') goto yy152;
1205
0
      goto yy141;
1206
0
    } else {
1207
0
      if (yych <= 'F') goto yy152;
1208
0
      if (yych <= '`') goto yy141;
1209
0
      if (yych <= 'f') goto yy152;
1210
0
      goto yy141;
1211
0
    }
1212
0
yy149:
1213
0
    yych = *++YYCURSOR;
1214
0
    if (yych <= '@') {
1215
0
      if (yych <= '/') goto yy141;
1216
0
      if (yych <= '9') goto yy153;
1217
0
      goto yy141;
1218
0
    } else {
1219
0
      if (yych <= 'F') goto yy153;
1220
0
      if (yych <= '`') goto yy141;
1221
0
      if (yych <= 'f') goto yy153;
1222
0
      goto yy141;
1223
0
    }
1224
0
yy150:
1225
0
    yych = *++YYCURSOR;
1226
0
    if (yych <= '@') {
1227
0
      if (yych <= '/') goto yy141;
1228
0
      if (yych <= '9') goto yy154;
1229
0
      goto yy141;
1230
0
    } else {
1231
0
      if (yych <= 'F') goto yy154;
1232
0
      if (yych <= '`') goto yy141;
1233
0
      if (yych <= 'f') goto yy154;
1234
0
      goto yy141;
1235
0
    }
1236
0
yy151:
1237
0
    yych = *++YYCURSOR;
1238
0
    if (yych <= '@') {
1239
0
      if (yych <= '/') goto yy141;
1240
0
      if (yych <= '9') goto yy155;
1241
0
      goto yy141;
1242
0
    } else {
1243
0
      if (yych <= 'F') goto yy155;
1244
0
      if (yych <= '`') goto yy141;
1245
0
      if (yych <= 'f') goto yy155;
1246
0
      goto yy141;
1247
0
    }
1248
0
yy152:
1249
0
    yych = *++YYCURSOR;
1250
0
    if (yych <= '@') {
1251
0
      if (yych <= '/') goto yy141;
1252
0
      if (yych <= '9') goto yy157;
1253
0
      goto yy141;
1254
0
    } else {
1255
0
      if (yych <= 'F') goto yy157;
1256
0
      if (yych <= '`') goto yy141;
1257
0
      if (yych <= 'f') goto yy157;
1258
0
      goto yy141;
1259
0
    }
1260
0
yy153:
1261
0
    yych = *++YYCURSOR;
1262
0
    if (yych <= '@') {
1263
0
      if (yych <= '/') goto yy141;
1264
0
      if (yych <= '9') goto yy159;
1265
0
      goto yy141;
1266
0
    } else {
1267
0
      if (yych <= 'F') goto yy159;
1268
0
      if (yych <= '`') goto yy141;
1269
0
      if (yych <= 'f') goto yy159;
1270
0
      goto yy141;
1271
0
    }
1272
0
yy154:
1273
0
    yych = *++YYCURSOR;
1274
0
    if (yych <= '@') {
1275
0
      if (yych <= '/') goto yy141;
1276
0
      if (yych <= '9') goto yy161;
1277
0
      goto yy141;
1278
0
    } else {
1279
0
      if (yych <= 'F') goto yy161;
1280
0
      if (yych <= '`') goto yy141;
1281
0
      if (yych <= 'f') goto yy161;
1282
0
      goto yy141;
1283
0
    }
1284
0
yy155:
1285
0
    ++YYCURSOR;
1286
0
    {
1287
0
    int utf16 = php_json_ucs2_to_int(s, 2);
1288
0
    PHP_JSON_SCANNER_COPY_UTF();
1289
0
    *(s->pstr++) = (unsigned char) utf16;
1290
0
    s->str_start = s->cursor;
1291
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1292
0
  }
1293
0
yy157:
1294
0
    ++YYCURSOR;
1295
0
    {
1296
0
    int utf16 = php_json_ucs2_to_int(s, 3);
1297
0
    PHP_JSON_SCANNER_COPY_UTF();
1298
0
    *(s->pstr++) = (unsigned char) (0xc0 | (utf16 >> 6));
1299
0
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1300
0
    s->str_start = s->cursor;
1301
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1302
0
  }
1303
0
yy159:
1304
0
    ++YYCURSOR;
1305
0
    {
1306
0
    int utf16 = php_json_ucs2_to_int(s, 4);
1307
0
    PHP_JSON_SCANNER_COPY_UTF();
1308
0
    *(s->pstr++) = (unsigned char) (0xe0 | (utf16 >> 12));
1309
0
    *(s->pstr++) = (unsigned char) (0x80 | ((utf16 >> 6) & 0x3f));
1310
0
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1311
0
    s->str_start = s->cursor;
1312
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1313
0
  }
1314
0
yy161:
1315
0
    yych = *++YYCURSOR;
1316
0
    if (yych != '\\') goto yy141;
1317
0
    yych = *++YYCURSOR;
1318
0
    if (yych != 'u') goto yy141;
1319
0
    yych = *++YYCURSOR;
1320
0
    if (yych == 'D') goto yy164;
1321
0
    if (yych != 'd') goto yy141;
1322
0
yy164:
1323
0
    yych = *++YYCURSOR;
1324
0
    if (yych <= 'B') goto yy141;
1325
0
    if (yych <= 'F') goto yy165;
1326
0
    if (yych <= 'b') goto yy141;
1327
0
    if (yych >= 'g') goto yy141;
1328
0
yy165:
1329
0
    yych = *++YYCURSOR;
1330
0
    if (yych <= '@') {
1331
0
      if (yych <= '/') goto yy141;
1332
0
      if (yych >= ':') goto yy141;
1333
0
    } else {
1334
0
      if (yych <= 'F') goto yy166;
1335
0
      if (yych <= '`') goto yy141;
1336
0
      if (yych >= 'g') goto yy141;
1337
0
    }
1338
0
yy166:
1339
0
    yych = *++YYCURSOR;
1340
0
    if (yych <= '@') {
1341
0
      if (yych <= '/') goto yy141;
1342
0
      if (yych >= ':') goto yy141;
1343
0
    } else {
1344
0
      if (yych <= 'F') goto yy167;
1345
0
      if (yych <= '`') goto yy141;
1346
0
      if (yych >= 'g') goto yy141;
1347
0
    }
1348
0
yy167:
1349
0
    ++YYCURSOR;
1350
0
    {
1351
0
    int utf32, utf16_hi, utf16_lo;
1352
0
    utf16_hi = php_json_ucs2_to_int(s, 4);
1353
0
    utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7);
1354
0
    utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000;
1355
0
    PHP_JSON_SCANNER_COPY_UTF_SP();
1356
0
    *(s->pstr++) = (unsigned char) (0xf0 | (utf32 >> 18));
1357
0
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 12) & 0x3f));
1358
0
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 6) & 0x3f));
1359
0
    *(s->pstr++) = (unsigned char) (0x80 | (utf32 & 0x3f));
1360
0
    s->str_start = s->cursor;
1361
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1362
0
  }
1363
/* *********************************** */
1364
20.1M
yyc_STR_P2_UTF:
1365
20.1M
    yych = *YYCURSOR;
1366
20.1M
    if (yych == '"') goto yy173;
1367
20.1M
    if (yych == '\\') goto yy175;
1368
20.1M
    ++YYCURSOR;
1369
20.1M
    { PHP_JSON_CONDITION_GOTO(STR_P2_UTF); }
1370
3.26k
yy173:
1371
3.26k
    ++YYCURSOR;
1372
3.26k
    YYSETCONDITION(yycJS);
1373
3.26k
    {
1374
3.26k
    PHP_JSON_SCANNER_COPY_ESC();
1375
3.26k
    return PHP_JSON_T_STRING;
1376
20.1M
  }
1377
11.7k
yy175:
1378
11.7k
    yych = *(YYMARKER = ++YYCURSOR);
1379
11.7k
    if (yych == 'u') goto yy177;
1380
2.71k
yy176:
1381
2.71k
    {
1382
2.71k
    unsigned char esc;
1383
2.71k
    PHP_JSON_SCANNER_COPY_ESC();
1384
2.71k
    switch (*s->cursor) {
1385
249
      case 'b':
1386
249
        esc = '\b';
1387
249
        break;
1388
495
      case 'f':
1389
495
        esc = '\f';       break;
1390
360
      case 'n':
1391
360
        esc = '\n';
1392
360
        break;
1393
252
      case 'r':
1394
252
        esc = '\r';
1395
252
        break;
1396
297
      case 't':
1397
297
        esc = '\t';
1398
297
        break;
1399
373
      case '\\':
1400
819
      case '/':
1401
1.05k
      case '"':
1402
1.05k
        esc = *s->cursor;
1403
1.05k
        break;
1404
0
      default:
1405
0
        s->errcode = PHP_JSON_ERROR_SYNTAX;
1406
0
        return PHP_JSON_T_ERROR;
1407
2.71k
    }
1408
2.71k
    *(s->pstr++) = esc;
1409
2.71k
    ++YYCURSOR;
1410
2.71k
    s->str_start = s->cursor;
1411
2.71k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1412
2.71k
  }
1413
9.07k
yy177:
1414
9.07k
    yych = *++YYCURSOR;
1415
9.07k
    if (yych <= 'D') {
1416
7.30k
      if (yych <= '9') {
1417
5.91k
        if (yych <= '/') goto yy178;
1418
5.91k
        if (yych <= '0') goto yy179;
1419
292
        goto yy180;
1420
5.91k
      } else {
1421
1.39k
        if (yych <= '@') goto yy178;
1422
1.39k
        if (yych <= 'C') goto yy180;
1423
1.17k
        goto yy181;
1424
1.39k
      }
1425
7.30k
    } else {
1426
1.76k
      if (yych <= 'c') {
1427
408
        if (yych <= 'F') goto yy180;
1428
200
        if (yych >= 'a') goto yy180;
1429
1.35k
      } else {
1430
1.35k
        if (yych <= 'd') goto yy181;
1431
258
        if (yych <= 'f') goto yy180;
1432
258
      }
1433
1.76k
    }
1434
0
yy178:
1435
0
    YYCURSOR = YYMARKER;
1436
0
    goto yy176;
1437
5.62k
yy179:
1438
5.62k
    yych = *++YYCURSOR;
1439
5.62k
    if (yych <= '9') {
1440
5.19k
      if (yych <= '/') goto yy178;
1441
5.19k
      if (yych <= '0') goto yy182;
1442
1.31k
      if (yych <= '7') goto yy183;
1443
288
      goto yy184;
1444
1.31k
    } else {
1445
428
      if (yych <= 'F') {
1446
206
        if (yych <= '@') goto yy178;
1447
206
        goto yy184;
1448
222
      } else {
1449
222
        if (yych <= '`') goto yy178;
1450
222
        if (yych <= 'f') goto yy184;
1451
0
        goto yy178;
1452
222
      }
1453
428
    }
1454
1.17k
yy180:
1455
1.17k
    yych = *++YYCURSOR;
1456
1.17k
    if (yych <= '@') {
1457
312
      if (yych <= '/') goto yy178;
1458
312
      if (yych <= '9') goto yy184;
1459
0
      goto yy178;
1460
862
    } else {
1461
862
      if (yych <= 'F') goto yy184;
1462
445
      if (yych <= '`') goto yy178;
1463
445
      if (yych <= 'f') goto yy184;
1464
0
      goto yy178;
1465
445
    }
1466
2.27k
yy181:
1467
2.27k
    yych = *++YYCURSOR;
1468
2.27k
    if (yych <= '@') {
1469
1.01k
      if (yych <= '/') goto yy178;
1470
1.01k
      if (yych <= '7') goto yy184;
1471
302
      if (yych <= '9') goto yy185;
1472
0
      goto yy178;
1473
1.26k
    } else {
1474
1.26k
      if (yych <= 'B') goto yy185;
1475
737
      if (yych <= '`') goto yy178;
1476
737
      if (yych <= 'b') goto yy185;
1477
0
      goto yy178;
1478
737
    }
1479
3.88k
yy182:
1480
3.88k
    yych = *++YYCURSOR;
1481
3.88k
    if (yych <= '@') {
1482
3.45k
      if (yych <= '/') goto yy178;
1483
3.45k
      if (yych <= '7') goto yy186;
1484
228
      if (yych <= '9') goto yy187;
1485
0
      goto yy178;
1486
436
    } else {
1487
436
      if (yych <= 'F') goto yy187;
1488
212
      if (yych <= '`') goto yy178;
1489
212
      if (yych <= 'f') goto yy187;
1490
0
      goto yy178;
1491
212
    }
1492
1.02k
yy183:
1493
1.02k
    yych = *++YYCURSOR;
1494
1.02k
    if (yych <= '@') {
1495
461
      if (yych <= '/') goto yy178;
1496
461
      if (yych <= '9') goto yy187;
1497
0
      goto yy178;
1498
561
    } else {
1499
561
      if (yych <= 'F') goto yy187;
1500
269
      if (yych <= '`') goto yy178;
1501
269
      if (yych <= 'f') goto yy187;
1502
0
      goto yy178;
1503
269
    }
1504
2.60k
yy184:
1505
2.60k
    yych = *++YYCURSOR;
1506
2.60k
    if (yych <= '@') {
1507
1.69k
      if (yych <= '/') goto yy178;
1508
1.69k
      if (yych <= '9') goto yy188;
1509
0
      goto yy178;
1510
1.69k
    } else {
1511
901
      if (yych <= 'F') goto yy188;
1512
394
      if (yych <= '`') goto yy178;
1513
394
      if (yych <= 'f') goto yy188;
1514
0
      goto yy178;
1515
394
    }
1516
1.56k
yy185:
1517
1.56k
    yych = *++YYCURSOR;
1518
1.56k
    if (yych <= '@') {
1519
471
      if (yych <= '/') goto yy178;
1520
471
      if (yych <= '9') goto yy189;
1521
0
      goto yy178;
1522
1.09k
    } else {
1523
1.09k
      if (yych <= 'F') goto yy189;
1524
546
      if (yych <= '`') goto yy178;
1525
546
      if (yych <= 'f') goto yy189;
1526
0
      goto yy178;
1527
546
    }
1528
3.22k
yy186:
1529
3.22k
    yych = *++YYCURSOR;
1530
3.22k
    if (yych <= '@') {
1531
2.75k
      if (yych <= '/') goto yy178;
1532
2.75k
      if (yych <= '9') goto yy190;
1533
0
      goto yy178;
1534
2.75k
    } else {
1535
468
      if (yych <= 'F') goto yy190;
1536
208
      if (yych <= '`') goto yy178;
1537
208
      if (yych <= 'f') goto yy190;
1538
0
      goto yy178;
1539
208
    }
1540
1.68k
yy187:
1541
1.68k
    yych = *++YYCURSOR;
1542
1.68k
    if (yych <= '@') {
1543
740
      if (yych <= '/') goto yy178;
1544
740
      if (yych <= '9') goto yy192;
1545
0
      goto yy178;
1546
946
    } else {
1547
946
      if (yych <= 'F') goto yy192;
1548
446
      if (yych <= '`') goto yy178;
1549
446
      if (yych <= 'f') goto yy192;
1550
0
      goto yy178;
1551
446
    }
1552
2.60k
yy188:
1553
2.60k
    yych = *++YYCURSOR;
1554
2.60k
    if (yych <= '@') {
1555
1.44k
      if (yych <= '/') goto yy178;
1556
1.44k
      if (yych <= '9') goto yy194;
1557
0
      goto yy178;
1558
1.44k
    } else {
1559
1.15k
      if (yych <= 'F') goto yy194;
1560
409
      if (yych <= '`') goto yy178;
1561
409
      if (yych <= 'f') goto yy194;
1562
0
      goto yy178;
1563
409
    }
1564
1.56k
yy189:
1565
1.56k
    yych = *++YYCURSOR;
1566
1.56k
    if (yych <= '@') {
1567
329
      if (yych <= '/') goto yy178;
1568
329
      if (yych <= '9') goto yy196;
1569
0
      goto yy178;
1570
1.23k
    } else {
1571
1.23k
      if (yych <= 'F') goto yy196;
1572
334
      if (yych <= '`') goto yy178;
1573
334
      if (yych <= 'f') goto yy196;
1574
0
      goto yy178;
1575
334
    }
1576
3.22k
yy190:
1577
3.22k
    ++YYCURSOR;
1578
3.22k
    {
1579
3.22k
    int utf16 = php_json_ucs2_to_int(s, 2);
1580
3.22k
    PHP_JSON_SCANNER_COPY_UTF();
1581
3.22k
    *(s->pstr++) = (unsigned char) utf16;
1582
3.22k
    s->str_start = s->cursor;
1583
3.22k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1584
3.22k
  }
1585
1.68k
yy192:
1586
1.68k
    ++YYCURSOR;
1587
1.68k
    {
1588
1.68k
    int utf16 = php_json_ucs2_to_int(s, 3);
1589
1.68k
    PHP_JSON_SCANNER_COPY_UTF();
1590
1.68k
    *(s->pstr++) = (unsigned char) (0xc0 | (utf16 >> 6));
1591
1.68k
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1592
1.68k
    s->str_start = s->cursor;
1593
1.68k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1594
1.68k
  }
1595
2.60k
yy194:
1596
2.60k
    ++YYCURSOR;
1597
2.60k
    {
1598
2.60k
    int utf16 = php_json_ucs2_to_int(s, 4);
1599
2.60k
    PHP_JSON_SCANNER_COPY_UTF();
1600
2.60k
    *(s->pstr++) = (unsigned char) (0xe0 | (utf16 >> 12));
1601
2.60k
    *(s->pstr++) = (unsigned char) (0x80 | ((utf16 >> 6) & 0x3f));
1602
2.60k
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1603
2.60k
    s->str_start = s->cursor;
1604
2.60k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1605
2.60k
  }
1606
1.56k
yy196:
1607
1.56k
    yych = *++YYCURSOR;
1608
1.56k
    if (yych != '\\') goto yy178;
1609
1.56k
    yych = *++YYCURSOR;
1610
1.56k
    if (yych != 'u') goto yy178;
1611
1.56k
    yych = *++YYCURSOR;
1612
1.56k
    if (yych == 'D') goto yy199;
1613
384
    if (yych != 'd') goto yy178;
1614
1.56k
yy199:
1615
1.56k
    yych = *++YYCURSOR;
1616
1.56k
    if (yych <= 'B') goto yy178;
1617
1.56k
    if (yych <= 'F') goto yy200;
1618
681
    if (yych <= 'b') goto yy178;
1619
681
    if (yych >= 'g') goto yy178;
1620
1.56k
yy200:
1621
1.56k
    yych = *++YYCURSOR;
1622
1.56k
    if (yych <= '@') {
1623
470
      if (yych <= '/') goto yy178;
1624
470
      if (yych >= ':') goto yy178;
1625
1.09k
    } else {
1626
1.09k
      if (yych <= 'F') goto yy201;
1627
565
      if (yych <= '`') goto yy178;
1628
565
      if (yych >= 'g') goto yy178;
1629
565
    }
1630
1.56k
yy201:
1631
1.56k
    yych = *++YYCURSOR;
1632
1.56k
    if (yych <= '@') {
1633
452
      if (yych <= '/') goto yy178;
1634
452
      if (yych >= ':') goto yy178;
1635
1.11k
    } else {
1636
1.11k
      if (yych <= 'F') goto yy202;
1637
540
      if (yych <= '`') goto yy178;
1638
540
      if (yych >= 'g') goto yy178;
1639
540
    }
1640
1.56k
yy202:
1641
1.56k
    ++YYCURSOR;
1642
1.56k
    {
1643
1.56k
    int utf32, utf16_hi, utf16_lo;
1644
1.56k
    utf16_hi = php_json_ucs2_to_int(s, 4);
1645
1.56k
    utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7);
1646
1.56k
    utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000;
1647
1.56k
    PHP_JSON_SCANNER_COPY_UTF_SP();
1648
1.56k
    *(s->pstr++) = (unsigned char) (0xf0 | (utf32 >> 18));
1649
1.56k
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 12) & 0x3f));
1650
1.56k
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 6) & 0x3f));
1651
1.56k
    *(s->pstr++) = (unsigned char) (0x80 | (utf32 & 0x3f));
1652
1.56k
    s->str_start = s->cursor;
1653
1.56k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1654
1.56k
  }
1655
1.56k
  }
1656
1657
1658
1.56k
}